Skip to main content

Schema Reference

This reference is the table map for the dataset: which tables belong together, how the main relationships work, which keys matter most, and where the bridges between groups live.

If you need the big-picture business story first, start with Dataset Guide and Process Flows.

SQLite Physical Schema

  • The generated SQLite file now includes a physical primary key on each table's main surrogate ID column.
  • The SQLite file also includes a curated index set for high-value joins and stable business identifiers, but it does not index every relationship column in the model.
  • Some business identifiers remain intentionally non-unique in anomaly scenarios, so fields such as supplier invoice numbers or payment references are not universally enforced as unique in SQLite.

How the Reference Is Organized

  • Start with Table Groups to see how the model is divided.
  • Use How to Read the ER Diagrams before you treat any one group diagram as a complete process story.
  • Use Cross-Group Bridge Keys when you need to move from one table family to another.
  • Use each group section when you need the main tables, the highest-value fields, and the local join paths.

Table Groups

GroupWhat belongs hereCount
Accounting coreAccounts, journals, and posted ledger detail3
Fixed assets and financingAsset register, lifecycle events, and note schedules4
Order-to-cashCustomers, commercial pricing, goods orders, service engagements, shipments, invoices, cash, returns, credits, and refunds22
Procure-to-payRequisitions, purchase orders, receipts, supplier invoices, and disbursements9
ManufacturingBOMs, routings, work centers, work orders, issues, completions, and close14
Payroll and timeShifts, rosters, absences, overtime approvals, punches, approved daily time, payroll, and remittances14
Master dataItem, warehouse, and employee records3
Organizational planningCost centers, budget summary, and budget detail3
Demand planning and MRPForecasting, inventory policy, recommendations, MRP, and rough-cut capacity5
Total77

How to Read the ER Diagrams

  • Each diagram shows the main local relationships inside one table group, not every possible key in the database.
  • These ERs are schema-direct diagrams. An edge appears only when a stored key supports it, or when a polymorphic source-document trace is called out explicitly in prose.
  • The diagrams are intentionally simplified. The compact tables below each diagram carry the highest-value fields students usually need first.
  • Cross-group bridges such as ItemID, SupplyPlanRecommendationID, and AccrualJournalEntryID are summarized separately so the group diagrams stay readable.
  • The process pages explain business flow. This reference explains table structure and join logic.

Cross-Group Bridge Keys

These are the main keys students use to move across groups.

Bridge keyMain bridgeHow it connects
ItemIDMaster data into O2C, P2P, manufacturing, and planningProduct-level analysis across the whole dataset
FixedAssetIDFixed assets into lifecycle events and note agreementsConnects the asset register to acquisitions, depreciation, financing, and disposal activity
DebtAgreementIDFixed-asset financing into monthly payment schedulesConnects note origination to principal and interest cash behavior
SupplyPlanRecommendationIDDemand planning into requisitions, work orders, MRP, and rough-cut capacityConnects planning pressure to later purchasing or manufacturing execution
WorkOrderIDManufacturing into issues, completions, close, and labor supportMain manufacturing execution anchor
WorkOrderOperationIDManufacturing into operation schedules and labor traceabilityConnects scheduling and labor detail to one operation
ServiceEngagementIDO2C service delivery into staffing, approved time, and billingMain design-services execution anchor
TimeClockEntryIDPayroll and time into labor, attendance exceptions, and payroll supportApproved time bridge
PayrollRegisterIDPayroll header into line detail and paymentMain payroll posting anchor
AccrualJournalEntryIDAccounting core into accrued-service AP settlementBridges finance estimates to later AP activity
AccountIDAccounting core into budgets and reportingChart-of-accounts bridge
SourceDocumentType, SourceDocumentID, SourceLineIDOperational groups into GLEntryMain path back from posted accounting to source activity

Accounting Core

This group provides the posting anchor for every process. JournalEntry is the finance-controlled header, GLEntry is the posted detail, and Account gives the reporting and control-account meaning.

TableUse it forHighest-value keys or fields
AccountChart of accounts and hierarchyAccountID, AccountNumber, AccountType, AccountSubType, ParentAccountID
JournalEntryFinance-controlled journal header lookupJournalEntryID, EntryNumber, PostingDate, EntryType, ApprovedByEmployeeID, ReversesJournalEntryID
GLEntryPosted ledger detail and traceabilityGLEntryID, PostingDate, AccountID, VoucherType, VoucherNumber, SourceDocumentType, SourceDocumentID, SourceLineID, FiscalYear, FiscalPeriod

