---
id: object/codeunit/5988
type: object
title: Codeunit 5988 "Serv-Documents Mgt."
summary: Codeunit 5988 "Serv-Documents Mgt." in Base Application (Microsoft.Service.Posting). 21 public procedures, 126 events. Present since at least BC23, still in BC30, changed in BC24-28.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "28"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: b229e34160ea47b3443ac5b2a0f0785523ec123aa1aac7f3f0b3c54000b435b4
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Service/Posting/ServDocumentsMgt.Codeunit.al
    title: src/Layers/W1/BaseApp/Service/Posting/ServDocumentsMgt.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations:
    - localization/ca
    - localization/it
    - localization/mx
    - localization/us
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/9344
object_type: codeunit
object_id: 5988
name: Serv-Documents Mgt.
namespace: Microsoft.Service.Posting
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries:
  - ca
  - it
  - mx
  - us
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 202
  events: 126
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 8
  calls: 16
  called_by: 1
  implements: 0
---

# Codeunit 5988 "Serv-Documents Mgt."

> Codeunit 5988 "Serv-Documents Mgt." in Base Application (Microsoft.Service.Posting). 21 public procedures, 126 events. Present since at least BC23, still in BC30, changed in BC24-28.

Base Application · Microsoft.Service.Posting · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Service/Posting/ServDocumentsMgt.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Permissions | TableData "Service Header" = rimd, TableData "Service Item Line" = rimd, TableData "Service Line" = rimd, TableData "Service Ledger Entry" = rm, TableData "Warranty Ledger Entry" = rm, TableData "Service Shipment Item Line" = rimd, TableData "Service Shipment Header" = rimd, TableData "Service Shipm... |

## Events published

- `OnBeforeModifyServiceDocNoSeries(var ServHeader: Record "Service Header"; PServHeader: Record "Service Header"; ModifyHeader: Boolean)` (integration)
- `OnAfterCheckCertificateOfSupplyStatus(ServShptHeader: Record "Service Shipment Header"; ServShptLine: Record "Service Shipment Line")` (integration)
- `OnAfterCheckDimComb(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line")` (integration)
- `OnAfterFinalize(var ServiceHeader: Record "Service Header"; var CloseCondition: Boolean)` (integration)
- `OnAfterFinalizeHeader(var ServiceHeader: Record "Service Header")` (integration)
- `OnAfterFinalizeCrMemoDocument(var ServiceCrMemoHeader: Record "Service Cr.Memo Header"; ServiceHeader: record "Service Header"; var PServCrMemoHeader: Record "Service Cr.Memo Header")` (integration)
- `OnAfterFinalizeInvoiceDocument(var ServiceInvoiceHeader: Record "Service Invoice Header"; ServiceHeader: record "Service Header"; var PServInvHeader: Record "Service Invoice Header")` (integration)
- `OnAfterFinalizeShipmentDocument(var ServiceShipmentHeader: Record "Service Shipment Header"; ServiceHeader: record "Service Header"; var PServShptHeader: Record "Service Shipment Header")` (integration)
- `OnAfterInitialize(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line"; var CloseCondition: Boolean; Ship: Boolean; Consume: Boolean; Invoice: Boolean)` (integration)
- `OnAfterInsertServLedgerEntrySaleConsume(var NextServLedgerEntryNo: Integer)` (integration)
- `OnAfterPostDocumentLines(var ServHeader: Record "Service Header"; var ServInvHeader: Record "Service Invoice Header"; var ServInvLine: Record "Service Invoice Line"; var ServCrMemoHeader: Record "Service Cr.Memo Header"; var ServCrMemoLine: Record "Service Cr.Memo Line"; GenJnlLineDocType: enum "Gen. Journal Document Type"; GenJnlLineDocNo: Code[20])` (integration)
- `OnAfterPostServiceResourceLine(var ServHeader: Record "Service Header"; var ServLine: Record "Service Line"; var ServMgtSetup: Record "Service Mgt. Setup"; var TempServLine: Record "Service Line" temporary; var GenJnlLineDocNo: Code[20]; var GenJnlLineExtDocNo: Code[35]; var Ship: Boolean; var Invoice: Boolean; var Consume: Boolean)` (integration)
- `OnAfterPrepareDocument(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line")` (integration)
- `OnAfterPrepareShipmentHeader(var ServiceShptHeader: Record "Service Shipment Header"; ServiceHeader: Record "Service Header")` (integration)
- `OnAfterPrepareInvoiceHeader(var ServiceInvHeader: Record "Service Invoice Header"; ServiceHeader: Record "Service Header"; var ServItemLine: Record "Service Item Line")` (integration)
- `OnAfterPrepareCrMemoHeader(var ServiceCrMemoHeader: Record "Service Cr.Memo Header"; ServiceHeader: Record "Service Header")` (integration)
- `OnAfterServShptHeaderInsert(var ServiceShipmentHeader: Record "Service Shipment Header"; ServiceHeader: Record "Service Header")` (integration)
- `OnAfterServShptLineInsert(var ServiceShipmentLine: Record "Service Shipment Line"; ServiceLine: Record "Service Line"; ServiceShipmentHeader: Record "Service Shipment Header"; ServiceInvoiceHeader: Record "Service Invoice Header"; PassedServiceLine: Record "Service Line"; ServiceHeader: Record "Service Header")` (integration)
- `OnAfterServShptItemLineInsert(var ServiceShptItemLine: Record "Service Shipment Item Line"; ServiceItemLine: Record "Service Item Line")` (integration)
- `OnAfterServInvHeaderInsert(var ServiceInvoiceHeader: Record "Service Invoice Header"; ServiceHeader: Record "Service Header")` (integration)
- `OnAfterServInvLineInsert(var ServiceInvoiceLine: Record "Service Invoice Line"; ServiceLine: Record "Service Line")` (integration)
  - subscribers: [Codeunit 20339 "Service Posting Subscribers"](../codeunit/20339.md) OnAfterServiceInvoiceLineInsert
