xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField Sales & SFACRMRewardsClaimsInventoryProcurementWarehouse 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
Auto DMSConsumer Goods DMSSales Force Automation (SFA) 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

A service order is the workshop job card: one document per job taken in against a customer and, usually, an asset, with a line for every part and every unit of labour. It appears in the Service app on web and mobile. It is created directly or from a case, lead, appointment, service opportunity or service estimate, and its lines are copied from the estimate, else the opportunity, else the asset's service contract. It is numbered from document numbering (shipped series SV, separator -, date DDMMYYYY, six digits). Partner Account and Branch are locked once saved, and an asset can have only one service order that is not Delivered. Work Item lines are labour recorded on time sheets; Part lines go through fulfilment, allocation, picking and inventory posting, with a VOR purchase order for parts out of stock. Shipped business rules move Status through Draft, Work To Start, Work In Progress, Work Paused, Work Completed, Invoiced and Delivered. Invoice requires every time sheet ended and every part line allocated. There is no cancel action and no Cancelled status. Step-by-step procedures are on the Service orders page of the Service documentation.

Fields

FieldLabelTypeRequiredWhat it does
AccountIdAccountLookup → AccountThe customer. Filled from the asset's owner when left empty.
AccountNameAccount NameText
AdjustedAdvanceAmountAdjusted Advance AmountCurrency
AdvanceAmountAdvance AmountCurrency
AmountPaidAmount PaCurrency
AssetIdAssetLookup → AssetThe machine or vehicle being serviced. Only one service order that is not Delivered may exist per asset. Picking the asset fills Account from the asset's owner when Account is empty.
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 → BranchThe branch doing the job. Must be active and belong to the partner account; required when the partner account has branches. Locked once saved.
CancelPendingQuantityCancel Pending QuantityCurrency
CheckInInspectionIdCheck In InspectionLookup → CheckInInspectionThe check-in inspection created by the Check In action, recording the asset's condition at reception.
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTime
CustomerVoiceCustomer VoiceTextThe customer's complaint in their own words.
DiscountGroupIdDiscount GroupLookup → DiscountGroup
DocumentDateDocument DateDateThe order's business date. Set to today when left empty.
ExternalIdExternalText
FailureDateFailure DateDate
IdIdGuid
InspectionLineIdInspection LineLookup → InspectionLine
IsClaimedIs ClaimedBoolean
IsDeliveredDeliveredBooleanSet by the Delivery action, which also sets Status to Delivered, releases the bay, closes the originating inspection line and records campaign maintenance against the asset.
IsILPostedIL PostedBoolean
IsInJobQueueIn Job QueueBoolean
IsInvoiceGeneratedInvoice GeneratedBooleanSet when the Invoice or Selective Invoice action raises documents. Drives the Invoiced status.
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 covering the work. Requires an active asset service contract on the asset where the contract needs one. On a new order with no estimate and no lines, its pending entitlements are added as lines. It can be changed only while no time sheet has started work and no part has been allocated.
JobQueueIdJob QueueLookup
ModifiedByIdModified ByLookup → UserAccount
NameDocument NumberTextThe service order's document number, generated on save from the Service Order Name Setting. The shipped format is SV, a hyphen, the document date as DDMMYYYY, a hyphen and a six-digit counter that restarts each day.
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 → AccountYour operating company for the job. Must be active. Locked once saved.
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 used to look up prices. Changing it reprices every line.
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 → ResourceThe service advisor on the create form. Must be authorized for the order's partner account and branch. Used as the time sheet technician when no technician is given.
RNAExternalIdRNA ExternalText
RoundOffRound OffCurrency
ServiceAdvisorIdExecutiveLookup → ResourceThe service advisor shown on the record's details. Must be authorized for the order's partner account and branch.
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 TypePickListThe kind of job: Paid Repairs, Free Service, Warranty Service, Dealer Expense or PDI. The shipped create form offers the first four. 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 SchemeBooleanWhen on, trade-scheme evaluation is skipped for the whole order.
SplitInvoicesSplit InvoicesBooleanStored but not used by the platform. Invoices are split by each line's Invoice Group.
StandardDurationStandard DurationCurrency
StatusStatusPickListThe job's stage: Draft (the default), Work To Start, Work In Progress, Work Paused, Work Completed, Invoiced or Delivered. Shipped business rules set it from the progress flags: a time sheet created, work started, paused or ended, parts fully allocated, invoice generated, delivered. Work Completed is refused while any non-cancelled Work Item line has not ended, and no status change is allowed while a work order for subcontracted lines is still open. Values: Draft, Work To Start, Work In Progress, Work Paused, Work Completed, Invoiced, Delivered.
SupplierAccountIdSupplier AccountLookup → AccountThe default supplier for VOR purchase orders, used when the VOR action is not given a supplier.
Tax1Tax1Currency
Tax1NameTaxName1Text
Tax1RateTaxRate1Currency
Tax1TypeTaxType1Text
TaxGroupIdTax GroupLookup → TaxGroup
TaxIdTaxLookup → Tax
TaxSupplyTypeTax Supply TypePickListValues: Within State, Outside State.
TCSEligibleAmountTCS Eligible AmountCurrency
TechnicianIdExecutiveLookup → ResourceThe default technician for time sheets created from the order.
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 asset's meter reading at reception. Cannot be lower than the asset's last recorded reading and, when a service contract is set, must fall inside the contract's usage band. Written to the asset when the order is invoiced.
UsageReadingHoursUsage Reading (Hours)DecimalThe asset's hour-meter reading at reception, validated like Usage Reading.
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)Creates a Quote from the order for the item service contract named in QuoteForItemServiceContractId, taking only the service order lines whose own item service contract matches it. It is refused when a quote has already been generated for the order or when no line qualifies, so it is a one-shot per order rather than a re-runnable estimate.
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