Join and Traceability Cues

  • GLEntry.AccountID -> Account.AccountID
  • When GLEntry.SourceDocumentType = 'JournalEntry', GLEntry.SourceDocumentID -> JournalEntry.JournalEntryID
  • For journal-origin rows, GLEntry.VoucherNumber typically matches JournalEntry.EntryNumber
  • GLEntry.SourceDocumentType, SourceDocumentID, and SourceLineID are the main operational trace fields

Fixed Assets and Financing

This group holds the fixed-asset subledger: the asset register itself, the lifecycle events that tie CAPEX back to purchasing and disposal, and the note-payable schedules used for financed equipment.

TableUse it forHighest-value keys or fields
FixedAssetAsset register and depreciation-routing setupFixedAssetID, AssetCode, BehaviorGroup, AssetAccountID, AccumulatedDepreciationAccountID, DepreciationDebitAccountID, CostCenterID, WarehouseID, WorkCenterID, InServiceDate, DisposalDate
FixedAssetEventLifecycle events tied back to purchasing, financing, and disposalFixedAssetEventID, FixedAssetID, EventType, EventDate, PurchaseInvoiceID, PurchaseInvoiceLineID, DisbursementID, DebtAgreementID, JournalEntryID, FinancingType, ProceedsAmount
DebtAgreementNote-payable agreement created for financed CAPEXDebtAgreementID, AgreementNumber, FixedAssetID, OriginationDate, PrincipalAmount, AnnualInterestRate, TermMonths, PaymentStartDate, ScheduledPaymentAmount
DebtScheduleLineMonthly principal and interest schedule detailDebtScheduleLineID, DebtAgreementID, PaymentSequence, PaymentDate, PrincipalAmount, InterestAmount, PaymentAmount, EndingPrincipal, JournalEntryID, Status

Join and Traceability Cues

  • FixedAssetEvent.FixedAssetID -> FixedAsset.FixedAssetID
  • DebtAgreement.FixedAssetID -> FixedAsset.FixedAssetID
  • DebtScheduleLine.DebtAgreementID -> DebtAgreement.DebtAgreementID
  • FixedAssetEvent.PurchaseInvoiceID -> PurchaseInvoice.PurchaseInvoiceID
  • FixedAssetEvent.DisbursementID -> DisbursementPayment.DisbursementID
  • FixedAssetEvent.JournalEntryID -> JournalEntry.JournalEntryID

Order-to-Cash

This group holds the full customer-side relationship map: pricing setup, goods and service order capture, service delivery, physical fulfillment, billing, cash settlement, and the return-credit-refund branch.