- `OnAfterServCrMemoHeaderInsert(var ServiceCrMemoHeader: Record "Service Cr.Memo Header"; ServiceHeader: Record "Service Header")` (integration)
- `OnAfterServCrMemoLineInsert(var ServiceCrMemoLine: Record "Service Cr.Memo Line"; ServiceLine: Record "Service Line")` (integration)
  - subscribers: [Codeunit 20339 "Service Posting Subscribers"](../codeunit/20339.md) OnAfterServiceCrMemoLineInsert
- `OnAfterSortLines(var ServiceLine: Record "Service Line")` (integration)
- `OnBeforeCalcContractDates(var ServItemLine: Record "Service Item Line" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeFinalize(var ServiceHeader: Record "Service Header"; var CloseCondition: Boolean)` (integration)
- `OnBeforeFinalizeCrMemoDocument(var ServiceCrMemoHeader: Record "Service Cr.Memo Header"; var ServHeader: Record "Service Header" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeFinalizeInvoiceDocument(var ServiceInvoiceHeader: Record "Service Invoice Header"; var ServHeader: Record "Service Header" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeFinalizeShipmentDocument(var ServiceShipmentHeader: Record "Service Shipment Header"; var ServHeader: Record "Service Header" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeFinalizeDeleteHeader(var PassedServHeader: Record "Service Header"; var ServHeader: Record "Service Header" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeFinalizeDeleteItemLines(var PServItemLine: Record "Service Item Line"; var ServHeader: Record "Service Header" temporary; var ServItemLine: Record "Service Item Line" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeGetAndCheckCustomer(var ServiceHeader: Record "Service Header" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeGetInvoicePostingSetup(var InvoicePostingInterface: Interface "Invoice Posting"; var IsHandled: Boolean)` (integration)
- `OnBeforeInitialize(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line"; var CloseCondition: Boolean)` (integration)
- `OnBeforePostServiceItemLine(var ServiceLine: Record "Service Line")` (integration)
- `OnBeforeInsertServLedgerEntrySaleConsume(var ServHeader: Record "Service Header"; var ServLine: Record "Service Line"; var ServItemLine: Record "Service Item Line"; var ServMgtSetup: Record "Service Mgt. Setup"; var NextServLedgerEntryNo: Integer; var GenJnlLineDocNo: Code[20]; Consume: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeServInvHeaderInsert(var ServiceInvoiceHeader: Record "Service Invoice Header"; ServiceHeader: Record "Service Header")` (integration)
- `OnBeforeServInvLineInsert(var ServiceInvoiceLine: Record "Service Invoice Line"; ServiceLine: Record "Service Line"; var GlobalServiceLine: Record "Service Line")` (integration)
  - subscribers: [Codeunit 6285 "Sust. Service Subscriber"](../codeunit/6285.md) OnBeforeServInvLineInsert
