Sanjel Domain Model - CassiniLaw/KnowledgeBase GitHub Wiki

Enterprise Master Data Domain Model

classDiagram
class Employee
class BonusPosition
Employee "1..*" --> "0..1"BonusPosition
Loading

RigJob Oriented Domain Model

classDiagram
class JobDesign {
<<Program>>
}
class JobDesignPumpingJobSection
class ServicePoint
class JobType
class RigJob
class Rig
class BinInformation {
 BlendChemical
 Quantity
 WorkingServicePoint
}
class Bin
RigJob-->Rig
RigJob..>JobDesignPumpingJobSection
JobDesign "1"*-->"1..*" JobDesignPumpingJobSection
RigJob-->JobType
JobDesignPumpingJobSection-->JobType
RigJob-->ServicePoint
Rig "1" <-- "0..*" BinInformation
BinInformation "1"-->"1" Bin
Loading

Entity Explanation

  • JobDesign: Entity is renamed for concept Program to avoid potential naming conflict with system reserved name
  • JobDesginPumpingJobSection: It contains information as per Job Type. It will provide the information for each Job (RigJob or EstimateJob)

Blend Request Oriented Domain Model

classDiagram
class JobDesign {
<<Program>>
+ProgramId
+ProgramRevision
}
class JobDesignPumpingJobSection
class JobDesignBlendSection
class CallSheetBlendSection
class BlendSection {
+Id
+BlendCategory
+NeedTest
+Yield
+SackWeight
+MixWater
}
class CallSheet{
+Id
}
class BlendChemical {
+IsAirborneHarzard
+NeedFlush
+Yield
}
class RigJob {
+CallSheetNumber
+JobDateTime
+ClientRpresentative
+ServicePoint
+JobType
+Rig
WellLocation
}
class BlendRequest { 
<<ProductHaulLoad>>
+BaseBlendWeight
+TotalBlendWeight
+IsTotalBlendTonnage
+Unit
+ProductHaulLoadLifeStatus
+EstimateLoadTime
+ExpectedOnLocationTime
+BlendShippingStatus
+BlendTestingStatus
+DispatchedBy
+Comments
}
class BinInformation {
+PodIndex
}
class Bin
class BulkPlant {
<<Rig>>
}
class Customer
BlendSection<|--JobDesignBlendSection
BlendSection<|--CallSheetBlendSection
RigJob-->Rig
CallSheet..>JobDesignPumpingJobSection
RigJob<-->CallSheet : equivalence
CallSheet "1"*-->"1..*" CallSheetBlendSection
JobDesign "1"*-->"1..*" JobDesignPumpingJobSection
JobDesignPumpingJobSection "1"*-->"1..*" JobDesignBlendSection
BulkPlant "1" <-- "0..*" BinInformation
BinInformation "*"-->"1" Bin
BlendRequest --> BlendChemical
BlendChemical..>BlendSection : Gerenerated From
CallSheet <.. BlendRequest
BlendRequest --> BulkPlant : Blended By
BlendRequest-->BinInformation : Load To
Customer<--RigJob

Loading

Property ProductHaul, SourceStorage are not in use.

BinInformation Oriented Domain Model

classDiagram
class ServicePoint
class Rig
class BinInformation {
 BlendChemical
 Quantity
 WorkingServicePoint
 PodIndex
 Capacity
 LastProductHaulLoadId
 BlendTestingStatus
 BinStatus
 Quatity
 Volume
}
class Bin{
PodCount
}
class BlendChemical
class ProductHaulLoad {
<<BlendRequest>>
Id
BlendTestingStatus
IsAirborneHazard
}
Rig "1" <-- "0..*" BinInformation: Working In
BinInformation "*"-->"1" Bin: Per Pod
BinInformation --> BlendChemical: Contains
BinInformation-->ServicePoint: Assign To
ProductHaulLoad-->BlendChemical: Load To Bin
BinInformation..>ProductHaulLoad
Loading

BinStatus definition is not 100% right now.

Schedule Oriented Domain Model

classDiagram
class RigJobSanjelCrewSection
class RigJobThirdPartyCrewSection
class SanjelCrewSchedule
class ThirdPartyCrewSchedule
class UnitSchedule
class WorkerSchedule
class RigJob
class SanjelCrew
class ThirdPartyCrew
class RigJobCrewSection
class Employee
class TruckUnit
class ProductHaul
class RotationTemplate
class ShippingLoadSheet
SanjelCrew o-- TruckUnit
SanjelCrew o-- Employee
RigJobCrewSection "0..*" -->"0..1"RigJob
RigJobCrewSection "0..*" -->"0..1"ProductHaul
RigJobSanjelCrewSection" 1"<--"1"SanjelCrewSchedule
RigJobThirdPartyCrewSection "1"<--"1"ThirdPartyCrewSchedule
RigJobSanjelCrewSection "1..*"-->"1"SanjelCrew
RigJobThirdPartyCrewSection "1..*" -->"1"ThirdPartyCrew
RigJobCrewSection<|--RigJobSanjelCrewSection
RigJobCrewSection<|--RigJobThirdPartyCrewSection
UnitSchedule"1..*"-->"1"TruckUnit
WorkerSchedule"1..*"-->"1"Employee
SanjelCrewSchedule *--> UnitSchedule
SanjelCrewSchedule *--> WorkerSchedule
WorkerSchedule-->"0..1"RotationTemplate
ProductHaul "1" *--> ShippingLoadSheet
Loading

