---
id: object/table/5940
type: object
title: Table 5940 "Service Item"
summary: Table 5940 "Service Item" in Base Application (Microsoft.Service.Item). 82 fields, 7 public procedures, 23 events. Present since at least BC23, still in BC30, changed in BC24-28.
tier: official
language: en
tags:
  - table
  - 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: 687a973a737a2e1b45f8e4779857c1c99632de1fb5fc9dbe0261bce42c06ba34
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Service/Item/ServiceItem.Table.al
    title: src/Layers/W1/BaseApp/Service/Item/ServiceItem.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: table
object_id: 5940
name: Service Item
namespace: Microsoft.Service.Item
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: []
ms_search_form_ids: []
counts:
  fields: 82
  procedures: 34
  events: 23
  subscribers: 0
relations:
  out: 54
  referenced_by: 29
  pages: 6
  extended_by: 1
  event_subscribers: 5
  calls: 5
  called_by: 0
  implements: 0
---

# Table 5940 "Service Item"

> Table 5940 "Service Item" in Base Application (Microsoft.Service.Item). 82 fields, 7 public procedures, 23 events. Present since at least BC23, still in BC30, changed in BC24-28.

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

## Properties

| Property | Value |
|---|---|
| Caption | Service Item |
| DataClassification | CustomerContent |

## Fields