- `OnBeforeServCrMemoHeaderInsert(var ServiceCrMemoHeader: Record "Service Cr.Memo Header"; ServiceHeader: Record "Service Header")` (integration)
- `OnBeforeServCrMemoLineInsert(var ServiceCrMemoLine: Record "Service Cr.Memo Line"; ServiceLine: Record "Service Line"; var GlobalServiceLine: Record "Service Line")` (integration)
  - subscribers: [Codeunit 6285 "Sust. Service Subscriber"](../codeunit/6285.md) OnBeforeServCrMemoLineInsert
- `OnBeforeServShptHeaderInsert(var ServiceShipmentHeader: Record "Service Shipment Header"; ServiceHeader: Record "Service Header")` (integration)
- `OnBeforeServShptLineInsert(var ServiceShipmentLine: Record "Service Shipment Line"; ServiceLine: Record "Service Line"; ServiceShipmentHeader: Record "Service Shipment Header")` (integration)
  - subscribers: [Codeunit 6285 "Sust. Service Subscriber"](../codeunit/6285.md) OnBeforeServShptLineInsert
- `OnBeforeServShptItemLineInsert(var ServiceShptItemLine: Record "Service Shipment Item Line"; ServiceItemLine: Record "Service Item Line")` (integration)
- `OnBeforeSetGenJnlLineDocNumbers(var ServiceHeader: Record "Service Header"; var DocType: Integer; var DocNo: Code[20]; var ExtDocNo: Code[35])` (integration)
- `OnBeforeSetLastNos(var PServHeader: Record "Service Header"; var ServHeader: Record "Service Header" temporary; Ship: Boolean; Invoice: Boolean; ServLinesPassed: Boolean; CloseCondition: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeSortLines(var ServiceLine: Record "Service Line")` (integration)
- `OnBeforeUpdateDocumentLines(var ServHeader: Record "Service Header"; var CloseCondition: Boolean; var ServLinesPassed: Boolean; var IsHandled: Boolean)` (integration)
- `OnCheckCloseConditionOnAfterServiceLineTempLoop(var ServiceItemLine: Record "Service Item Line"; var ServiceLine: Record "Service Line"; Qty: Decimal; QtytoInv: Decimal; QtyToCsm: Decimal; QtyInvd: Decimal; QtyCsmd: Decimal; var ServiceItemClosedCondition: Boolean)` (integration)
- `OnCheckDimensionsAnAfterSetServLineFilters(var ServiceLine: Record "Service Line")` (integration)
- `OnCheckAndSetPostingContantsOnAfterSetFilterForConsume(var ServiceLine: Record "Service Line")` (integration)
- `OnCheckAndSetPostingContantsOnAfterSetFilterForInvoice(var ServiceLine: Record "Service Line")` (integration)
- `OnCheckAndSetPostingContantsOnAfterSetFilterForShip(var ServiceLine: Record "Service Line")` (integration)
- `OnCheckAndBlankQtysOnAfterServLineSetFilters(var ServiceLine: Record "Service Line")` (integration)
- `OnCheckAndBlankQtysOnBeforeCheckServLine(var ServiceLine: Record "Service Line"; var SkipCheckContractNoAndShipmentNo: Boolean; var SkipCheckUnitOfMeasureCode: Boolean)` (integration)
- `OnFinalizeOnBeforeFinalizeDeleteHeader(var PassedServHeader: Record "Service Header")` (integration)
- `OnFinalizeOnBeforeFinalizeHeader(var PassedServHeader: Record "Service Header")` (integration)
- `OnFinalizeDeleteLinesOnAfterSetPServItemLineFilters(var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnFinalizeDeleteLinesOnAfterSetPServLineFilters(var ServiceLine: Record "Service Line")` (integration)
- `OnFinalizeItemLinesOnAfterSetFilters(var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnFinalizeLinesOnAfterSetFilters(var ServiceLine: Record "Service Line")` (integration)
- `OnPostDocumentLinesOnAfterFillInvPostingBuffer(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line"; var TempServiceLine: Record "Service Line" temporary; var ServiceLineACY: Record "Service Line"; var ServiceInvoiceHeader: Record "Service Invoice Header"; var ServiceCrMemoHeader: Record "Service Cr.Memo Header"; var ServiceShipmentHeader: Record "Service Shipment Header")` (integration)
  - subscribers: [Codeunit 6285 "Sust. Service Subscriber"](../codeunit/6285.md) OnPostDocumentLinesOnAfterFillInvPostingBuffer