Bulker Crew Status Alignment

Crew Working Cycle (Bulker Crew Log)

stateDiagram-V2
state has_next_Load_Requested <<choice>>
state will_be_off_duty <<choice>>
state is_bulker_loaded <<choice>>
OffDuty-->LoadRequested: Product Haul is assigend
LoadRequested-->Called: Crew is good to go, call Driver
Called--> is_bulker_loaded: Is bulker loaded?
	is_bulker_loaded --> Loading: No
	is_bulker_loaded --> Loaded: Yes
state OnDuty {
	Enroute-->OnLocation: Crew is on location
	OnLocation-->OnWayIn: Crew is on way in
	OnWayIn-->Returned: Crew arrives bulk plant
	has_next_Load_Requested-->Loading: Yes
	Returned-->will_be_off_duty: Will crew be off duty?
	has_next_Load_Requested-->Returned: No 
	will_be_off_duty-->has_next_Load_Requested:No, has next product haul scheduled?
	Loading-->Loaded: Bulker is loaded
	Loaded-->Enroute: Crew leaves bulk plant
}
will_be_off_duty-->OffDuty: Yes
OffDuty-->Down: Set crew down
Loading

Product Haul Working Cycle (Shipping status)

stateDiagram-v2
[*]-->Scheduled
Scheduled-->Loaded:BPAVS has Loaded the bulker
Loaded-->InProgress:Crew assignemnt is set Enroute
InProgress-->OnLocation: Set as OnLocation on either RigBoard or DRB
OnLocation-->[*]
Scheduled-->[Deleted]:Canceled
Loaded-->[Deleted]:Canceled
Loading

Crew Assignment Life Cycle

stateDiagram-v2
[*]-->Scheduled
Scheduled-->Loading:Blend is loading to the bulker
Loading-->Loaded: Blend has Loaded in the bulker
Loaded-->EnRoute:Crew assignemnt is set Enroute while depature on DRB
EnRoute-->OnLocation:Set as OnLocation on either RigBoard or DRB
OnLocation-->OnWayIn:Set as OnWayIn on DRB
OnWayIn-->Returned:Set as Returened on DRB while return
Returned-->NextAssignment: If next haul available,  
Returned-->LogoffDuty: Set as OffDuty
Scheduled-->Removed: Assignment is Canceled.
Loading-->Removed: Assignment is Canceled.
Loaded-->Removed: Assignment is Canceled.
Loading

Sales forecast Model

classDiagram
class SalesProject {
	- ClientCompany: ClientCompany
	- District: ServicePoint
	- ServiceLIne: ServiceLine
	- Rig: Rig
	- Area: string
	- StartTime: DateTime 
	- EndTime: DateTime
	- ProgramId: string
	- WellCount: int
	- StringCount: int
	- CmtStringCount: int
	- Frequency: int
	- EstimatedRevenue: double
	- SalesRepresentative: Emplyee
	- Comments: string
	- Status: SalesProjectStatus
	- ApprovalStatus: SalesProjectApporvalStaus
	- SpecialtyProducts: List~SalesSpecialtyProduct~
	- DrillDays: int
}
class SalesProjectStatus {
	- Bid
	- Potential
	- SecondCall
	- Won
	- Lost
}
<<Enum>> SalesProjectStatus
class SalesProjectApporvalStaus {
	- Draft
	- Pending
	- Approved
	- Complete
}
<<Enum>> SalesProjectApporvalStaus
class DrillOrder {
	- CementingOrders: List~JobOrder~
	- Ordinal: int
        - WellCount: int
        - ProgramId: string
}
class JobOrder{
	- JobType: JobType
	- EsitmateRevenue: double
	- Ordinal: int
}
class SalesSpecialtyProduct {
	- Product: Product
}
SalesProject-->SalesProjectApporvalStaus
SalesProject-->SalesProjectStatus
SalesProject *--> DrillOrder
DrillOrder *--> JobOrder
SalesProject *-->SalesSpecialtyProduct
Loading

Model Update History

Model Update History

Entity Definition Explanation

TruckUnit