TableUse it forHighest-value keys or fields
CustomerCustomer master and segmentationCustomerID, CustomerName, CustomerSegment, Region, SalesRepEmployeeID
PriceListPricing scope headerPriceListID, ScopeType, CustomerID, CustomerSegment, EffectiveStartDate, EffectiveEndDate
PriceListLineItem-level pricing rulePriceListLineID, PriceListID, ItemID, UnitPrice, MinimumUnitPrice
PromotionProgramPromotion definitionPromotionID, PromotionCode, ScopeType, DiscountPct, EffectiveStartDate, EffectiveEndDate
PriceOverrideApprovalManual below-floor approvalPriceOverrideApprovalID, SalesOrderLineID, RequestedByEmployeeID, ApprovedByEmployeeID, ApprovedUnitPrice, Status
SalesOrderOrder headerSalesOrderID, OrderNumber, CustomerID, OrderDate, RequestedDeliveryDate, FreightTerms, Status
SalesOrderLineOrdered line with pricing lineageSalesOrderLineID, SalesOrderID, ItemID, PriceListLineID, PromotionID, PriceOverrideApprovalID, PricingMethod
ServiceEngagementCustomer service engagement tied to one service order lineServiceEngagementID, EngagementNumber, CustomerID, SalesOrderLineID, LeadEmployeeID, StartDate, EndDate, PlannedHours, HourlyRate, Status
ServiceEngagementAssignmentOne employee staffing row on one engagementServiceEngagementAssignmentID, ServiceEngagementID, EmployeeID, AssignedRole, AssignedHours, Status
ServiceTimeEntryApproved service hours and analytical labor costServiceTimeEntryID, ServiceEngagementID, ServiceEngagementAssignmentID, EmployeeID, WorkDate, BillableHours, NonBillableHours, CostRateUsed, ExtendedCost, BillingStatus
ShipmentShipment headerShipmentID, SalesOrderID, ShipmentDate, WarehouseID, FreightCost, BillableFreightAmount, Status
ShipmentLineShipped lineShipmentLineID, ShipmentID, SalesOrderLineID, ItemID, QuantityShipped
SalesInvoiceInvoice headerSalesInvoiceID, InvoiceNumber, CustomerID, InvoiceDate, DueDate, FreightAmount, Status
SalesInvoiceLineBilled lineSalesInvoiceLineID, SalesInvoiceID, SalesOrderLineID, ShipmentLineID, ItemID, PricingMethod
ServiceBillingLineMonthly billed-hours rollup tied to one invoice lineServiceBillingLineID, ServiceEngagementID, SalesInvoiceLineID, BillingPeriodStartDate, BillingPeriodEndDate, BilledHours, HourlyRate, LineAmount, Status
SalesCommissionRateCommission-rate matrix by revenue type and customer segmentSalesCommissionRateID, RevenueType, CustomerSegment, RatePct, EffectiveStartDate, EffectiveEndDate, Status
SalesCommissionAccrualInvoice-line commission accrualSalesCommissionAccrualID, SalesInvoiceLineID, SalesRepEmployeeID, CommissionBaseAmount, CommissionRatePct, CommissionAmount
SalesCommissionAdjustmentCredit-memo clawback against an original commission accrualSalesCommissionAdjustmentID, SalesCommissionAccrualID, CreditMemoLineID, CommissionBaseReductionAmount, CommissionAdjustmentAmount
SalesCommissionPaymentMonthly net commission payment by sales repSalesCommissionPaymentID, PaymentNumber, PaymentDate, SalesRepEmployeeID, NetPaymentAmount
SalesCommissionPaymentLineSettlement detail connecting payments to accruals and clawbacksSalesCommissionPaymentLineID, SalesCommissionPaymentID, SourceDocumentType, SourceDocumentID, Amount
CashReceiptCustomer cash eventCashReceiptID, ReceiptNumber, CustomerID, ReceiptDate, Amount
CashReceiptApplicationInvoice settlement detailCashReceiptApplicationID, CashReceiptID, SalesInvoiceID, ApplicationDate, AppliedAmount
SalesReturnReturn headerSalesReturnID, ReturnNumber, CustomerID, ReturnDate, Status
SalesReturnLineReturned lineSalesReturnLineID, SalesReturnID, ShipmentLineID, ItemID, QuantityReturned
CreditMemoCredit headerCreditMemoID, CreditMemoNumber, SalesReturnID, OriginalSalesInvoiceID, CreditMemoDate, FreightCreditAmount, Status
CreditMemoLineCredit detail with inherited pricing lineageCreditMemoLineID, CreditMemoID, SalesReturnLineID, ItemID, PricingMethod, PriceListLineID
CustomerRefundRefund against customer creditCustomerRefundID, CreditMemoID, CustomerID, RefundDate, Amount