- `OnPostDocumentLinesOnAfterPrepareLine(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line"; var ServiceInvoiceHeader: Record "Service Invoice Header"; var ServiceCrMemoHeader: Record "Service Cr.Memo Header"; var ServiceShipmentHeader: Record "Service Shipment Header")` (integration)
- `OnPostDocumentLinesOnAfterFinishServiceRegister(var ServiceLine: Record "Service Line")` (integration)
- `OnPostDocumentLinesOnBeforeCheckServLine(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line"; Ship: Boolean; Invoice: Boolean; var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnPostDocumentLinesOnAfterSortLines(var ServHeader: Record "Service Header"; var ServLine: Record "Service Line"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var TempVATAmountLineForSLE: Record "VAT Amount Line" temporary)` (integration)
- `OnPostDocumentLinesOnAfterCalcShouldPostShipmentServiceEntry(var ServHeader: Record "Service Header"; var ServLine: Record "Service Line"; var Ship: Boolean; var ApplToServEntryNo: Integer; var NextServLedgerEntryNo: Integer; var ShouldPostShipmentServiceEntry: Boolean)` (integration)
- `OnPostDocumentLinesOnBeforePostRemQtyToBeConsumed(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line")` (integration)
- `OnPrepareDocumentOnBeforePassedServLineFind(var PassedServLine: Record "Service Line"; ServiceHeader: Record "Service Header")` (integration)
- `OnPostDocumentLinesOnBeforeRoundAmount(var ServiceLine: Record "Service Line")` (integration)
- `OnPostDocumentLinesOnAfterServPostingJnlsMgtCreateCreditEntry(var NextServLedgerEntryNo: Integer; var ApplToServEntryNo: Integer; var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line")` (integration)
- `OnPostDocumentLinesOnAfterServPostingJnlsMgtInsertServLedgerEntrySaleInvoice(var NextServLedgerEntryNo: Integer)` (integration)
- `OnPostServiceResourceLineOnBeforeCalcSLEDivideAmount(var ServiceLine: Record "Service Line")` (integration)
- `OnPrepareDocumentOnAfterSetPServItemLineFilters(var PServItemLine: Record "Service Item Line")` (integration)
- `OnPrepareDocumentOnAfterSetPServLineFilters(var PServLine: Record "Service Line")` (integration)
- `OnRemoveLinesNotSatisfyPostingOnBeforeInitRemainingServLine(var ServiceLine2: Record "Service Line"; var IsHandled: Boolean)` (integration)
- `OnUpdateShptLinesOnInvOnAfterServiceShptLineModify(ServiceLine: Record "Service Line"; ServiceInvoiceHeader: Record "Service Invoice Header"; ServiceShipmentHeader: Record "Service Shipment Header"; ServiceShipmentLine: Record "Service Shipment Line"; TempTrackingSpecification: Record "Tracking Specification" temporary; TrackingSpecificationExists: Boolean; QtyToBeInvoiced: Decimal; QtyToBeInvoicedBase: Decimal; QtyToBeConsumed: Decimal; QtyToBeConsumedBase: Decimal)` (integration)
- `OnUpdateServLinesOnPostOrderOnBeforeCalcQuantityShipped(var ServiceLine: Record "Service Line")` (integration)
- `OnUpdateServLinesOnPostOrderOnBeforeInitOutstanding(var ServiceLine: Record "Service Line"; var Consume: Boolean; var Invoice: Boolean)` (integration)
- `OnPrepareDocumentOnPServLineLoopOnBeforeServLineInsert(var ServLine: Record "Service Line"; PServLine: Record "Service Line")` (integration)
- `OnAfterSetServiceLedgerEntryFilters(var ServLedgEntry: Record "Service Ledger Entry")` (integration)
- `OnAfterMakeInvtAdjustment(var InvtSetup: Record "Inventory Setup"; var ServHeader: Record "Service Header" temporary)` (integration)
- `OnBeforeCheckDimValuePosting(var ServiceLine2: Record "Service Line")` (integration)
- `OnBeforeSetNoSeries(var ServHeader: Record "Service Header" temporary; Invoice: Boolean; Consume: Boolean; var Result: Boolean; var IsHandled: Boolean; var PServiceHeader: Record "Service Header"; Ship: Boolean)` (integration)
- `OnFinalizeOnBeforeFinalizeHeaderAndLines(var PassedServHeader: Record "Service Header"; var IsHandled: Boolean; var CloseCondition: Boolean)` (integration)
- `OnFinalizeOnBeforeDeleteHeaderAndLines(var ServiceHeader: Record "Service Header")` (integration)
  - subscribers: [Codeunit 6459 "Serv. Document Attachment Mgt."](../codeunit/6459.md) CopyDocumentAttachmentsToPostedServiceDocument
