---
id: object/codeunit/5012
type: object
title: Codeunit 5012 "Service Declaration Mgt."
summary: Codeunit 5012 "Service Declaration Mgt." in ServiceDeclaration (Microsoft.Service.Reports). 9 public procedures, 9 events, 27 event subscribers. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - codeunit
  - servicedeclaration
versions:
  introduced: "29"
  last_changed: null
  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: c549e8ced53137282c7de68b969d96e48d7b3e3cf1ead88addca5e5777846c3d
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ServiceDeclaration/app/src/Processing/ServiceDeclarationMgt.Codeunit.al
    title: src/Apps/W1/ServiceDeclaration/app/src/Processing/ServiceDeclarationMgt.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 5012
name: Service Declaration Mgt.
namespace: Microsoft.Service.Reports
app: ServiceDeclaration
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 52
  events: 9
  subscribers: 27
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 2
  called_by: 42
  implements: 0
---

# Codeunit 5012 "Service Declaration Mgt."

> Codeunit 5012 "Service Declaration Mgt." in ServiceDeclaration (Microsoft.Service.Reports). 9 public procedures, 9 events, 27 event subscribers. Introduced in BC29, still in BC30.

ServiceDeclaration · Microsoft.Service.Reports · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ServiceDeclaration/app/src/Processing/ServiceDeclarationMgt.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Permissions | TableData "Service Declaration Header" = imd, TableData "Service Declaration Line" = imd |

## Events published

- `OnAfterCheckFeatureEnabled(var IsEnabled: Boolean)` (integration)
- `OnBeforeAssignExchDefToServDeclSetup(var HandledDataExchDefCode: Code[20])` (integration)
- `OnBeforeInsertVATReportsConfiguration(var IsHandled: Boolean)` (integration)
- `OnAfterInitServDeclSetup(var ServDeclSetup: Record "Service Declaration Setup")` (integration)
- `OnBeforeReleaseServiceDeclaration(var ServiceDeclHeader: Record "Service Declaration Header"; var IsHandled: Boolean)` (integration)
- `OnAfterReleaseServiceDeclaration(var ServiceDeclHeader: Record "Service Declaration Header")` (integration)
- `OnBeforeReopenServiceDeclaration(var ServiceDeclHeader: Record "Service Declaration Header"; var IsHandled: Boolean)` (integration)
- `OnAfterReopenServiceDeclaration(var ServiceDeclHeader: Record "Service Declaration Header")` (integration)
- `OnBeforeCreateDefaultDataExchangeDef(var IsHandled: Boolean)` (integration)

## Event subscriptions

- InsertIntoAssistedSetup subscribes to Codeunit "Guided Experience" OnRegisterAssistedSetup
- OnAfterCheckSellToCustInSalesHeader subscribes to Table "Sales Header" OnAfterCheckSellToCust
- OnAfterCheckBillToCustInSalesHeader subscribes to Table "Sales Header" OnAfterCheckBillToCust
- OnAfterValidateCustNoInServHeader subscribes to Table "Service Header" OnAfterValidateEvent (Customer No.)
- OnAfterCheckBuyFromVendorInPurchHeader subscribes to Table "Purchase Header" OnAfterCheckBuyFromVendor
- OnAfterCheckPayToVendorInPurchHeader subscribes to Table "Purchase Header" OnAfterCheckPayToVendor
- OnAfterAssignItemValuesInSalesLine subscribes to Table "Sales Line" OnAfterAssignItemValues
- OnAfterAssignItemValuesInServiceLine subscribes to Table "Service Line" OnAfterAssignItemValues
- OnAfterAssignResourceValuesInSalesLine subscribes to Table "Sales Line" OnAfterAssignResourceValues
- OnAfterAssignResourceValuesInServiceLine subscribes to Table "Service Line" OnAfterAssignResourceValues
- OnAfterAssignItemChargeValuesInSalesLine subscribes to Table "Sales Line" OnAfterAssignItemChargeValues
- OnAfterAssignItemValuesInPurchLine subscribes to Table "Purchase Line" OnAfterAssignItemValues
- OnAfterAssignResourceValuesInPurchLine subscribes to Table "Purchase Line" OnAfterAssignResourceValues
- OnAfterAssignItemChargeValuesInPurchLine subscribes to Table "Purchase Line" OnAfterAssignItemChargeValues
- OnAfterInitItemLedgEntry subscribes to Codeunit "Item Jnl.-Post Line" OnAfterInitItemLedgEntry
- OnBeforeInsertValueEntry subscribes to Codeunit "Item Jnl.-Post Line" OnBeforeInsertValueEntry
- OnReleaseSalesDoc subscribes to Codeunit "Release Sales Document" OnCodeOnAfterCheck
- OnReleaseServDoc subscribes to Codeunit "Release Service Document" OnCodeOnAfterCheck
- OnReleasePurchDoc subscribes to Codeunit "Release Purchase Document" OnCodeOnAfterCheck
- OnAfterCopyItemJnlLineFromSalesLine subscribes to Table "Item Journal Line" OnAfterCopyItemJnlLineFromSalesLine
- OnPostItemChargePerSalesOrderOnAfterCopyToItemJnlLine subscribes to Codeunit "Sales-Post" OnPostItemChargePerOrderOnAfterCopyToItemJnlLine
- OnPostItemChargePerPurchOrderOnAfterCopyToItemJnlLine subscribes to Codeunit "Purch.-Post" OnPostItemChargePerOrderOnAfterCopyToItemJnlLine
- OnAfterCopyItemJnlLineFromServiceLine subscribes to Table "Service Line" OnAfterCopyToItemJnlLine
- OnAfterCopyItemJnlLineFromPurchaseLine subscribes to Table "Item Journal Line" OnAfterCopyItemJnlLineFromPurchLine
- OnAfterCopyResJnlLineFromSalesLine subscribes to Table "Res. Journal Line" OnAfterCopyResJnlLineFromSalesLine
- OnAfterCopyResJnlLineFromPurchaseLine subscribes to Table "Res. Journal Line" OnAfterCopyResJnlLineFromPurchaseLine
- OnAfterCopyFromResJnlLine subscribes to Table "Res. Ledger Entry" OnAfterCopyFromResJnlLine