Join and Traceability Cues

  • PriceListLine.PriceListID -> PriceList.PriceListID
  • SalesOrderLine.PriceListLineID -> PriceListLine.PriceListLineID
  • SalesOrderLine.PromotionID -> PromotionProgram.PromotionID
  • SalesOrderLine.PriceOverrideApprovalID -> PriceOverrideApproval.PriceOverrideApprovalID
  • PriceOverrideApproval.SalesOrderLineID -> SalesOrderLine.SalesOrderLineID
  • ServiceEngagement.SalesOrderLineID -> SalesOrderLine.SalesOrderLineID
  • ServiceEngagementAssignment.ServiceEngagementID -> ServiceEngagement.ServiceEngagementID
  • ServiceTimeEntry.ServiceEngagementAssignmentID -> ServiceEngagementAssignment.ServiceEngagementAssignmentID
  • ShipmentLine.SalesOrderLineID -> SalesOrderLine.SalesOrderLineID
  • SalesInvoiceLine.ShipmentLineID -> ShipmentLine.ShipmentLineID
  • ServiceBillingLine.SalesInvoiceLineID -> SalesInvoiceLine.SalesInvoiceLineID
  • SalesCommissionAccrual.SalesInvoiceLineID -> SalesInvoiceLine.SalesInvoiceLineID
  • SalesCommissionAccrual.SalesCommissionRateID -> SalesCommissionRate.SalesCommissionRateID
  • SalesCommissionAdjustment.SalesCommissionAccrualID -> SalesCommissionAccrual.SalesCommissionAccrualID
  • SalesCommissionAdjustment.CreditMemoLineID -> CreditMemoLine.CreditMemoLineID
  • SalesCommissionPaymentLine.SalesCommissionPaymentID -> SalesCommissionPayment.SalesCommissionPaymentID
  • CashReceiptApplication.SalesInvoiceID -> SalesInvoice.SalesInvoiceID
  • SalesReturnLine.ShipmentLineID -> ShipmentLine.ShipmentLineID
  • CreditMemo.OriginalSalesInvoiceID -> SalesInvoice.SalesInvoiceID
  • CustomerRefund.CreditMemoID -> CreditMemo.CreditMemoID

Procure-to-Pay

This group holds the supplier-side relationship map: requisition, PO, receipt, invoice, and payment. The main cross-group bridge here is the accrued-service path through AccrualJournalEntryID.

TableUse it forHighest-value keys or fields
SupplierSupplier master and payment contextSupplierID, SupplierName, PaymentTerms, SupplierCategory, SupplierRiskRating
PurchaseRequisitionInternal purchase demandRequisitionID, RequisitionNumber, RequestDate, ItemID, CostCenterID, SupplyPlanRecommendationID, Status
PurchaseOrderPO headerPurchaseOrderID, PONumber, SupplierID, OrderDate, ExpectedDeliveryDate, Status
PurchaseOrderLineOrdered linePOLineID, PurchaseOrderID, RequisitionID, ItemID, Quantity, UnitCost
GoodsReceiptReceipt headerGoodsReceiptID, ReceiptNumber, PurchaseOrderID, ReceiptDate, WarehouseID
GoodsReceiptLineReceived lineGoodsReceiptLineID, GoodsReceiptID, POLineID, ItemID, QuantityReceived, ExtendedStandardCost
PurchaseInvoiceSupplier invoice headerPurchaseInvoiceID, InvoiceNumber, SupplierID, PurchaseOrderID, InvoiceDate, Status
PurchaseInvoiceLineSupplier invoice linePILineID, PurchaseInvoiceID, POLineID, GoodsReceiptLineID, AccrualJournalEntryID, ItemID
DisbursementPaymentSupplier paymentDisbursementID, PurchaseInvoiceID, SupplierID, PaymentDate, Amount

Join and Traceability Cues

  • PurchaseOrderLine.RequisitionID -> PurchaseRequisition.RequisitionID
  • GoodsReceipt.PurchaseOrderID -> PurchaseOrder.PurchaseOrderID
  • GoodsReceiptLine.POLineID -> PurchaseOrderLine.POLineID
  • PurchaseInvoiceLine.GoodsReceiptLineID -> GoodsReceiptLine.GoodsReceiptLineID
  • PurchaseInvoiceLine.AccrualJournalEntryID -> JournalEntry.JournalEntryID
  • DisbursementPayment.PurchaseInvoiceID -> PurchaseInvoice.PurchaseInvoiceID

Manufacturing

This group covers the local manufacturing structure: recipe, routing, work center, work order, issue, completion, and close. Planning and payroll bridges are summarized separately above.