- `OnFinalizeDeleteHeaderOnAfterDeleteInvoiceSpecFromHeader(var ServHeader: Record "Service Header" temporary)` (integration)
- `OnPrepareShipmentHeaderOnBeforeCalcServItemDates(var ServHeader: Record "Service Header"; var ServItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnPrepareInvoiceHeaderOnAfterServInvHeaderTransferFields(var ServHeader: Record "Service Header"; var ServInvHeader: Record "Service Invoice Header" temporary)` (integration)
- `OnPrepareInvoiceHeaderOnBeforeCheckPostingNo(var ServHeader: Record "Service Header"; var ServInvHeader: Record "Service Invoice Header" temporary)` (integration)
- `OnUpdateShptLinesOnInvOnAfterCalcQtyToBeConsumed(var ServiceLine: Record "Service Line"; var QtyToBeConsumed: Decimal; var QtyToBeConsumedBase: Decimal; var RemQtyToBeConsumed: Decimal; var RemQtyToBeConsumedBase: Decimal)` (integration)
- `OnUpdateServLinesOnPostOrderOnBeforeServLineLoop(var ServiceLine: Record "Service Line"; Invoice: Boolean; Consume: Boolean; var IsHandled: Boolean)` (integration)
  - subscribers: [Codeunit 6285 "Sust. Service Subscriber"](../codeunit/6285.md) OnUpdateServLinesOnPostOrderOnBeforeServLineLoop
