xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField SalesCRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Entity Reference/Service Order — entity reference
REFERENCE · Last reviewed

Service Order — entity reference

The workshop job document: one record per piece of work taken in against a customer and, usually, an Asset (the machine or vehicle being worked on). It is created directly, or from an Opportunity, a service-estimate Quote or an asset service contract, and its lines are auto-populated from whichever of those sources is set. Its lifecycle is driven by the Status picklist (Draft, Work To Start, Work In Progress, Work Paused, Work Completed, Delivered) plus server actions that spawn downstream documents: inventory fulfilment/allocation/picking for parts, customer invoices and warranty claims, a quote, a VOR purchase order, and time sheets. The move to Work Completed is blocked by the handler until every Part line is fully allocated or cancelled and every Work Item line has had work ended.

Fields

FieldLabelTypeRequiredWhat it does
AccountIdAccountLookup → AccountThe customer being billed. Left empty on create it is filled from the selected Asset's owning account (fill-if-empty — an account already chosen is never overwritten), and it becomes the account on invoices raised from the order.
AccountNameAccount NameText
AdjustedAdvanceAmountAdjusted Advance AmountCurrency
AdvanceAmountAdvance AmountCurrency
AmountPaidAmount PaCurrency
AssetIdAssetLookup → AssetThe machine or vehicle being worked on, and the anchor for most of the module's automation: on create the customer Account (and its name) is copied from the asset's owner when not already set, the asset's Item constrains which items the lines may use, service recommendations are looked up by this asset, and the asset's usage readings and maintenance history are updated when the order is invoiced.
AssetServiceContractIdAsset Service ContractLookup → AssetServiceContract
BillingAddressBilling AddressText
BillingAddressIdBilling AddressLookup → ContactAddress
BillingCityBilling CityPickListValues: Mumbai, Pune, None, Chandigarh.
BillingCityPlaceIdBilling City PlaceLookup → PlaceValues: Pune, Chandigarh, Mumbai.
BillingCountryBilling CountryPickListValues: India.
BillingPostalCodeBilling Postal CodeText
BillingRegionBilling RegionText
BillingStateBillingStatePickList
BillingStreetBilling StreetText
BranchIdBranchLookup → Branch
CancelPendingQuantityCancel Pending QuantityCurrency
CheckInInspectionIdCheck In InspectionLookup → CheckInInspection
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTime
CustomerVoiceCustomer VoiceTextThe customer's own description of the complaint, in their words, captured at check-in and carried over from the originating opportunity. It is free text and is not the same as the structured complaint and fault codes recorded on the lines.
DiscountGroupIdDiscount GroupLookup → DiscountGroup
DocumentDateDocument DateDate
ExternalIdExternalText
FailureDateFailure DateDate
IdIdGuid
InspectionLineIdInspection LineLookup → InspectionLine
IsClaimedIs ClaimedBoolean
IsDeliveredDeliveredBooleanSet true by the Mark Delivered action or by editing the order, and it is the flag that fires the hand-back side effects: the linked Asset is marked pre-delivery-inspection done and the originating inspection line is closed off.
IsILPostedIL PostedBoolean
IsInJobQueueIn Job QueueBoolean
IsInvoiceGeneratedInvoice GeneratedBooleanSet true by the invoice generation action after the invoices, claims and asset updates have been written. It does not mean the whole order is invoiced — partial invoicing is normal — so use the lines' pending invoice quantities to judge what is left to bill.
IsKPICalculatedKPI CalculatedBoolean
IsLinePopulatedLine PopulatedBoolean
IsQuoteGeneratedQuote GeneratedBooleanGuard flag for the Generate Quote action rather than a status: once true, that action refuses to run again for the order.
IsReleasedForFulfillmentReleased For FulfillmentBooleanProtected system flag that the handler refuses to let a client set or change; releasing parts is done through the release-for-fulfilment action, not by writing this field.
IsTimeSheetGeneratedIs Time Sheet GeneratedBoolean
IsWorkEndedWork EndedBoolean
IsWorkPausedIs Work PausedBoolean
IsWorkStartedWork StartedBooleanRaised to true when work begins, either directly or by a time sheet whose lines have all been started. Time sheets only ever raise this flag and never clear it, so it stays true once set even if work is later paused or the sheet is reworked.
ItemIdItemLookup → Item
ItemLotIdItem LotLookup → ItemLot
ItemServiceContractIdService ContractLookup → ItemServiceContractThe service contract (warranty, AMC or similar) the job is being executed under. Setting or changing it pulls the due component lines of the matching asset service contract for the order's Asset in as service order lines, and it is the third and lowest-priority line source behind the estimate quote and the opportunity.
JobQueueIdJob QueueLookup
ModifiedByIdModified ByLookup → UserAccount
NameDocument NumberText
OpenAdvanceAmountOpen Advance AmountCalculated (calculated)Calculated as the advance received less the advance already adjusted against billing — the unapplied balance of the customer's deposit.
OpenAmountOpen AmountCalculated (calculated)Calculated as the total amount less the advance taken, i.e. what would still be collectable if the job were billed in full today. It is not driven by invoices actually raised.
OpportunityIdOpportunityLookup → OpportunityThe service opportunity or booking this job came from. Setting or changing it populates the order's lines from the opportunity lines, but only when no service estimate quote is set on the order; on create the new order's id is also stamped back onto the opportunity.
OrderAmountOrder AmountCurrency
OutstandingAmountOutstanding AmountCalculated (calculated)Calculated as total tax plus the order amount less the amount paid. Note that it is built on OrderAmount rather than on the calculated TotalAmount, so the two headline balances on the document are derived from different bases.
OwnerIdOwnerLookup → UserAccountYes
PackageServiceIdPackage ServiceLookup → Item
PartnerAccountIdPartner AccountLookup → AccountThe owning dealer or partner entity for the document. It is validated against the branch on create and is then locked — the handler rejects any later change — because it scopes stock, pricing and the whole document chain.
PendingFulfilmentAllocationQuantityPending Allocation QuantityCalculated (calculated)
PendingInvoiceQuantityPending Invoice QuantityCalculated (calculated)
PendingPickingQuantityPending Picking QuantityCalculated (calculated)
PerformGenerateQuotePerform Generate QuoteBoolean
PerformInventoryPostingPerform Inventory PostingBoolean
PerformInvoiceGenerationPerform Invoice GenerationBooleanLegacy trigger checkbox from the era when saving the record with the box ticked ran the step.
PerformKPICalculationPerform KPI CalculationBoolean
PerformPopulateChecklistPerform Populate ChecklistBoolean
PerformPopulateLinesPerform Populate LinesBoolean
PerformReleaseForFulfillmentPerform Release For FulfillmentBoolean
PerformWorkEndPerform Work EndBoolean
PerformWorkStartPerform Work StartBoolean
PopulateAssetMaintenancePopulate Asset MaintenanceBooleanUnlike the other Perform/Populate checkboxes this one is live: switching it on an existing order makes the handler pull the due asset-maintenance items for the order's Asset (from opportunities flagged for maintenance) in as new service order lines, skipping any maintenance item already present on the order.
PriceAsOnDatePrice As On DateDateThe date prices should be looked up at. Changing it on an existing order automatically reprices every line against the applicable price list rules, so it is an action disguised as a field.
PriceListIdPrice ListLookup → PriceList
QuoteForItemServiceContractIdQuote For Service ContractLookup → ItemServiceContractSelects which item service contract the Generate Quote action should quote for: only service order lines whose own item service contract matches this value become quote lines, and the action is refused when none match.
QuoteIdQuoteLookup → Quote
RecordTypeIdRecord TypeGuid, hidden
RemarksRemarksText
ResetUsageHoursReset Usage HoursBoolean
ResetUsageReadingReset Usage ReadingBoolean
ResourceIdExecutiveLookup → ResourceA third resource slot distinct from the service advisor and the technician; it is validated as a real resource on save, and it is the one copied onto a time sheet created from this order.
RNAExternalIdRNA ExternalText
RoundOffRound OffCurrency
ServiceAdvisorIdExecutiveLookup → ResourceThe Resource acting as service advisor — the customer-facing owner of the job, not the person doing the work. It is validated as a real resource on save and is carried onto invoices raised from the order as the service resource.
ServiceContractItemIdService Contract ItemLookup → ServiceContractItem
ServiceEstimateQuoteIdService EstimateLookup → QuoteThe service-estimate Quote this job was approved from. Setting it on create, or changing it later, copies that quote's lines onto the order (item, quantity, prices, durations, contract and posting type, discounts) and takes precedence over the opportunity and contract line sources — lines are only copied when the order has none yet.
ServiceTypeService TypePickListText classification of the job — seeded as Paid Repairs, Warranty Repairs, Refurbishment and Campaign Repair. It is a picklist of literal values on the order and not a lookup to the ServiceType entity; it is copied from the originating opportunity or quote when the order is generated from one. Values: Paid Repairs, Free Service, Warranty Service, Dealer Expense.
ShippingAddressShipping AddressText
ShippingAddressIdShipping AddressLookup → ContactAddress
ShippingCityShipping CityPickListValues: Pune, Mumbai, Chandigarh.
ShippingCityPlaceIdShipping CityLookup → PlaceValues: Mumbai, Pune, Chandigarh.
ShippingCountryShipping CountryPickListValues: India.
ShippingPostalCodeShipping Postal CodeText
ShippingRegionShipping RegionText
ShippingStateShipping StatePickListValues: Haryana, Maharashtra, New Delhi, Punjab.
ShippingStreetShipping StreetText
SkipSchemeSkip SchemeBooleanExcludes the whole document from the discount-scheme engine: when set, the engine skips the order rather than evaluating scheme benefits or generating scheme lines for it.
SplitInvoicesSplit InvoicesBoolean
StandardDurationStandard DurationCurrency
StatusStatusPickListThe job's lifecycle stage, seeded as Draft, Work To Start, Work In Progress, Work Paused, Work Completed and Delivered. Only two are enforced in code: new orders default to Draft, and the move to Work Completed is rejected unless every Part line is fully allocated or cancelled and every Work Item line has work ended; the remaining transitions are informational and are not what triggers invoicing or fulfilment. Values: Draft, Work To Start, Work In Progress, Work Paused, Work Completed, Invoiced, Delivered.
SupplierAccountIdSupplier AccountLookup → Account
Tax1Tax1Currency
Tax1NameTaxName1Text
Tax1RateTaxRate1Currency
Tax1TypeTaxType1Text
TaxGroupIdTax GroupLookup → TaxGroup
TaxIdTaxLookup → Tax
TaxSupplyTypeTax Supply TypePickListValues: Within State, Outside State.
TCSEligibleAmountTCS Eligible AmountCurrency
TechnicianIdExecutiveLookup → ResourceThe default technician for the job at header level. Line-level work is attributed to the line's own TechnicianId, and profitability reporting only falls back to this header value for lines that name nobody.
TotalAmountTotal AmountCalculated (calculated)Calculated header total: the line total plus tax, where tax is TotalTax when it is positive and otherwise the derived TotalTaxAmount2. It is the figure OpenAmount is measured against.
TotalDiscountAmountTotal Discount AmountCalculated (calculated)
TotalLabourAmountTotal Labour AmountCalculated (calculated)
TotalLineAmountTotal Line AmountCalculated (calculated)
TotalLineBaseAmountTotal Line Base AmountCalculated (calculated)
TotalLineGrossAmountTotal Line Gross AmountCalculated (calculated)
TotalLineTaxAmountTotal Line Tax AmountCalculated (calculated)Header roll-up of tax from the lines. Its seeded calculated formula is self-referential (it adds Tax1 to its own current value), so treat this figure with suspicion and prefer summing the lines' TaxAmount when accuracy matters.
TotalPackageItemsAmountTotal Package Items AmountCalculated (calculated)
TotalPartAmountTotal Part AmountCurrency
TotalSchemeDiscountAmountTotal Scheme Discount AmountCurrency
TotalTaxTotal Tax AmountCurrency
TotalTaxAmount2Total Tax AmountCalculated (calculated)Calculated fallback tax total — the lines' tax total plus the header-level Tax1 — used by TotalAmount whenever TotalTax is zero or negative.
TransactionTypeTransaction TypePickList
UIPropsUI PropsText
UpdatedDateTimeModified DateDateAndTime
UsageReadingUsage ReadingDecimalThe odometer or counter reading taken from the asset at check-in. It is validated against the asset's existing readings on create and whenever it is changed, and it is written back to the asset when the order is invoiced.
UsageReadingHoursUsage Reading (Hours)Decimal
WorkCompletedByWork Completed ByLookup
WorkStartedAtWork Started AtDateAndTimeTimestamp of when work began on the job at header level. The per-line and per-time-sheet stamps are separate fields, and this header value is not derived from them.