TableUse it forHighest-value keys or fields
BillOfMaterialBOM headerBOMID, ParentItemID, VersionNumber, Status, StandardBatchQuantity
BillOfMaterialLineBOM component detailBOMLineID, BOMID, ComponentItemID, QuantityPerUnit, ScrapFactorPct
WorkCenterWork-center masterWorkCenterID, WorkCenterCode, Department, WarehouseID, NominalDailyCapacityHours
WorkCenterCalendarDaily available-hours calendarWorkCenterCalendarID, WorkCenterID, CalendarDate, IsWorkingDay, AvailableHours
RoutingRouting headerRoutingID, ParentItemID, VersionNumber, Status
RoutingOperationOrdered routing stepRoutingOperationID, RoutingID, OperationSequence, OperationCode, WorkCenterID
WorkOrderWork-order headerWorkOrderID, WorkOrderNumber, ItemID, BOMID, RoutingID, SupplyPlanRecommendationID, Status
WorkOrderOperationOperation-level work-order activityWorkOrderOperationID, WorkOrderID, RoutingOperationID, OperationSequence, WorkCenterID, Status
WorkOrderOperationScheduleDaily scheduled hoursWorkOrderOperationScheduleID, WorkOrderOperationID, WorkCenterID, ScheduleDate, ScheduledHours
MaterialIssueMaterial issue headerMaterialIssueID, WorkOrderID, IssueDate, WarehouseID
MaterialIssueLineMaterial issue lineMaterialIssueLineID, MaterialIssueID, BOMLineID, ItemID, QuantityIssued
ProductionCompletionCompletion headerProductionCompletionID, WorkOrderID, CompletionDate, WarehouseID
ProductionCompletionLineCompletion cost detailProductionCompletionLineID, ProductionCompletionID, ItemID, QuantityCompleted, ExtendedStandardTotalCost
WorkOrderCloseWork-order close and variance recordWorkOrderCloseID, WorkOrderID, CloseDate, TotalVarianceAmount, Status

Join and Traceability Cues

  • WorkOrder.BOMID -> BillOfMaterial.BOMID
  • WorkOrder.RoutingID -> Routing.RoutingID
  • WorkOrderOperation.RoutingOperationID -> RoutingOperation.RoutingOperationID
  • WorkOrderOperationSchedule.WorkOrderOperationID -> WorkOrderOperation.WorkOrderOperationID
  • MaterialIssue.WorkOrderID -> WorkOrder.WorkOrderID
  • MaterialIssueLine.BOMLineID -> BillOfMaterialLine.BOMLineID
  • ProductionCompletion.WorkOrderID -> WorkOrder.WorkOrderID
  • WorkOrderClose.WorkOrderID -> WorkOrder.WorkOrderID

Payroll and Time

This group holds the workforce-side relationship map: shifts, rosters, raw punches, approved time, labor detail, payroll registers, payments, and remittances.

TableUse it forHighest-value keys or fields
ShiftDefinitionShift templateShiftDefinitionID, ShiftCode, Department, WorkCenterID, StartTime, EndTime
EmployeeShiftAssignmentEmployee-to-shift assignmentEmployeeShiftAssignmentID, EmployeeID, ShiftDefinitionID, WorkCenterID, IsPrimary
EmployeeShiftRosterDaily planned roster rowEmployeeShiftRosterID, EmployeeID, RosterDate, ShiftDefinitionID, WorkCenterID, ScheduledHours
EmployeeAbsenceAbsence supportEmployeeAbsenceID, EmployeeShiftRosterID, AbsenceDate, AbsenceType, HoursAbsent
OvertimeApprovalApproved overtime supportOvertimeApprovalID, EmployeeShiftRosterID, WorkDate, ApprovedHours, ReasonCode
TimeClockEntryApproved daily timeTimeClockEntryID, EmployeeID, PayrollPeriodID, EmployeeShiftRosterID, RegularHours, OvertimeHours, ClockStatus
TimeClockPunchRaw punch eventsTimeClockPunchID, EmployeeShiftRosterID, TimeClockEntryID, PunchTimestamp, PunchType
AttendanceExceptionAttendance-control exceptionAttendanceExceptionID, EmployeeShiftRosterID, TimeClockEntryID, ExceptionType, Severity, Status
PayrollPeriodPayroll calendarPayrollPeriodID, PeriodNumber, PeriodStartDate, PeriodEndDate, PayDate, FiscalPeriod
LaborTimeEntryLabor detail used for costing and payroll supportLaborTimeEntryID, PayrollPeriodID, TimeClockEntryID, WorkOrderID, WorkOrderOperationID, LaborType
PayrollRegisterPayroll headerPayrollRegisterID, PayrollPeriodID, EmployeeID, CostCenterID, GrossPay, NetPay, Status
PayrollRegisterLinePayroll line detailPayrollRegisterLineID, PayrollRegisterID, LineType, Hours, Rate, LaborTimeEntryID
PayrollPaymentNet-pay settlementPayrollPaymentID, PayrollRegisterID, PaymentDate, PaymentMethod, ReferenceNumber
PayrollLiabilityRemittanceLiability clearancePayrollLiabilityRemittanceID, PayrollPeriodID, LiabilityType, RemittanceDate, Amount