- `OnGetShippingAdviceOnAfterServLine2SetFilters(var ServiceLine2: Record "Service Line")` (integration)
- `OnRemoveLinesNotSatisfyPostingOnFindServLinesNotSelectedToPost(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line"; var ServiceLine2: Record "Service Line"; var CloseCondition: Boolean; var IsHandled: Boolean)` (integration)
- `OnRemoveLinesNotSatisfyPostingOnBeforeRemoveServLines(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line")` (integration)
- `OnPostDocumentLinesOnAfterReverseAmount(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line")` (integration)
- `OnPostDocumentLinesOnBeforeFilterServiceLine(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line")` (integration)
- `OnPostDocumentLinesOnAfterCheckCloseCondition(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line"; var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnUpdateServLinesOnPostOrderOnBeforeServLineModify(var ServiceLine: Record "Service Line")` (integration)
- `OnPostDocumentLinesOnAfterAssignApplToServEntryNo(var ServiceHeader: Record "Service Header"; var ApplToServEntryNo: Integer)` (integration)
- `OnPrepareShipmentHeaderOnBeforeCreateServiceShipmentItemLine(var ServiceHeader: Record "Service Header"; ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnSetNoSeriesOnBeforeSetPostingNo(var ServiceHeader: Record "Service Header"; Invoice: Boolean; var ModifyHeader: Boolean)` (integration)
- `OnCheckDimValuePostingOnAssignDimensionsToNewLine(var TableIDArr: array[10] of Integer; var NumberArr: array[10] of Code[20]; var ServiceHeader: Record "Service Header")` (integration)
- `OnPrepareDocumentOnServLineInsert(var ServiceHeader2: Record "Service Header"; var ServiceLine: Record "Service Line"; ServiceLine2: Record "Service Line"; var IsHandled: Boolean)` (integration)
- `OnPostDocumentLinesOnBeforeCreateCreditEntry(ServiceHeader: Record "Service Header"; ServiceLine: Record "Service Line"; GenJnlLineDocNo: Code[20]; var IsHandled: Boolean)` (integration)
- `OnBeforeFinalizeHeader(var ServiceHeader: Record "Service Header"; var IsHandled: Boolean)` (integration)
- `OnFinalizeShipmentDocumentOnAfterInserServiceShipmentLine(var ServiceShipmentLine2: Record "Service Shipment Line")` (integration)
- `OnFinalizeShipmentDocumentOnBeforeCopyServiceShipmentItemLine(var ServiceShipmentItemLine: Record "Service Shipment Item Line")` (integration)
- `OnPostDocumentLinesOnAfterCheckServItemRepairStatus(var ServiceLine: Record "Service Line")` (integration)
- `OnPostDocumentLinesOnBeforePostBalancingEntry(ServiceHeader: Record "Service Header"; ServiceLine: Record "Service Line"; var TotalServiceLine: Record "Service Line"; var ServPostingJournalsMgt: Codeunit "Serv-Posting Journals Mgt."; GenJnlLineDocType: Enum "Gen. Journal Document Type"; GenJnlLineDocNo: Code[20]; GenJnlLineExtDocNo: Code[35]; var InvoicePostingInterface: Interface "Invoice Posting"; var Window: Dialog; var IsHandled: Boolean)` (integration)
- `OnPostDocumentLinesOnBeforeInvoiceRounding(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line"; var TotalServiceLine: Record "Service Line"; var ServAmountsMgt: Codeunit "Serv-Amounts Mgt."; var LastLineRetrieved: Boolean; BiggestLineNo: Integer; var IsHandled: Boolean)` (integration)
- `OnCheckAndSetPostingConstantsOnAfterCalcPassedConsume(PassedShip: Boolean; var PassedConsume: Boolean; PassedInvoice: Boolean; var ServiceLine: Record "Service Line")` (integration)
- `OnCheckAndSetPostingConstantsOnAfterCalcPassedInvoice(PassedShip: Boolean; PassedConsume: Boolean; var PassedInvoice: Boolean; var ServiceLine: Record "Service Line")` (integration)
- `OnCheckAndSetPostingConstantsOnBeforeCalcPassedInvoice(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line")` (integration)
- `OnCheckAndSetPostingConstantsOnAfterCalcPassedShip(var PassedShip: Boolean; PassedConsume: Boolean; PassedInvoice: Boolean; var ServiceLine: Record "Service Line")` (integration)
- `OnBeforeRemoveLinesNotSatisfyPosting(var ServiceHeader: Record "Service Header"; var ServiceLine: Record "Service Line"; Ship: Boolean; Consume: Boolean; Invoice: Boolean; var IsHandled: Boolean)` (integration)
- `OnAfterGetInvoicePostingParameters(var InvoicePostingParameters: Record "Invoice Posting Parameters"; var ServiceInvoiceHeader: Record "Service Invoice Header")` (integration)
- `OnPrepareShipmentLineOnAfterWarrantyLedgerEntryModify(ServiceShipmentLine: Record "Service Shipment Line")` (integration)
- `OnFinalizeShipmentDocumentOnBeforeServiceShipmentHeaderInsert(var ServiceShipmentHeaderToInsert: Record "Service Shipment Header"; var TempServiceShipmentHeader: Record "Service Shipment Header" temporary; var TempServiceHeader: Record "Service Header" temporary)` (integration)
- `OnFinalizeInvoiceDocumentOnBeforeServiceInvoiceHeaderInsert(var ServiceInvoiceHeaderToInsert: Record "Service Invoice Header"; var TempServiceInvoiceHeader: Record "Service Invoice Header" temporary; var TempServiceHeader: Record "Service Header" temporary)` (integration)
- `OnFinalizeCrMemoDocumentOnBeforeServiceCreditMemoHeaderInsert(var ServiceCrMemoHeaderToInsert: Record "Service Cr.Memo Header"; var TempServiceCrMemoHeader: Record "Service Cr.Memo Header" temporary; var TempServiceHeader: Record "Service Header" temporary)` (integration)
- `OnBeforeCheckServiceShipmentLineValues(var ServiceShipmentLine: Record "Service Shipment Line"; var ServiceLine: Record "Service Line"; var IsHandled: Boolean)` (integration)
- `OnPostDocumentLinesOnAfterPostSalesAndVAT(var ServiceHeader: Record "Service Header"; var TotalServiceLine: Record "Service Line"; var Window: Dialog; GenJnlLineDocNo: Code[20]; GenJnlLineExtDocNo: Text[35]; Invoice: Boolean)` (integration)
- `OnAfterGetAndCheckCustomer(var ServiceHeader: Record "Service Header")` (integration)
- `OnGetAndCheckCustomerOnAfterCheckBlocked(var ServiceHeader: Record "Service Header")` (integration)
- `OnBeforePostDocumentLines(var ServHeader: Record "Service Header"; var ServLine: Record "Service Line"; Ship: Boolean; Consume: Boolean; Invoice: Boolean)` (integration)
- `OnFinalizeOnAfterFinalizeDocuments(var ServiceHeader: Record "Service Header"; var ServiceInvoiceHeader: Record "Service Invoice Header"; var ServiceInvoiceLine: Record "Service Invoice Line"; var ServiceCrMemoHeader: Record "Service Cr.Memo Header"; var ServiceCrMemoLine: Record "Service Cr.Memo Line"; var Invoice: Boolean)` (integration)