Explanation: the field's ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | No. | Code[20] | Specifies the number of the involved entry or record, according to the specified number series. |  |
| 2 | Serial No. | Code[50] | Specifies the serial number of this item. |  |
| 3 | Service Item Group Code | Code[10] | Specifies the code of the service item group associated with this item. | TableRelation [Table 5904 "Service Item Group"](../table/5904.md) (Service Item Group) |
| 4 | Description | Text[100] | Specifies a description of this item. |  |
| 5 | Description 2 | Text[50] | — |  |
| 6 | Status | Enum "Service Item Status" | Specifies the status of the service item. | enum [Enum 5940 "Service Item Status"](../enum/5940.md) |
| 7 | Priority | Enum "Service Priority" | Specifies the service priority for this item. | enum [Enum 5903 "Service Priority"](../enum/5903.md) |
| 8 | Customer No. | Code[20] | Specifies the number of the customer who owns this item. | TableRelation [Table 18 "Customer"](../table/18.md) |
| 9 | Ship-to Code | Code[10] | Specifies a code for an alternate shipment address if you want to ship to another address than the one that has been entered automatically. This field is also used in case of drop shipment. | TableRelation [Table 222 "Ship-to Address"](../table/222.md) ("Ship-to Address".Code where("Customer No." = field("Customer No."))) |
| 10 | Item No. | Code[20] | Specifies the item number linked to the service item. | TableRelation Item."No." where(Blocked = const(false), "Service Blocked" = const(false)) |
| 11 | Unit of Measure Code | Code[10] | Specifies how each unit of the item or resource is measured, such as in pieces or hours. By default, the value in the Base Unit of Measure field on the item or resource card is inserted. | TableRelation [Table 204 "Unit of Measure"](../table/204.md), [Table 5404 "Item Unit of Measure"](../table/5404.md) (if ("Item No." = filter(<> '')) "Item Unit of Measure".Code where("Item No." = field("Item No.")) else "Unit of Measure") |
| 12 | Location of Service Item | Text[30] | Specifies the code of the location of this item. |  |
| 13 | Sales Unit Price | Decimal | Specifies the unit price of this item when it was sold. |  |
| 14 | Sales Unit Cost | Decimal | Specifies the unit cost of this item when it was sold. |  |
| 15 | Warranty Starting Date (Labor) | Date | Specifies the starting date of the labor warranty for this item. <small>via [Page 5980 "Service Item Card"](../page/5980.md)</small> |  |
| 16 | Warranty Ending Date (Labor) | Date | Specifies the ending date of the labor warranty for this item. <small>via [Page 5980 "Service Item Card"](../page/5980.md)</small> |  |
| 17 | Warranty Starting Date (Parts) | Date | Specifies the starting date of the spare parts warranty for this item. <small>via [Page 5980 "Service Item Card"](../page/5980.md)</small> |  |
| 18 | Warranty Ending Date (Parts) | Date | Specifies the ending date of the spare parts warranty for this item. <small>via [Page 5980 "Service Item Card"](../page/5980.md)</small> |  |
| 19 | Warranty % (Parts) | Decimal | Specifies the percentage of spare parts costs covered by the warranty for the item. <small>via [Page 5980 "Service Item Card"](../page/5980.md)</small> |  |
| 20 | Warranty % (Labor) | Decimal | Specifies the percentage of labor costs covered by the warranty for this item. <small>via [Page 5980 "Service Item Card"](../page/5980.md)</small> |  |
| 21 | Response Time (Hours) | Decimal | Specifies the estimated number of hours this item requires before service on it should be started. <small>via [Page 5980 "Service Item Card"](../page/5980.md)</small> |  |
| 22 | Installation Date | Date | Specifies the date when this item was installed at the customer's site. |  |
| 23 | Sales Date | Date | Specifies the date when this item was sold. |  |
| 24 | Last Service Date | Date | Specifies the date of the last service on this item. |  |
| 25 | Default Contract Value | Decimal | Specifies the default contract value of an item that later will be included in a service contract or contract quote. |  |
| 26 | Default Contract Discount % | Decimal | Specifies a default contract discount percentage for an item, if this item will be part of a service contract. |  |
| 28 | No. of Active Contracts | Integer | — | FlowField: count("Service Contract Line" where("Service Item No." = field("No."), "Contract Status" = filter(<> Cancelled))) |
| 33 | Vendor No. | Code[20] | Specifies the number of the vendor for this item. | TableRelation [Table 23 "Vendor"](../table/23.md) |
| 34 | Vendor Item No. | Code[50] | Specifies the number that the vendor uses for this item. |  |
| 40 | Blocked | Enum "Service Item Blocked" | Specifies that the service item is blocked from being used in service contracts or used and posted in transactions via service documents, except credit memos. | enum [Enum 5947 "Service Item Blocked"](../enum/5947.md) |
| 47 | No. Series | Code[20] | — | TableRelation [Table 308 "No. Series"](../table/308.md) (No. Series) |
| 48 | Item Description | Text[100] | Specifies the description of the item that the service item is linked to. | FlowField: lookup(Item.Description where("No." = field("Item No."))); not editable |
| 49 | Name | Text[100] | Specifies the name of the customer who owns this item. | FlowField: lookup(Customer.Name where("No." = field("Customer No."))); not editable |
| 50 | Address | Text[100] | Specifies the address of the customer who owns this item. | FlowField: lookup(Customer.Address where("No." = field("Customer No."))); not editable |
| 51 | Address 2 | Text[50] | Specifies additional address information. | FlowField: lookup(Customer."Address 2" where("No." = field("Customer No."))); not editable |
| 52 | Post Code | Code[20] | Specifies the postal code. | FlowField: lookup(Customer."Post Code" where("No." = field("Customer No."))); not editable |
| 53 | City | Text[30] | Specifies the city of the customer address. | TableRelation [Table 225 "Post Code"](../table/225.md) ("Post Code".City); FlowField: lookup(Customer.City where("No." = field("Customer No."))); not editable |
| 54 | Contact | Text[100] | Specifies the name of the person you regularly contact when you do business with the customer who owns this item. | FlowField: lookup(Customer.Contact where("No." = field("Customer No."))); not editable |
| 55 | Phone No. | Text[30] | Specifies the customer phone number. | FlowField: lookup(Customer."Phone No." where("No." = field("Customer No."))); not editable |
| 56 | Ship-to Name | Text[100] | Specifies the name of the customer at the address that the items are shipped to. | FlowField: lookup("Ship-to Address".Name where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 57 | Ship-to Address | Text[100] | Specifies the address that the items are shipped to. | FlowField: lookup("Ship-to Address".Address where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 58 | Ship-to Address 2 | Text[50] | Specifies an additional part of the ship-to address, in case it is a long address. | FlowField: lookup("Ship-to Address"."Address 2" where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 59 | Ship-to Post Code | Code[20] | Specifies the postal code of the address that the items are shipped to. | FlowField: lookup("Ship-to Address"."Post Code" where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 60 | Ship-to City | Text[30] | Specifies the city of the address that the items are shipped to. | TableRelation [Table 225 "Post Code"](../table/225.md) ("Post Code".City); FlowField: lookup("Ship-to Address".City where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 61 | Ship-to Contact | Text[100] | Specifies the name of the contact person at the address that the items are shipped to. | FlowField: lookup("Ship-to Address".Contact where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 62 | Ship-to Phone No. | Text[30] | Specifies the phone number at address that the items are shipped to. | FlowField: lookup("Ship-to Address"."Phone No." where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 63 | Usage (Cost) | Decimal | — | FlowField: sum("Service Ledger Entry"."Cost Amount" where("Entry Type" = const(Usage), "Service Item No. (Serviced)" = field("No."), "Service Contract No." = field("Contract Filter"), "Service Order No." = field("Service Order Filter"), Type = field("Type Filter"), "Posting Date" = field("Date Filter"))); not editable |
| 64 | Usage (Amount) | Decimal | — | FlowField: sum("Service Ledger Entry"."Amount (LCY)" where("Entry Type" = const(Usage), "Service Item No. (Serviced)" = field("No."), "Service Contract No." = field("Contract Filter"), "Service Order No." = field("Service Order Filter"), Type = field("Type Filter"), "Posting Date" = field("Date Filter"))); not editable |
| 65 | Invoiced Amount | Decimal | — | FlowField: - sum("Service Ledger Entry"."Amount (LCY)" where("Entry Type" = const(Sale), "Moved from Prepaid Acc." = const(true), "Service Item No. (Serviced)" = field("No."), "Service Contract No." = field("Contract Filter"), "Service Order No." = field("Service Order Filter"), Type = field("Type Filter"), "P...; not editable |
| 66 | Total Quantity | Decimal | — | FlowField: sum("Service Ledger Entry".Quantity where("Entry Type" = const(Usage), "Service Item No. (Serviced)" = field("No."), "Service Contract No." = field("Contract Filter"), "Service Order No." = field("Service Order Filter"), Type = field("Type Filter"), "Posting Date" = field("Date Filter"))); not editable |
| 67 | Total Qty. Invoiced | Decimal | — | FlowField: - sum("Service Ledger Entry"."Charged Qty." where("Entry Type" = const(Sale), "Service Item No. (Serviced)" = field("No."), "Service Contract No." = field("Contract Filter"), "Service Order No." = field("Service Order Filter"), Type = field("Type Filter"), "Posting Date" = field("Date Filter"))); not editable |
| 68 | Resources Used | Decimal | — | FlowField: - sum("Service Ledger Entry"."Cost Amount" where("Service Item No. (Serviced)" = field("No."), "Entry Type" = const(Sale), Type = const(Resource), "Posting Date" = field("Date Filter"))); not editable |
| 69 | Parts Used | Decimal | — | FlowField: - sum("Service Ledger Entry"."Cost Amount" where("Service Item No. (Serviced)" = field("No."), "Entry Type" = const(Sale), Type = const(Item), "Posting Date" = field("Date Filter"))); not editable |
| 70 | Cost Used | Decimal | — | FlowField: - sum("Service Ledger Entry"."Cost Amount" where("Service Item No. (Serviced)" = field("No."), "Entry Type" = const(Sale), Type = const("Service Cost"), "Posting Date" = field("Date Filter"))); not editable |
| 71 | Vendor Name | Text[100] | Specifies the vendor name for this item. | FlowField: lookup(Vendor.Name where("No." = field("Vendor No."))); not editable |
| 72 | Vendor Item Name | Text[100] | Specifies the name assigned to this item by the vendor. |  |
| 73 | Comment | Boolean | — | FlowField: exist("Service Comment Line" where("Table Name" = const("Service Item"), "Table Subtype" = const("0"), "No." = field("No."))); not editable |
| 74 | Service Item Components | Boolean | Specifies that there is a component for this service item. | FlowField: exist("Service Item Component" where("Parent Service Item No." = field("No."), Active = const(true))); not editable |
| 75 | Preferred Resource | Code[20] | Specifies the number of the resource that the customer prefers for servicing of the item. | TableRelation Resource."No." |
| 76 | Variant Code | Code[10] | Specifies the variant of the item on the line. | TableRelation [Table 5401 "Item Variant"](../table/5401.md) ("Item Variant".Code where("Item No." = field("Item No."), Blocked = const(false), "Service Blocked" = const(false))) |
| 77 | County | Text[30] | Specifies the state, province or county as a part of the address. | FlowField: lookup(Customer.County where("No." = field("Customer No."))); not editable |
| 78 | Ship-to County | Text[30] | — | FlowField: lookup("Ship-to Address".County where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 79 | Contract Cost | Decimal | — | FlowField: - sum("Service Ledger Entry"."Cost Amount" where("Entry Type" = const(Sale), "Service Item No. (Serviced)" = field("No."), "Service Contract No." = field("Contract Filter"), "Service Order No." = field("Service Order Filter"), Type = const("Service Contract"), "Posting Date" = field("Date Filter"))) |
| 81 | Country/Region Code | Code[10] | Specifies the country/region of the address. | FlowField: lookup(Customer."Country/Region Code" where("No." = field("Customer No."))); not editable |
| 82 | Ship-to Country/Region Code | Code[10] | — | FlowField: lookup("Ship-to Address"."Country/Region Code" where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 83 | Name 2 | Text[50] | — | FlowField: lookup(Customer."Name 2" where("No." = field("Customer No."))); not editable |
| 84 | Ship-to Name 2 | Text[50] | Specifies an additional part of the name of the customer at the address that the items are shipped to. | FlowField: lookup("Ship-to Address"."Name 2" where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 85 | Service Price Group Code | Code[10] | Specifies the code of the Service Price Group associated with this item. | TableRelation [Table 6080 "Service Price Group"](../table/6080.md) (Service Price Group) |
| 86 | Default Contract Cost | Decimal | Specifies the default contract cost of a service item that later will be included in a service contract or contract quote. |  |
| 87 | Prepaid Amount | Decimal | — | FlowField: - sum("Service Ledger Entry"."Amount (LCY)" where("Entry Type" = const(Sale), "Moved from Prepaid Acc." = const(false), "Service Item No. (Serviced)" = field("No."), "Service Contract No." = field("Contract Filter"), "Service Order No." = field("Service Order Filter"), Type = field("Type Filter"), "...; not editable |
| 88 | Search Description | Code[100] | Specifies an alternate description to search for the service item. |  |
| 89 | Service Contracts | Boolean | Specifies that this service item is associated with one or more service contracts/quotes. | FlowField: exist("Service Contract Line" where("Service Item No." = field("No."))); not editable |
| 90 | Total Qty. Consumed | Decimal | — | FlowField: - sum("Service Ledger Entry".Quantity where("Entry Type" = const(Consume), "Service Item No. (Serviced)" = field("No."), "Service Contract No." = field("Contract Filter"), "Service Order No." = field("Service Order Filter"), Type = field("Type Filter"), "Posting Date" = field("Date Filter"))); not editable |
| 100 | Date Filter | Date | — | FlowFilter |
| 101 | Type Filter | Enum "Service Ledger Entry Type" | — | FlowFilter; enum [Enum 5907 "Service Ledger Entry Type"](../enum/5907.md) |
| 102 | Contract Filter | Code[20] | — | TableRelation [Table 5965 "Service Contract Header"](../table/5965.md) ("Service Contract Header"."Contract No." where("Contract Type" = const(Contract))); FlowFilter |
| 103 | Service Order Filter | Code[20] | — | TableRelation [Table 5900 "Service Header"](../table/5900.md) ("Service Header"."No."); FlowFilter |
| 104 | Sales/Serv. Shpt. Document No. | Code[20] | — | TableRelation [Table 111 "Sales Shipment Line"](../table/111.md), [Table 5991 "Service Shipment Line"](../table/5991.md) (if ("Shipment Type" = const(Sales)) "Sales Shipment Line"."Document No." else if ("Shipment Type" = const(Service)) "Service Shipment Line"."Document No.") |
| 105 | Sales/Serv. Shpt. Line No. | Integer | — | TableRelation [Table 111 "Sales Shipment Line"](../table/111.md), [Table 5991 "Service Shipment Line"](../table/5991.md) (if ("Shipment Type" = const(Sales)) "Sales Shipment Line"."Line No." where("Document No." = field("Sales/Serv. Shpt. Document No.")) else if ("Shipment Type" = const(Service)) "Service Shipment Line"."Line No." where("Document No." = field("Sales/Serv. Shpt. Document No."))) |
| 106 | Shipment Type | Enum "Service Item Shipment Type" | — | enum [Enum 5941 "Service Item Shipment Type"](../enum/5941.md) |
| 211 | Ship-to E-Mail | Text[80] | Ship-to Email <small>caption</small> | FlowField: lookup("Ship-to Address"."E-Mail" where("Customer No." = field("Customer No."), Code = field("Ship-to Code"))); not editable |
| 721 | Coupled to Dataverse | Boolean | Coupled to Dynamics 365 Sales <small>caption</small> | obsolete Removed 28.0; #if not CLEANSCHEMA28; FlowField: exist("CRM Integration Record" where("Integration ID" = field(SystemId), "Table ID" = const(Database::"Service Item"))); not editable |

## Keys

- Key1: No. (clustered)
- Key2: Item No., Serial No.
- Key3: Customer No., Ship-to Code, Item No., Serial No.
- Key4: Warranty Ending Date (Parts), Customer No., Ship-to Code
- Key5: Sales/Serv. Shpt. Document No., Sales/Serv. Shpt. Line No.
- Key6: Service Item Group Code

## Events published

- `OnAfterAssignItemValues(var ServiceItem: Record "Service Item"; var xServiceItem: Record "Service Item"; Item: Record Item; CurrFieldNo: Integer)` (integration)
- `OnAfterDeleteServItemComponents(var ServiceItem: Record "Service Item")` (integration)
- `OnBeforeValidatePreferredResource(var ServiceItem: Record "Service Item"; var IsHandled: Boolean)` (integration)
- `OnAfterValidatePreferredResource(var ServiceItem: Record "Service Item"; var ServiceItemGlobal: Record "Service Item")` (integration)
- `OnBeforeMessageIfServItemLinesExist(ServiceItem: Record "Service Item"; ChangedFieldName: Text[100]; var MessageText: Text; var ShowMessage: Boolean)` (integration)
- `OnBeforeServItemLinesExistErr(var ServiceItem: Record "Service Item"; ChangedFieldName: Text[100]; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckIfCanBeDeleted(var ServiceItem: Record "Service Item"; var Result: Text; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateSerialNo(var ServiceItem: Record "Service Item"; var xServiceItem: Record "Service Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateCustomerNo(var ServiceItem: Record "Service Item"; CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnCheckifActiveServContLineExistOnAfterSetFilters(var ServiceContractLine: Record "Service Contract Line")` (integration)
- `OnValidateCustomerNoOnAfterCalcShouldConfirmChange(var ServiceItem: Record "Service Item"; CurrFieldNo: Integer; var ShouldConfirmChange: Boolean)` (integration)
- `OnValidateShiptoCodeOnAfterCalcShouldConfirmChange(var ServiceItem: Record "Service Item"; CurrFieldNo: Integer; var ShouldConfirmChange: Boolean)` (integration)
- `OnBeforeValidateWarrantyStartingDateLabor(var ServiceItem: Record "Service Item"; var xServiceItem: Record "Service Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateWarrantyEndingDateLabor(var ServiceItem: Record "Service Item"; xServiceItem: Record "Service Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateShiptoCode(var ServiceItem: Record "Service Item"; xServiceItem: Record "Service Item"; var IsHandled: Boolean)` (integration)
- `OnValidateItemNoOnBeforeCheckCancelResSkillAssignment(var ServiceItem: Record "Service Item"; var ResourceSkillMgt: Codeunit "Resource Skill Mgt.")` (integration)
- `OnBeforeValidateWarrantyStartingDateParts(var ServiceItem: Record "Service Item"; var xServiceItem: Record "Service Item"; var Item: Record Item; var IsHandled: Boolean)` (integration)
- `OnBeforeInsertServiceItem(var ServiceItem: Record "Service Item"; var xServiceItem: Record "Service Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeDeleteServiceItem(var ServiceItem: Record "Service Item"; var ServItem: Record "Service Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateItemNo(var ServiceItem: Record "Service Item"; var xServiceItem: Record "Service Item"; var CancelResSkillAssignment: Boolean; var CancelResSkillChanges: Boolean; var ResourceSkill: Record "Resource Skill"; var IsHandled: Boolean)` (integration)
- `OnBeforeMsgIfServItemLinesExist(CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateWarrantyEndingDateParts(var ServiceItem: Record "Service Item"; xServiceItem: Record "Service Item"; var Item: Record Item; var IsHandled: Boolean)` (integration)
- `OnAfterServItemLinesExist(var ServiceItem: Record "Service Item"; var ServiceItemLine: Record "Service Item Line"; CurrFieldNo: Integer; var Result: Boolean)` (integration)

## Trigger event subscribers

- OnAfterDeleteEvent: [Codeunit 6459 "Serv. Document Attachment Mgt."](../codeunit/6459.md) DeleteAttachedDocumentsOnAfterDeleteServiceItem
- OnAfterInsertEvent: [Codeunit 6459 "Serv. Document Attachment Mgt."](../codeunit/6459.md) DocumentAttachmentFlow_ForServiceItemInsert
- OnAfterRenameEvent: [Codeunit 6459 "Serv. Document Attachment Mgt."](../codeunit/6459.md) MoveAttachedDocumentsOnAfterRenameServiceItem
- OnAfterValidateEvent(Item No.): [Codeunit 6459 "Serv. Document Attachment Mgt."](../codeunit/6459.md) DocumentAttachmentFlow_ForServiceItemItemNoChange
- OnBeforeInsertEvent: [Codeunit 5999 "Service Experience Tier"](../codeunit/5999.md) BlockInsertServiceItem

## Procedures

- `AssistEdit(OldServItem: Record "Service Item"): Boolean`
- `ServItemLinesExist(): Boolean`
- `MessageIfServItemLinesExist(ChangedFieldName: Text)`
- `CheckIfCanBeDeleted(): Text`
- `OmitAssignResSkills(IsSetOmitted: Boolean)`
- `ErrorIfBlockedForServiceContract()` (internal)
- `ErrorIfBlockedForAll()` (internal)

Plus 4 local procedures.

## Triggers

OnDelete, OnInsert, OnRename

## Relations

- drill-down page [Page 5981 "Service Item List"](../page/5981.md)
- lookup page [Page 5981 "Service Item List"](../page/5981.md)
- Sales/Serv. Shpt. Document No.: TableRelation [Table 111 "Sales Shipment Line"](../table/111.md) (conditional)
- Sales/Serv. Shpt. Line No.: TableRelation [Table 111 "Sales Shipment Line"](../table/111.md) (conditional)
- Address: CalcFormula [Table 18 "Customer"](../table/18.md)
- City: CalcFormula [Table 18 "Customer"](../table/18.md)
- Contact: CalcFormula [Table 18 "Customer"](../table/18.md)
- County: CalcFormula [Table 18 "Customer"](../table/18.md)
- Name: CalcFormula [Table 18 "Customer"](../table/18.md)
- Customer No.: TableRelation [Table 18 "Customer"](../table/18.md)
- Unit of Measure Code: TableRelation [Table 204 "Unit of Measure"](../table/204.md) (conditional)
- Ship-to Address: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to Address 2: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to City: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to Contact: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to Country/Region Code: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to County: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to E-Mail: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to Name: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to Name 2: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to Phone No.: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to Post Code: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to Code: TableRelation [Table 222 "Ship-to Address"](../table/222.md)
- Post Code: CalcFormula [Table 225 "Post Code"](../table/225.md)
- City: TableRelation [Table 225 "Post Code"](../table/225.md)
- Ship-to City: TableRelation [Table 225 "Post Code"](../table/225.md)
- Vendor Name: CalcFormula [Table 23 "Vendor"](../table/23.md)
- Vendor No.: TableRelation [Table 23 "Vendor"](../table/23.md)
- Item Description: CalcFormula [Table 27 "Item"](../table/27.md)
- No. Series: TableRelation [Table 308 "No. Series"](../table/308.md)
- Coupled to Dataverse: CalcFormula [Table 5331 "CRM Integration Record"](../table/5331.md)
- Variant Code: TableRelation [Table 5401 "Item Variant"](../table/5401.md)
- Unit of Measure Code: TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md) (conditional)
- Service Order Filter: TableRelation [Table 5900 "Service Header"](../table/5900.md)
- Service Item Group Code: TableRelation [Table 5904 "Service Item Group"](../table/5904.md)
- Comment: CalcFormula [Table 5906 "Service Comment Line"](../table/5906.md)
- Contract Cost: CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Cost Used: CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Invoiced Amount: CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Parts Used: CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Prepaid Amount: CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Resources Used: CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Total Qty. Consumed: CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Total Qty. Invoiced: CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Total Quantity: CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Usage (Amount): CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Usage (Cost): CalcFormula [Table 5907 "Service Ledger Entry"](../table/5907.md)
- Service Item Components: CalcFormula [Table 5941 "Service Item Component"](../table/5941.md)
- No. of Active Contracts: CalcFormula [Table 5964 "Service Contract Line"](../table/5964.md)
- Service Contracts: CalcFormula [Table 5964 "Service Contract Line"](../table/5964.md)
- Contract Filter: TableRelation [Table 5965 "Service Contract Header"](../table/5965.md)
- Sales/Serv. Shpt. Document No.: TableRelation [Table 5991 "Service Shipment Line"](../table/5991.md) (conditional)
- Sales/Serv. Shpt. Line No.: TableRelation [Table 5991 "Service Shipment Line"](../table/5991.md) (conditional)
- Service Price Group Code: TableRelation [Table 6080 "Service Price Group"](../table/6080.md)

## Referenced by

29 fields in 22 objects relate to this table (TableRelation or CalcFormula).

- [Table 5901 "Service Item Line"](../table/5901.md): Location of Service Item, Service Item No.
- [Table 5902 "Service Line"](../table/5902.md): Replaced Item No., Service Item No.
- [Table 5941 "Service Item Component"](../table/5941.md): No., Parent Service Item No.
- [Table 5989 "Service Shipment Item Line"](../table/5989.md): Location of Service Item, Service Item No.
- [Table 5991 "Service Shipment Line"](../table/5991.md): Replaced Item No., Service Item No.
- [Table 5993 "Service Invoice Line"](../table/5993.md): Replaced Item No., Service Item No.
- [Table 6012 "Service Line Archive"](../table/6012.md): Replaced Item No., Service Item No.
- [Table 5906 "Service Comment Line"](../table/5906.md): No.
- [Table 5907 "Service Ledger Entry"](../table/5907.md): Service Item No. (Serviced)
- [Table 5908 "Warranty Ledger Entry"](../table/5908.md): Service Item No. (Serviced)
- [Table 5914 "Loaner Entry"](../table/5914.md): Service Item No.
- [Table 5942 "Service Item Log"](../table/5942.md): Service Item No.
- [Table 5945 "Troubleshooting Setup"](../table/5945.md): No.
- [Table 5950 "Service Order Allocation"](../table/5950.md): Service Item No.
- [Table 5956 "Resource Skill"](../table/5956.md): No.
- [Table 5964 "Service Contract Line"](../table/5964.md): Service Item No.
- [Table 5971 "Filed Contract Line"](../table/5971.md): Service Item No.
- [Table 5995 "Service Cr.Memo Line"](../table/5995.md): Service Item No.
- [Table 6011 "Service Item Line Archive"](../table/6011.md): Service Item No.
- [Table 6014 "Service Order Allocat. Archive"](../table/6014.md): Service Item No.
- [Table 6084 "Service Line Price Adjmt."](../table/6084.md): Service Item No.
- [Table extension 6408 "Serv. Sales Line Archive"](../tableextension/6408.md): Service Item No.

## Pages and codeunits on this table

- [Page 5980 "Service Item Card"](../page/5980.md) (source table)
- [Page 5981 "Service Item List"](../page/5981.md) (source table)
- [Page 5982 "Service Item Statistics"](../page/5982.md) (source table)
- [Page 5983 "Service Item Trendscape"](../page/5983.md) (source table)
- [Page 5988 "Service Items"](../page/5988.md) (source table)
- [Page 6057 "Contract Line Selection"](../page/6057.md) (source table)
- [Codeunit 5921 "ServComponent-Copy from BOM"](../codeunit/5921.md) (codeunit runs on it)

## Extended by

- [Table extension 6612 "FS Service Item"](../tableextension/6612.md)

## 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 5906 "ServLogManagement"](../codeunit/5906.md) (3 calls: `OnDelete → ServItemDeleted`, `OnInsert → ServItemCreated`, `OnRename → ServItemNoChange`)
- [Codeunit 408 "DimensionManagement"](../codeunit/408.md) (2 calls: `OnDelete → DeleteDefaultDim`, `OnRename → RenameDefaultDim`)
- [Codeunit 6492 "Serv. Move Entries"](../codeunit/6492.md) (2 calls: `CheckIfCanBeDeleted → CheckIfServiceItemCanBeDeleted`, `OnDelete → MoveServiceItemLedgerEntries`)
- [Page 456 "No. Series"](../page/456.md) (2 calls: `AssistEdit → (object)`, `OnInsert → (object)`)
- [Codeunit 5931 "Resource Skill Mgt."](../codeunit/5931.md) (1 call: `OnDelete → DeleteServItemResSkills`)

## Across versions

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

## Deprecations

- field Coupled to Dataverse: Removed 28.0 (#if not CLEANSCHEMA28), "Field Service is moved to Field Service Integration app."

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