Join and Traceability Cues

  • EmployeeShiftAssignment.ShiftDefinitionID -> ShiftDefinition.ShiftDefinitionID
  • EmployeeShiftRoster.ShiftDefinitionID -> ShiftDefinition.ShiftDefinitionID
  • EmployeeAbsence.EmployeeShiftRosterID -> EmployeeShiftRoster.EmployeeShiftRosterID
  • OvertimeApproval.EmployeeShiftRosterID -> EmployeeShiftRoster.EmployeeShiftRosterID
  • TimeClockEntry.EmployeeShiftRosterID -> EmployeeShiftRoster.EmployeeShiftRosterID
  • TimeClockEntry.OvertimeApprovalID -> OvertimeApproval.OvertimeApprovalID
  • TimeClockPunch.TimeClockEntryID -> TimeClockEntry.TimeClockEntryID
  • AttendanceException.TimeClockEntryID -> TimeClockEntry.TimeClockEntryID
  • LaborTimeEntry.TimeClockEntryID -> TimeClockEntry.TimeClockEntryID
  • PayrollRegister.PayrollPeriodID -> PayrollPeriod.PayrollPeriodID
  • PayrollRegisterLine.LaborTimeEntryID -> LaborTimeEntry.LaborTimeEntryID
  • PayrollPayment.PayrollRegisterID -> PayrollRegister.PayrollRegisterID
  • PayrollLiabilityRemittance.PayrollPeriodID -> PayrollPeriod.PayrollPeriodID

Master Data

This group holds the anchor entities reused across the rest of the model. These tables are intentionally simple, but they matter because most other groups attach to them.

TableUse it forHighest-value keys or fields
ItemProduct master and account mappingItemID, ItemCode, ItemGroup, CollectionName, LifecycleStatus, SupplyMode, InventoryAccountID, RevenueAccountID, COGSAccountID
WarehouseWarehouse masterWarehouseID, WarehouseName, ManagerID
EmployeeEmployee master and approvalsEmployeeID, EmployeeNumber, JobTitle, JobFamily, AuthorizationLevel, PayClass, OvertimeEligible

Join and Traceability Cues

  • ItemID is the main product bridge across O2C, P2P, manufacturing, and planning
  • WarehouseID connects fulfillment, receipt, manufacturing, and planning location context
  • EmployeeID appears across approvals, rosters, payroll, journals, and organizational reporting

Organizational Planning

This group is small, but it gives the model its reporting structure. CostCenter organizes responsibility, BudgetLine stores the driver-based monthly planning detail, and Budget preserves the student-facing cost-center summary generated from that detail.

TableUse it forHighest-value keys or fields
CostCenterOrganizational reporting structureCostCenterID, CostCenterName, ParentCostCenterID, ManagerID, IsActive
BudgetStudent-facing monthly budget summary by cost center and accountBudgetID, FiscalYear, Month, CostCenterID, AccountID, BudgetAmount
BudgetLineDriver-based monthly budget detail for planning, bridges, and pro forma statementsBudgetLineID, FiscalYear, Month, AccountID, CostCenterID, ItemID, WarehouseID, Quantity, UnitAmount, BudgetAmount, BudgetCategory, DriverType

Join and Traceability Cues

  • Budget.CostCenterID -> CostCenter.CostCenterID
  • Budget.AccountID -> Account.AccountID
  • BudgetLine.CostCenterID -> CostCenter.CostCenterID
  • BudgetLine.AccountID -> Account.AccountID
  • BudgetLine.ItemID -> Item.ItemID
  • BudgetLine.WarehouseID -> Warehouse.WarehouseID

Demand Planning and MRP

This group covers the planning layer that sits ahead of later purchasing and manufacturing execution. It explains why replenishment pressure existed before a requisition or work order appeared.