## Procedures

- `Initialize(var PassedServiceHeader: Record "Service Header"; var PassedServiceLine: Record "Service Line")`
- `CheckServiceDocument(var PassedServiceHeader: Record "Service Header"; var PassedServiceLine: Record "Service Line")`
- `CalcInvDiscount()`
- `PostDocumentLines(var Window: Dialog)`
- `UpdateDocumentLines()`
- `PrepareShipmentHeader(): Code[20]`
- `PrepareInvoiceHeader(var Window: Dialog): Code[20]`
- `PrepareCrMemoHeader(var Window: Dialog): Code[20]`
- `Finalize(var PassedServHeader: Record "Service Header")`
- `InsertValueEntryRelation()`
- `UpdateIncomingDocument(IncomingDocNo: Integer; PostingDate: Date; PostedDocNo: Code[20])`
- `CheckAndSetPostingConstants(var PassedShip: Boolean; var PassedConsume: Boolean; var PassedInvoice: Boolean)`
- `CheckAndBlankQtys(ServDocType: Integer)`
- `CheckCloseCondition(LineQuantity: Decimal; LineQtytoInvoice: Decimal; LineQtyToConsume: Decimal; LineQuantityInvoiced: Decimal; LineQuantityConsumed: Decimal): Boolean`
- `CheckAdjustedLines()`
- `IsCloseConditionMet(): Boolean`
- `SetNoSeries(var PServHeader: Record "Service Header"): Boolean`
- `SetNoSeries(var PServHeader: Record "Service Header"; PreviewMode: Boolean): Boolean`
- `SetLastNos(var PServHeader: Record "Service Header")`
- `SetPostingOptions(passedShip: Boolean; passedConsume: Boolean; passedInvoice: Boolean)`
- `CollectTrackingSpecification(var TempTargetTrackingSpecification: Record "Tracking Specification" temporary)`

Plus 55 local procedures.

## Triggers