## Procedures

- `IsFeatureEnabled(): Boolean`
- `IsServTransTypeEnabled(): Boolean`
- `InsertSetup(var ServDeclSetup: Record "Service Declaration Setup")`
- `InitServDeclSetup(var ServDeclSetup: Record "Service Declaration Setup"): Boolean`
- `GetVATReportVersion(): Code[10]`
- `InsertVATReportsConfiguration()`
- `ReleaseIntrastatReport(var ServiceDeclHeader: Record "Service Declaration Header")` (internal)
- `ReopenIntrastatReport(var ServiceDeclHeader: Record "Service Declaration Header")` (internal)
- `CreateDefaultDataExchangeDef()` (internal)

Plus 7 local procedures.

## 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 4100 "Temp Blob"](../codeunit/4100.md) (4 calls: `AssignDataExchDefToServDeclSetup → CreateInStream`, `AssignDataExchDefToServDeclSetup → CreateOutStream`, `CreateDefaultDataExchangeDef → CreateInStream`, …)
- [Codeunit 1990 "Guided Experience"](../codeunit/1990.md) (1 call: `InsertIntoAssistedSetup → InsertAssistedSetup`)

## Called by

- [Page 5021 "Serv. Decl. Setup Wizard"](../page/5021.md) (2 calls: `OnOpenPage → InitServDeclSetup`, `OnOpenPage → InsertVATReportsConfiguration`)
- [Page extension 5012 "Serv. Decl. Item Card"](../pageextension/5012.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5013 "Serv. Decl. Item Charges"](../pageextension/5013.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5014 "SD Purch. Ret. Order Subform"](../pageextension/5014.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5015 "SD Purch. Cr. Memo Subform"](../pageextension/5015.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5016 "SD Purch. Inv. Subform"](../pageextension/5016.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5017 "Serv. Decl. Resource Card"](../pageextension/5017.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5018 "SD Sales Cr. Memo Subform"](../pageextension/5018.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5019 "SD Sales Invoice Subform"](../pageextension/5019.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5020 "SD Sales Ret. Order Subform"](../pageextension/5020.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5027 "SD Posted Sales Inv. Subform"](../pageextension/5027.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5028 "SD Pstd. Sales Cr.Memo Subform"](../pageextension/5028.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5029 "SD Posted Purch. Inv. Subform"](../pageextension/5029.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5030 "SD Pstd. Purch. Cr.Memo Sbfrm"](../pageextension/5030.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5032 "SD Sales Order Subform"](../pageextension/5032.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5037 "Serv. Decl. Value Entries"](../pageextension/5037.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5039 "SD Purchase Order Subform"](../pageextension/5039.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5041 "SD Serv. Invoice Subform"](../pageextension/5041.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5043 "SD Serv. Cr. Memo Subform"](../pageextension/5043.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5046 "SD Posted Serv. Inv. Subform"](../pageextension/5046.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5049 "SD Service Lines"](../pageextension/5049.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5250 "SD Pstd. Serv. Cr.Memo Subform"](../pageextension/5250.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5251 "Serv. Decl. Res. Ledg. Entries"](../pageextension/5251.md) (2 calls: `OnOpenPage → IsFeatureEnabled`, `OnOpenPage → IsServTransTypeEnabled`)
- [Page 5024 "Service Declaration Subform"](../page/5024.md) (1 call: `OnOpenPage → IsServTransTypeEnabled`)
- [Page extension 5021 "SD Sales Invoice"](../pageextension/5021.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5022 "SD Sales Cr. Memo"](../pageextension/5022.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5023 "SD Sales Return Order"](../pageextension/5023.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5024 "SD Purch. Invoice"](../pageextension/5024.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5025 "SD Purch. Cr. Memo"](../pageextension/5025.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5026 "SD Purch. Return Order"](../pageextension/5026.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5031 "SD Sales Order"](../pageextension/5031.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5033 "SD Posted Sales Invoice"](../pageextension/5033.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5034 "SD Posted Purch. Invoice"](../pageextension/5034.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5035 "SD Posted Sales Cr. Memo"](../pageextension/5035.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5036 "SD Posted Purch. Cr. Memo"](../pageextension/5036.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5038 "SD Purchase Order"](../pageextension/5038.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5040 "SD Serv. Order"](../pageextension/5040.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5042 "SD Serv. Invoice"](../pageextension/5042.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5044 "SD Serv. Cr. Memo"](../pageextension/5044.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5045 "SD Serv. Order Archive"](../pageextension/5045.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5047 "SD Posted Serv. Invoice"](../pageextension/5047.md) (1 call: `OnOpenPage → IsFeatureEnabled`)
- [Page extension 5048 "SD Posted Serv. Cr. Memo"](../pageextension/5048.md) (1 call: `OnOpenPage → IsFeatureEnabled`)

## Across versions

- Present in: BC29-30
- Changed (declaration) in: none

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: "Service Declaration Mgt.")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