TableUse it forHighest-value keys or fields
DemandForecastWeekly demand-planning inputDemandForecastID, ForecastWeekStartDate, ItemID, WarehouseID, ForecastQuantity, ForecastMethod, IsCurrent
InventoryPolicyActive replenishment policyInventoryPolicyID, ItemID, WarehouseID, PolicyType, SafetyStockQuantity, ReorderPointQuantity, TargetDaysSupply, IsActive
SupplyPlanRecommendationWeekly replenishment recommendationSupplyPlanRecommendationID, RecommendationDate, BucketWeekStartDate, ItemID, WarehouseID, RecommendationType, SupplyMode, RecommendationStatus, ConvertedDocumentType, ConvertedDocumentID
MaterialRequirementPlanComponent-demand explosionMaterialRequirementPlanID, BucketWeekStartDate, ParentItemID, ComponentItemID, SupplyPlanRecommendationID, NetRequirementQuantity
RoughCutCapacityPlanWeekly load-versus-capacity tieoutRoughCutCapacityPlanID, BucketWeekStartDate, WorkCenterID, SupplyPlanRecommendationID, PlannedLoadHours, AvailableHours, UtilizationPct, CapacityStatus

Join and Traceability Cues

  • DemandForecast and InventoryPolicy inform recommendations through shared ItemID, WarehouseID, planning buckets, and recommendation DriverType; there is no direct stored forecast or policy ID on SupplyPlanRecommendation
  • PurchaseRequisition.SupplyPlanRecommendationID -> SupplyPlanRecommendation.SupplyPlanRecommendationID
  • WorkOrder.SupplyPlanRecommendationID -> SupplyPlanRecommendation.SupplyPlanRecommendationID
  • MaterialRequirementPlan.SupplyPlanRecommendationID -> SupplyPlanRecommendation.SupplyPlanRecommendationID
  • RoughCutCapacityPlan.SupplyPlanRecommendationID -> SupplyPlanRecommendation.SupplyPlanRecommendationID

Important Schema Notes

  • CashReceipt.SalesInvoiceID is compatibility metadata only. The authoritative O2C settlement link is CashReceiptApplication.
  • Service invoice lines stay in SalesInvoiceLine, but ShipmentLineID remains null on those rows and ServiceBillingLine becomes the authoritative hours-to-invoice bridge.
  • O2C freight remains header-level. SalesOrder.FreightTerms sets the policy, Shipment.FreightCost and Shipment.BillableFreightAmount capture the fulfillment result, SalesInvoice.FreightAmount carries billed freight, and CreditMemo.FreightCreditAmount shows any freight credit.
  • Price-list and promotion lineage live directly on SalesOrderLine, SalesInvoiceLine, and CreditMemoLine. Postings remain net revenue.
  • Sales commissions are a separate O2C payable routine. SalesCommissionAccrual.CommissionBaseAmount comes from SalesInvoiceLine.LineTotal; commission payments settle 2034 Sales Commission Payable separately from payroll.
  • PurchaseOrder.RequisitionID is compatibility metadata when one PO batches multiple requisitions. Use PurchaseOrderLine.RequisitionID as the authoritative trace.
  • PurchaseInvoiceLine.GoodsReceiptLineID is the main match key for receipt-based inventory invoicing.
  • PurchaseInvoiceLine.AccrualJournalEntryID links direct service invoices back to accrual journals.
  • FixedAsset.BehaviorGroup controls whether depreciation feeds manufacturing cost or operating expense.
  • FixedAssetEvent preserves the bridge from capital purchases and disposals back to the source purchasing and journal documents.
  • GoodsReceiptLine.ExtendedStandardCost stores the receipt posting basis used for inventory and GRNI.
  • EmployeeShiftRoster, EmployeeAbsence, TimeClockPunch, and OvertimeApproval sit beneath the approved TimeClockEntry layer.
  • Design-service labor margin is analytical. ServiceTimeEntry.ExtendedCost supports customer-engagement analysis, but payroll expense stays in payroll and does not become manufacturing inventory cost.
  • Manufacturing uses single-level BOMs plus one active routing per manufactured item.
  • Manufacturing remains standard-cost based even though payroll and time provide operational labor detail.

Next Steps