OnRun

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 5987 "Serv-Posting Journals Mgt."](../codeunit/5987.md) (29 calls: `CollectValueEntryRelation → CollectValueEntryRelation`, `Finalize → Finalize`, `Initialize → Initialize`, …)
- [Codeunit 5986 "Serv-Amounts Mgt."](../codeunit/5986.md) (11 calls: `CheckAndBlankQtys → RoundingLineInserted`, `Initialize → Initialize`, `PostDocumentLines → (object)`, …)
- [Codeunit 5985 "Serv-Item Tracking Rsrv. Mgt."](../codeunit/5985.md) (9 calls: `CheckAndSetPostingConstants → CheckTrackingSpecification`, `FinalizeDeleteHeader → DeleteInvoiceSpecFromHeader`, `InsertValueEntryRelation → InsertValueEntryRelation`, …)
- [Codeunit 5900 "ServOrderManagement"](../codeunit/5900.md) (7 calls: `CalcContractDates → CalcContractDates`, `CheckServiceItemBlockedForAll → CheckServiceItemBlockedForAll`, `PostDocumentLines → CheckServItemRepairStatus`, …)
- [Codeunit 408 "DimensionManagement"](../codeunit/408.md) (4 calls: `CheckDimComb → CheckDimIDComb`, `CheckDimComb → GetDimCombErr`, `CheckDimValuePosting → CheckDimValuePosting`, …)
- [Codeunit 5906 "ServLogManagement"](../codeunit/5906.md) (4 calls: `PrepareCrMemoHeader → ServCrMemoPost`, `PrepareInvoiceHeader → ServInvoicePost`, `PrepareInvoiceHeader → ServOrderInvoicePost`, …)
- [Codeunit 28 "Error Message Management"](../codeunit/28.md) (3 calls: `PostDocumentLines → Finish`, `PostDocumentLines → PopContext`, `PostDocumentLines → PushContext`)
- [Codeunit 447 "Record Link Management"](../codeunit/447.md) (3 calls: `PrepareCrMemoHeader → CopyLinks`, `PrepareInvoiceHeader → CopyLinks`, `PrepareShipmentHeader → CopyLinks`)
- [Codeunit 5920 "ServItemManagement"](../codeunit/5920.md) (2 calls: `PostDocumentLines → AddOrReplaceSIComponent`, `PrepareShipmentHeader → CopyReservationEntryService`)
- [Codeunit 5930 "ServAllocationManagement"](../codeunit/5930.md) (2 calls: `PostDocumentLines → SetServLineAllocStatus`, `UpdateDocumentLines → SetServOrderAllocStatus`)
- [Codeunit 5950 "Service-Calc. Discount"](../codeunit/5950.md) (2 calls: `CalcInvDiscount → CalculateWithServHeader`, `UpdateServLinesOnPostOrder → CalculateWithServHeader`)
- [Codeunit 9070 "Document Errors Mgt."](../codeunit/9070.md) (2 calls: `CheckSysCreatedEntry → GetNothingToPostErrorMsg`, `UpdateShptLinesOnInv → GetNothingToPostErrorMsg`)
- [Codeunit 27 "Confirm Management"](../codeunit/27.md) (1 call: `CheckAdjustedLines → GetResponseOrDefault`)
- [Codeunit 5894 "Inventory Adjustment Handler"](../codeunit/5894.md) (1 call: `MakeInvtAdjustment → MakeInventoryAdjustment`)
- [Codeunit 5955 "Serv. Dimension Management"](../codeunit/5955.md) (1 call: `CheckDimValuePosting → ServiceLineTypeToTableID`)
- [Codeunit 6080 "Service Price Management"](../codeunit/6080.md) (1 call: `CheckAdjustedLines → IsLineToAdjustFirstInvoiced`)

## Called by

- [Codeunit 5980 "Service-Post"](../codeunit/5980.md) (18 calls: `CheckAndSetPostingConstants → CheckAndSetPostingConstants`, `CheckServiceDocument → CheckServiceDocument`, `Finalize → Finalize`, …)

## Recent changes

- 2026-07-16 [#9344 [master]- Posting service order without External document no. will copy the 'Service Order No.' to GL entries](../../changes/bcapps/9344.md) (main, BC30, fix)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-28

## Countries that replace it

[CA](../../localizations/ca.md), [IT](../../localizations/it.md), [MX](../../localizations/mx.md), [US](../../localizations/us.md)

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "codeunit", object_name: "Serv-Documents Mgt.")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