TruckUnit master data contains all vehichles in Sanjel, they are categorized by main type and sub type. Truck Units are named in certain naming convention which is consistent today.

Category Main Type Main Type Id Sub Type Sub Type Id Naming
Pumper Trailer ROLLING STOCK TRAILER 2 SCM Twin 205 445###
B-train ROLLING STOCK TRAILER 2 B-Train 15 446###L
Bulker Trailer ROLLING STOCK TRAILER 2 Cement Bulk Transpor 101 446###
B-train ROLLING STOCK TRAILER 2 B-Train - Pup 280 446###P
Pumper Tractor ROLLING STOCK TRACTOR 1 Tandem - Tractor 276 745###
Bulker Trailer ROLLING STOCK BODY JOB 5 Cement Bulk Transpor 61 746501
Bulker Tractor ROLLING STOCK TRACTOR 1 Tandem - Tractor 276 746###
Pumper ROLLING STOCK BODY JOB 5 C & A 62 740###
Pumper ROLLING STOCK BODY JOB 5 SCM Single 238 740###
Pickup LIGHT DUTY VEHICLES 4 1/2 Ton | 3/4 Ton | 1 Ton 93 | 94 | 95 20####
Bulker Trailer ROLLING STOCK TRAILER 2 4000 Porta Bulker 27 449###
Pumper ROLLING STOCK BODY JOB 5 Low Rate Pump 71
Pumper ROLLING STOCK TRAILER 2 SCM Twin HHP 288
Pumper FIELD SUPPORT EQUIPMENT 3 Other Support Equipm 291

Entity Status Reference

Call Sheet & Job

    public enum EServiceEntityStatus
    {
        [EnumMember] [Description("Empty")] Empty = 0x0,
        [EnumMember] [Description("Ready")] Ready = 0x1,
        [EnumMember] [Description("In Progress")] InProgress = 0x2,
        [EnumMember] [Description("Transmitted")] Transmitted = 0x3,
        [EnumMember] [Description("Canceled")] Canceled = 0x4,
        [EnumMember] [Description("Locked")] Locked = 0x5,
        [EnumMember] [Description("In Route")] InRoute = 0x6,
        [EnumMember] [Description("Assembled")] Assembled = 0x7,
        [EnumMember] [Description("Received")] Received = 0x8,  
        [EnumMember] [Description("PreTransmitted")] PreTransmitted = 0x9,
        [EnumMember] [Description("Deleted")] Deleted = 0xA,
        [EnumMember] [Description("Pending")] Pending = 0xB,
        [EnumMember] [Description("Confirmed")] Confirmed = 0xC,
        [EnumMember] [Description("Scheduled")] Scheduled = 0xD,
        [EnumMember] [Description("Dispatched")] Dispatched = 0xE,
        [EnumMember] [Description("Completed")] Completed = 0xF,
        [EnumMember] [Description("Alerted")] Alerted = 0x10,
        [EnumMember] [Description("Expired")] Expired = 0x11,
       
        [EnumMember] [Description("Awaiting Approval")] AwaitingApproval = 0x200,
        [EnumMember] [Description("Approving")] Approving = 0x400,
        [EnumMember] [Description("Approved")] Approved = 0x800,

        [EnumMember] [Description("Exception")] Exception = 0x1000,
        [EnumMember] [Description("Succeed")] Succeed = 0x2000,
        [EnumMember] [Description("Failed")] Failed = 0x4000,
    }

RigJob

	public enum JobLifeStatus
	{
		[EnumMember]
		[Description("None")]
		None = 0,
		
		[EnumMember]
		[Description("Alerted")]
		Alerted = 1,
		
		[EnumMember]
		[Description("Pending")]
		Pending = 2,
		
		[EnumMember]
		[Description("Confirmed")]
		Confirmed = 3,
		
		[EnumMember]
		[Description("Scheduled")]
		Scheduled = 4,
		
		[EnumMember]
		[Description("Dispatched")]
		Dispatched = 5,
		
		[EnumMember]
		[Description("Canceled")]
		Canceled = 6,
		
		[EnumMember]
		[Description("InProgress")]
		InProgress = 7,
		
		[EnumMember]
		[Description("Completed")]
		Completed = 8,
		
		[EnumMember]
		[Description("Deleted")]
		Deleted = 9,
		
	}

Product Haul

	public enum ProductHaulStatus
	{
		[EnumMember]
		[Description("Empty")]
		Empty = 0,
		
		[EnumMember]
		[Description("Pending")]
		Pending = 1,
		
		[EnumMember]
		[Description("Scheduled")]
		Scheduled = 2,
		
		[EnumMember]
		[Description("In Progress")]
		InProgress = 3,
		
		[EnumMember]
		[Description("On Location")]
		OnLocation = 4,
		
		[EnumMember]
		[Description("Loading")]
		Loading = 5,
		
		[EnumMember]
		[Description("Loaded")]
		Loaded = 6,
		
		[EnumMember]
		[Description("Returned")]
		Returned = 7,
		
	}