Actions

ActionLabelTypeWhat it does
BulkDeleteDeleteDeleteDelete
CancelAllocationCancel AllocationServerAction (CancelAllocation)CancelAllocation
CancelPickingCancel PickingServerAction (CancelPicking)CancelPicking
CloneCloneServerAction (Clone)Create a copy of this record
CreateTimeSheetCreate Time SheetServerAction (CreateTimeSheet)Creates one ServiceOrderTimeSheet for the order plus a sheet line for every selected service order line whose Item is a Work Item — part lines are dropped even if selected. It copies the order's ResourceId onto the sheet, seeds the work start date from the order or the payload, stamps the sheet id and work status back onto the covered service order lines, and sets IsTimeSheetGenerated on the order.
DeleteDeleteDeleteDelete
DeleteInListDeleteDeleteDelete
DeleteListDeleteDeleteDelete
DeleteRowDeleteDeleteDelete
EditEditEditEdit
EditInLineEditEditEdit
EditInLinepageEditEditInlineEdit
EditRowEditEditInlineEdit
EndWorkEnd WorkServerActionEnd Work
FetchTelematicsDataFetch Telematics DataServerAction (FetchTelematicsData)Fetch Telematics Data
GetSchemeRecommendationsGet Scheme RecommendationsServerAction (GetSchemeRecommendations)Get Scheme Recommendations
GetSchemeRecommendationsGet Scheme RecommendationsServerAction (GetSchemeRecommendations)Get Scheme Recommendations
GetServiceRecommendationGet Service RecommendationServerAction (GetServiceRecommendation)Read-only lookup that returns the recommendations to offer the customer on this job: every open recommendation for the order's Asset — not utilised, not yet accepted or rejected, and not already attached to an order or quote — plus any already attached to this service order. It returns nothing when the order has no Asset.
NewNewNewNew
PauseWorkPause WorkServerActionPause Work
PerformAllocationAllocationServerAction (PerformAllocation)PerformAllocation
PerformGenerateQuotePerform Generate QuoteServerAction (PerformGenerateQuote)Seeded action metadata exists, but the current ServiceOrderHandler does not include this action in its supported server-action set. Invoking it returns an unsupported-action failure; do not document or automate it as a working quote path.
PerformInvoiceGenerationInvoiceServerAction (PerformInvoiceGeneration)Does far more than raise an invoice. For every line with pending invoice quantity it creates customer invoice documents in Draft (split per invoice group and per item service contract, with lines matched to allocation lines where the parts were allocated), then creates warranty claims for the claimable lines, marks any service recommendations consumed by the order as utilised, updates the asset and its maintenance history, and finally sets IsInvoiceGenerated on the order. Lines classified as Packaged Item are excluded, and the action is refused when no line has pending invoice quantity.
PerformMarkDeliveredMark DeliveredServerAction (PerformMarkDelivered)PerformMarkDelivered
PerformPickingPickingServerAction (PerformPicking)PerformPicking
PerformPopulateChecklistPopulate ChecklistServerAction (PerformPopulateChecklist)Fills in the check-in inspection checklist detail for the order from the configured checklist template. It runs with no precondition checks, and because saving checklist lines is what fires the service recommendation rules, this is the step that produces the order's recommendations.
PerformVehicleOffroadVOR POServerAction (PerformVehicleOffroad)Creates one Purchase Order against the order's supplier and branch for parts the workshop does not have, so a stranded job can be ordered out. It considers only lines whose Item is of type Part, that have a quantity and no purchase order line yet, and it skips any part that already shows available stock for the order's branch and partner; each resulting purchase order line is linked back to the service order line it came from.
PostServiceRecommendationPost Service RecommendationServerAction (PostServiceRecommendation)Applies the customer's accept/reject decisions from the payload to the named recommendations, then, for each newly accepted one that is not yet attached to a line, creates a service order line for its Item and links the two. Quantity on the new line is taken from the recommendation's NumericValue (falling back to 1), not from its Quantity field, so a numeric inspection reading becomes the ordered quantity.
ProductCatalogueProduct CatalogueServerAction, inactiveProduct Catalogue
SelectiveAllocationSelective AllocationServerAction (SelectiveAllocation), inactiveSelectiveAllocation
SelectiveCancelAllocationSelective Cancel AllocationServerAction (SelectiveCancelAllocation), inactiveSelectiveCancelAllocation
SelectiveFulfilmentSelective FulfilmentServerAction (SelectiveFulfilment)The same fulfilment raise as the full release, but restricted to the service order lines supplied in the action payload, each with an optional requested quantity that is validated against — and cannot exceed — that line's pending fulfilment quantity. Omitting the quantity falls back to the line's full pending amount.
SelectiveInvoiceSelective InvoiceServerAction (SelectiveInvoice)Runs the same invoice-plus-claim-plus-asset-update chain as the full invoice generation, but only for the service order lines named in the payload; a requested quantity is capped at that line's pending invoice quantity and, when omitted, defaults to the whole pending amount.
SelectivePickingSelective PickingServerAction (SelectivePicking)SelectivePicking
StartWorkStart WorkServerActionStart Work

Validations

ValidationApplies toError messageNotes
Usage Reading blankErrorUsage Reading can not be blankUsage Reading can not be blank
Usage Reading Validation RuleUsageReading, ErrorUsage Reading Cannot be NegativeUsage Reading Cannot be Negative

Lookup filters

FilterLookup fieldNotes
Branch For Partner AccountBranchId
Customer Account FilterAccountId
Executive FilterResourceIdExecutive
Partner Account FilterPartnerAccountId