Product Haul Load (Blend Request)

	public enum ProductHaulLoadStatus
	{
		[EnumMember]
		[Description("Empty")]
		Empty = 0,
		
		[EnumMember]
		[Description("Scheduled")]
		Scheduled = 1,
		
		[EnumMember]
		[Description("OnLocation")]
		OnLocation = 2,
		
		[EnumMember]
		[Description("Blending")]
		Blending = 3,
		
		[EnumMember]
		[Description("BlendCompleted")]
		BlendCompleted = 4,
		
		[EnumMember]
		[Description("Loaded")]
		Loaded = 5,
		
		[EnumMember]
		[Description("HaulScheduled")]
		HaulScheduled = 6,
		
		[EnumMember]
		[Description("Stored")]
		Stored = 7,
		
		[EnumMember]
		[Description("JobCanceled")]
		JobCanceled = 8,
		
		[EnumMember]
		[Description("Recycled")]
		Recycled = 9,
		
		[EnumMember]
		[Description("FaultBlend")]
		FaultBlend = 10,
		
		[EnumMember]
		[Description("GoodToUse")]
		GoodToUse = 11,
		
		[EnumMember]
		[Description("Reblended")]
		Reblended = 12,
		
		[EnumMember]
		[Description("Ready")]
		Ready = 13,
		
		[EnumMember]
		[Description("PartialHaulScheduled")]
		PartialHaulScheduled = 14,
		
	}

Shipping Load Sheet

	public enum ShippingStatus
	{
		[EnumMember]
		[Description("Empty")]
		Empty = 0,
		
		[EnumMember]
		[Description("Scheduled")]
		Scheduled = 1,
		
		[EnumMember]
		[Description("Loaded")]
		Loaded = 2,
		
		[EnumMember]
		[Description("OnLocation")]
		OnLocation = 3,
		
	}

RigJobCrewSection (Job Assignment)

	public enum RigJobCrewSectionStatus
	{
		[EnumMember]
		[Description("Assigned")]
		Assigned = 1,
		
		[EnumMember]
		[Description("Scheduled")]
		Scheduled = 2,
		
		[EnumMember]
		[Description("Removed")]
		Removed = 3,
		
		[EnumMember]
		[Description("Called")]
		Called = 4,
		
		[EnumMember]
		[Description("Log On Duty")]
		LogOnDuty = 5,
		
		[EnumMember]
		[Description("Log Off Duty")]
		LogOffDuty = 6,
		
		[EnumMember]
		[Description("Loading")]
		Loading = 7,
		
		[EnumMember]
		[Description("Loaded")]
		Loaded = 8,
		
		[EnumMember]
		[Description("En Route")]
		EnRoute = 9,
		
		[EnumMember]
		[Description("On Location")]
		OnLocation = 10,
		
		[EnumMember]
		[Description("On Way In")]
		OnWayIn = 11,
		
		[EnumMember]
		[Description("Returned")]
		Returned = 12,
		
	}

BulkerCrewLog

	public enum BulkerCrewStatus
	{
		[EnumMember]
		[Description("None")]
		None = 0,
		
		[EnumMember]
		[Description("Off Duty")]
		OffDuty = 1,
		
		[EnumMember]
		[Description("En Route")]
		EnRoute = 2,
		
		[EnumMember]
		[Description("Called")]
		Called = 3,
		
		[EnumMember]
		[Description("On Way In")]
		OnWayIn = 4,
		
		[EnumMember]
		[Description("GTG")]
		GoodToGo = 5,
		
		[EnumMember]
		[Description("Load Requested")]
		LoadRequested = 6,
		
		[EnumMember]
		[Description("Down")]
		Down = 7,
		
		[EnumMember]
		[Description("On Location")]
		OnLocation = 8,
		
		[EnumMember]
		[Description("Returned")]
		Returned = 9,
		
		[EnumMember]
		[Description("Loaded")]
		Loaded = 10,
		
		[EnumMember]
		[Description("Loading")]
		Loading = 11,
		
	}

BlendShippingStatus (Blend Request needs it)

	public enum BlendShippingStatus
	{
		[EnumMember]
		[Description("Empty")]
		Empty = 0,
		
		[EnumMember]
		[Description("HaulScheduled")]
		HaulScheduled = 1,
		
		[EnumMember]
		[Description("ParitialHaulScheduled")]
		ParitialHaulScheduled = 2,
		
		[EnumMember]
		[Description("OnLocation")]
		OnLocation = 3,
		
	}
⚠️ **GitHub.com Fallback** ⚠️