---
id: object/table/5901
type: object
title: Table 5901 "Service Item Line"
summary: Table 5901 "Service Item Line" in Base Application (Microsoft.Service.Document). 63 fields, 25 public procedures, 86 events. Present since at least BC23, still in BC30, changed in BC24-28, BC30.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "30"
  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: bfe9b0d977bb4b5c419277744213b9249c3f40d45cf7f4bb084b2ab9cfb2ff88
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Service/Document/ServiceItemLine.Table.al
    title: src/Layers/W1/BaseApp/Service/Document/ServiceItemLine.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/value-chain-howto-service
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/sustainability-management/sustainability-value-chain
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/12290
object_type: table
object_id: 5901
name: Service Item Line
namespace: Microsoft.Service.Document
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"
  - "30"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 63
  procedures: 126
  events: 86
  subscribers: 0
relations:
  out: 34
  referenced_by: 9
  pages: 6
  extended_by: 2
  event_subscribers: 2
  calls: 10
  called_by: 0
  implements: 0
---

# Table 5901 "Service Item Line"

> Table 5901 "Service Item Line" in Base Application (Microsoft.Service.Document). 63 fields, 25 public procedures, 86 events. Present since at least BC23, still in BC30, changed in BC24-28, BC30.

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

Learn documents this table through its pages: [Page 5902 "Service Order Subform"](../page/5902.md) (1 Learn page).

## Properties

| Property | Value |
|---|---|
| Caption | Service Item Line |
| DataClassification | CustomerContent |
| Permissions | TableData "Loaner Entry" = rimd, TableData "Service Order Allocation" = rimd |

## 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 | Document No. | Code[20] | Specifies the number of the service order linked to this service item line. | TableRelation [Table 5900 "Service Header"](../table/5900.md) ("Service Header"."No." where("Document Type" = field("Document Type"))); not editable |
| 2 | Line No. | Integer | Specifies the number of the line. |  |
| 3 | Service Item No. | Code[20] | Specifies the service item number registered in the Service Item table. | TableRelation [Table 5940 "Service Item"](../table/5940.md) (if ("Document Type" = filter(<> "Credit Memo")) "Service Item"."No." where(Blocked = filter(<> All)) else if ("Document Type" = filter("Credit Memo")) "Service Item"."No.") |
| 4 | Service Item Group Code | Code[10] | Specifies the code of the service item group for this item. | TableRelation [Table 5904 "Service Item Group"](../table/5904.md) ("Service Item Group".Code) |
| 5 | Item No. | Code[20] | Specifies the item number linked to this service item. | TableRelation if ("Document Type" = filter(<> "Credit Memo")) Item."No." where(Blocked = const(false), "Service Blocked" = const(false)) else if ("Document Type" = filter("Credit Memo")) Item."No." where(Blocked = const(false)) |
| 6 | Serial No. | Code[50] | Specifies the serial number of this item. |  |
| 7 | Description | Text[100] | Specifies a description of this service item. |  |
| 8 | Description 2 | Text[50] | Specifies an additional description of this item. |  |
| 9 | Repair Status Code | Code[10] | Specifies the repair status of this service item. | TableRelation [Table 5927 "Repair Status"](../table/5927.md) (Repair Status) |
| 10 | Priority | Enum "Service Priority" | Specifies the service priority for this item. | enum [Enum 5903 "Service Priority"](../enum/5903.md) |
| 11 | Response Time (Hours) | Decimal | Specifies the estimated hours from order creation, to the time when the repair status of the item line changes from Initial, to In Process. <small>via [Page 5902 "Service Order Subform"](../page/5902.md)</small> |  |
| 12 | Response Date | Date | Specifies the estimated date when service should start on this service item line. |  |
| 13 | Response Time | Time | Specifies the estimated time when service should start on this service item. |  |
| 14 | Starting Date | Date | Specifies the date when service on this item began and when the repair status changed to In process. |  |
| 15 | Starting Time | Time | Specifies the time when service on this item began and when the repair status changed to In process. |  |
| 16 | Finishing Date | Date | Specifies the finishing date of the service and when the repair status of this item changes to Finished. |  |
| 17 | Finishing Time | Time | Specifies the finishing time of the service and when the repair status of this item changes to Finished. |  |
| 18 | Service Shelf No. | Code[10] | Specifies the number of the service shelf this item is stored on. | TableRelation [Table 5929 "Service Shelf"](../table/5929.md) (Service Shelf) |
| 19 | Warranty Starting Date (Parts) | Date | Specifies the starting date of the spare parts warranty for this item. <small>via [Page 5902 "Service Order Subform"](../page/5902.md)</small> |  |
| 20 | Warranty Ending Date (Parts) | Date | Specifies the ending date of the spare parts warranty for this item. <small>via [Page 5902 "Service Order Subform"](../page/5902.md)</small> |  |
| 21 | Warranty | Boolean | Specifies that warranty on either parts or labor exists for this item. |  |
| 22 | Warranty % (Parts) | Decimal | Specifies the percentage of spare parts costs covered by the warranty for this item. <small>via [Page 5902 "Service Order Subform"](../page/5902.md)</small> |  |
| 23 | Warranty % (Labor) | Decimal | Specifies the percentage of labor costs covered by the warranty for this item. <small>via [Page 5902 "Service Order Subform"](../page/5902.md)</small> |  |
| 24 | Warranty Starting Date (Labor) | Date | Specifies the starting date of the labor warranty for this item. <small>via [Page 5902 "Service Order Subform"](../page/5902.md)</small> |  |
| 25 | Warranty Ending Date (Labor) | Date | Specifies the ending date of the labor warranty for this item. <small>via [Page 5902 "Service Order Subform"](../page/5902.md)</small> |  |
| 26 | Contract No. | Code[20] | Specifies the number of the service contract associated with the item or service on the line. | TableRelation [Table 5965 "Service Contract Header"](../table/5965.md) ("Service Contract Header"."Contract No." where("Contract Type" = const(Contract))) |
| 27 | Location of Service Item | Text[30] | Specifies the code of the location of this item. | FlowField: lookup("Service Item"."Location of Service Item" where("No." = field("Service Item No."))); not editable |
| 28 | Loaner No. | Code[20] | Specifies the number of the loaner that has been lent to the customer in the service order to replace this item. | TableRelation Loaner."No." |
| 29 | Vendor No. | Code[20] | Specifies the number of the vendor of this item. | TableRelation [Table 23 "Vendor"](../table/23.md) |
| 30 | Vendor Item No. | Text[50] | Specifies the number that the vendor uses for this item. |  |
| 31 | Fault Reason Code | Code[10] | Specifies the fault reason code for the item. | TableRelation [Table 5917 "Fault Reason Code"](../table/5917.md) (Fault Reason Code) |
| 32 | Service Price Group Code | Code[10] | Specifies the code of the service price group associated with the item. | TableRelation [Table 6080 "Service Price Group"](../table/6080.md) (Service Price Group) |
| 33 | Fault Area Code | Code[10] | Specifies the fault area code for this item. | TableRelation [Table 5915 "Fault Area"](../table/5915.md) (Fault Area) |
| 34 | Symptom Code | Code[10] | Specifies the symptom code for this item. | TableRelation [Table 5916 "Symptom Code"](../table/5916.md) (Symptom Code) |
| 35 | Fault Code | Code[10] | Specifies the fault code for this item. | TableRelation [Table 5918 "Fault Code"](../table/5918.md) ("Fault Code".Code where("Fault Area Code" = field("Fault Area Code"), "Symptom Code" = field("Symptom Code"))) |
| 36 | Resolution Code | Code[10] | Specifies the resolution code for this item. | TableRelation [Table 5919 "Resolution Code"](../table/5919.md) (Resolution Code) |
| 37 | Fault Comment | Boolean | — | FlowField: exist("Service Comment Line" where("Table Name" = const("Service Header"), "Table Subtype" = field("Document Type"), "No." = field("Document No."), Type = const(Fault), "Table Line No." = field("Line No."))); not editable |
| 38 | Resolution Comment | Boolean | — | FlowField: exist("Service Comment Line" where("Table Name" = const("Service Header"), "Table Subtype" = field("Document Type"), "No." = field("Document No."), Type = const(Resolution), "Table Line No." = field("Line No."))); not editable |
| 40 | Variant Code | Code[10] | Specifies the variant of the item on the line. | TableRelation [Table 5401 "Item Variant"](../table/5401.md) (if ("Document Type" = filter(<> "Credit Memo")) "Item Variant".Code where("Item No." = field("Item No."), Blocked = const(false), "Service Blocked" = const(false)) else if ("Document Type" = filter("Credit Memo")) "Item Variant".Code where("Item No." = field("Item No."), Blocked = const(false))) |
| 41 | Service Item Loaner Comment | Boolean | — | FlowField: exist("Service Comment Line" where("Table Name" = const("Service Header"), "Table Subtype" = field("Document Type"), "No." = field("Document No."), Type = const("Service Item Loaner"), "Table Line No." = field("Line No."))); not editable |
| 42 | Actual Response Time (Hours) | Decimal | — |  |
| 43 | Document Type | Enum "Service Document Type" | Specifies whether the service document is a service order or service quote. | enum [Enum 5900 "Service Document Type"](../enum/5900.md); not editable |
| 44 | Serv. Price Adjmt. Gr. Code | Code[10] | — | TableRelation [Table 6082 "Service Price Adjustment Group"](../table/6082.md) (Service Price Adjustment Group); not editable |
| 45 | Adjustment Type | Option | Specifies the adjustment type for the line. | OptionCaption: Fixed,Maximum,Minimum; not editable |
| 46 | Base Amount to Adjust | Decimal | Specifies the amount that the service line, linked to this service item line, will be adjusted to. | not editable |
| 60 | No. of Active/Finished Allocs | Integer | — | FlowField: count("Service Order Allocation" where("Document Type" = field("Document Type"), "Document No." = field("Document No."), "Service Item Line No." = field("Line No."), "Resource No." = field("Resource Filter"), "Resource Group No." = field("Resource Group Filter"), "Allocation Date" = field("Allocatio...; not editable |
| 61 | No. of Allocations | Integer | Specifies the number of resource allocations with the allocation status specified in the Allocation Status Filter field. | FlowField: count("Service Order Allocation" where(Status = field("Allocation Status Filter"), "Resource No." = field("Resource Filter"), "Resource Group No." = field("Resource Group Filter"), "Document Type" = field("Document Type"), "Document No." = field("Document No."), "Service Item Line No." = field("Line...; not editable |
| 62 | No. of Previous Services | Integer | Specifies the number of services performed on service items with the same item and serial number as this service item. | FlowField: count("Service Shipment Item Line" where("Item No." = field("Item No."), "Serial No." = field("Serial No."))); not editable |
| 63 | Contract Line No. | Integer | — | TableRelation [Table 5964 "Service Contract Line"](../table/5964.md) ("Service Contract Line"."Line No." where("Contract Type" = const(Contract), "Contract No." = field("Contract No."))) |
| 64 | 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."))); not editable |
| 65 | Customer No. | Code[20] | Specifies the customer number associated with the service contract. | TableRelation Customer."No."; not editable |
| 91 | Date Filter | Date | — | FlowFilter |
| 92 | Resource Filter | Code[20] | — | TableRelation [Table 156 "Resource"](../table/156.md); FlowFilter |
| 93 | Allocation Date Filter | Date | — | FlowFilter |
| 94 | Repair Status Code Filter | Code[10] | — | TableRelation [Table 5927 "Repair Status"](../table/5927.md) ("Repair Status".Code); FlowFilter |
| 96 | Allocation Status Filter | Option | — | FlowFilter; OptionCaption: Nonactive,Active,Finished,Canceled,Reallocation Needed |
| 97 | Responsibility Center | Code[10] | — | TableRelation [Table 5714 "Responsibility Center"](../table/5714.md) (Responsibility Center); not editable |
| 98 | Service Order Filter | Code[20] | — | TableRelation [Table 5900 "Service Header"](../table/5900.md) ("Service Header"."No."); FlowFilter |
| 99 | Resource Group Filter | Code[20] | — | TableRelation [Table 152 "Resource Group"](../table/152.md) (Resource Group); FlowFilter |
| 100 | Shortcut Dimension 1 Code | Code[20] | — | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(1), Blocked = const(false))) |
| 101 | Shortcut Dimension 2 Code | Code[20] | — | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(2), Blocked = const(false))) |
| 130 | Release Status | Enum "Service Doc. Release Status" | — | enum [Enum 5916 "Service Doc. Release Status"](../enum/5916.md) |
| 480 | Dimension Set ID | Integer | — | TableRelation [Table 480 "Dimension Set Entry"](../table/480.md) (Dimension Set Entry); not editable |

## Keys

- Key1: Document Type, Document No., Line No. (clustered)
- Key2: Document No., Line No., Document Type
- Key3: Document Type, Document No., Service Item No., Contract No., Contract Line No.
- Key4: Service Item No.
- Key5: Document Type, Document No., Response Date, Response Time
- Key6: Response Date, Response Time, Priority
- Key7: Loaner No.
- Key8: Document Type, Document No., Starting Date, Starting Time
- Key9: Document Type, Document No., Finishing Date, Finishing Time
- Key10: Fault Reason Code
- Key11: Contract No.

## Events published

- `OnAfterInitDefaultDimensionSources(var ServiceItemLine: Record "Service Item Line"; var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]; FieldNo: Integer)` (integration)
- `OnAfterAssignItemValues(var ServiceItemLine: Record "Service Item Line"; var xServiceItemLine: Record "Service Item Line"; Item: Record Item; ServiceHeader: Record "Service Header"; CurrFieldNo: Integer)` (integration)
- `OnAfterSetHideDialogBox(var HideDialogBox: Boolean)` (integration)
- `OnAfterSetServItemInfo(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; ServiceItem: Record "Service Item")` (integration)
- `OnAfterSetUpNewLine(var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnAfterValidateShortcutDimCode(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnAfterUpdateServiceOrderChangeLog(ServiceItemLine: Record "Service Item Line"; var OldServiceItemLine: Record "Service Item Line")` (integration)
- `OnBeforeCheckRecreateServLines(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; var ServLine: Record "Service Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeEnsureCorrectStartingFinishingTimes(var ServiceItemLine: Record "Service Item Line"; ServiceHeader: Record "Service Header"; var IsHandled: Boolean)` (integration)
- `OnBeforeOnModify(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line")` (integration)
- `OnBeforeLendLoanerWithConfirmation(var ServiceItemLine: Record "Service Item Line"; errorOnDeny: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateStartFinishDateTime(var ServiceItemLine: Record "Service Item Line"; ServiceMgtSetup: Record "Service Mgt. Setup"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckServItemCustomer(ServiceHeader: Record "Service Header"; ServiceItem: Record "Service Item"; var IsHandled: Boolean)` (integration)
- `OnBefoerCheckCustomerNo(var ServiceHeader: Record "Service Header"; var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCreateDim(var ServiceItemLine: Record "Service Item Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeTempServLine(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; var ServLine2: Record "Service Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeShowUpdateExistingServiceLinesMessage(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeSetSecurityFilterOnRespCenter(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeSetFilterForType(var ServiceItemLine: Record "Service Item Line"; var ServiceLine: Record "Service Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateResponseTimeHours(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; SkipResponseTimeHrsUpdate: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateSerialNo(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateWarranty(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateWarrantyParts(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateWarrantyLabor(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateShortcutDimCode(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnCheckWarrantyOnAfterSetWarranty(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean; Date: Date)` (integration)
- `OnCheckWarrantyOnAfterSetWarrantyPartsLabor(var ServiceItemLine: Record "Service Item Line"; Date: Date; var WarrantyParts: Boolean; var WarrantyLabor: Boolean)` (integration)
- `OnLookupContractNoOnAfterServContractLineSetFilters(var ServiceContractLine: Record "Service Contract Line"; ServiceItemLine: Record "Service Item Line")` (integration)
- `OnRecreateServLine(var ServiceLine: Record "Service Line"; TempServiceLine: Record "Service Line" temporary)` (integration)
- `OnRepairStatusCodeValidateOnAfterSetRepairStatusInProgress(var ServiceItemLine: Record "Service Item Line"; var RepairStatusInProgress: Boolean)` (integration)
- `OnShowCommentsOnBeforeRunPageServiceCommentSheet(var ServiceItemLine: Record "Service Item Line"; var ServCommentLine: Record "Service Comment Line")` (integration)
- `OnUpdateStartFinishDateTimeOnAfterCalcShouldSetStartTime(var ServiceItemLine: Record "Service Item Line"; var ServiceHeader: Record "Service Header"; var ShouldSetStartTime: Boolean)` (integration)
- `OnUpdateStartFinishDateTimeOnAfterCalcShouldSetFinishingTime(var ServiceItemLine: Record "Service Item Line"; var ServiceHeader: Record "Service Header"; var ShouldSetFinishingTime: Boolean)` (integration)
- `OnValidateContractNoOnBeforeValidateServicePeriod(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; CurrentFieldNo: Integer; var IsHandled: Boolean; var ServiceHeader: Record "Service Header")` (integration)
- `OnValidateServiceItemNoOnAfterValidateServiceItemGroupCode(var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnValidateServiceItemNoOnBeforeCheckXRecServiceItemNo(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; var ServLine: Record "Service Line"; var ServItem: Record "Service Item"; var IsHandled: Boolean; var DoExit: Boolean)` (integration)
- `OnValidateServiceItemNoOnBeforeValidateServicePeriod(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateServiceItemNoOnBeforeEmptyContractNoFindServContractLine(var ServiceItemLine: Record "Service Item Line"; ServiceHeader: Record "Service Header"; ServiceItem: Record "Service Item"; var ShouldFindServContractLine: Boolean; var ServContractExist: Boolean; var ServiceContractLine: Record "Service Contract Line")` (integration)
- `OnBeforeCheckShipToCode(var ServiceItemLine: Record "Service Item Line"; ServItem: Record "Service Item"; ServHeader: Record "Service Header"; var IsHandled: Boolean)` (integration)
- `OnBeforeInitTableValuePair(var TableValuePair: Dictionary of [Integer, Code[20]]; FieldNo: Integer; var IsHandled: Boolean; var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnAfterInitTableValuePair(var TableValuePair: Dictionary of [Integer, Code[20]]; FieldNo: Integer; var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnValidateFinishingDateOnBeforeCheckIfLessThanOrderDate(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateStartingDateOnBeforeCheckIfLessThanOrderDate(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateResponseTimeOnBeforeCheckResponseTime(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateResponseDateOnBeforeCheckResponseDate(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateContractNoOnBeforeCheckCOntractStatusSigned(var ServiceContractLine: Record "Service Contract Line"; var IsHandled: Boolean)` (integration)
- `OnValidateStartingDateOnBeforeValidateStartingTime(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateFinishingDateOnBeforeValidateFinishingTime(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateRepairStatusCodeOnBeforeCheckOrderDateRepairStatusInProgress(var ServiceOrderAllocation: Record "Service Order Allocation"; var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateRepairStatusCodeInitialOnBeforeServOrderAllocModify(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateRepairStatusCodeInProgressOnBeforeServOrderAllocModify(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateRepairStatusCodeFinishedOnBeforeServOrderAllocModify(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnAfterUpdateResponseTimeHours(var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnBeforeCalculateDates(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckIfServHourExist(var ServiceItemLine: Record "Service Item Line"; var ContractNo: Code[20]; var IsHandled: Boolean)` (integration)
- `OnBeforeCalculateResponseDateTime(var ServiceItemLine: Record "Service Item Line"; OrderDate: Date; OrderTime: Time; var IsHandled: Boolean)` (integration)
- `OnCheckIfServHourexistOnBeforeFindServHour(var ServiceHour: Record "Service Hour")` (integration)
- `OnBeforeSetServContractExistTrue(var ServiceContractLine: Record "Service Contract Line"; var ServiceHeader: Record "Service Header"; var IsHandled: Boolean)` (integration)
- `OnValidateServiceItemNoOnBeforeCheckServContractExist(var ServiceContractLine: Record "Service Contract Line"; ServiceItem: Record "Service Item"; ServiceHeader: Record "Service Header"; var ServContractExist: Boolean; var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnShowDimensionsOnBeforeServiceItemLineModify(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line")` (integration)
- `OnBeforeCheckFinishingTime(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnUpdateAllLineDimOnBeforeGetResponse(var ServiceItemLine: Record "Service Item Line"; NewParentDimSetID: Integer; OldParentDimSetID: Integer; var IsHandled: Boolean)` (integration)
- `OnInsertOnBeforeCheckFirstServItemLine(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnInsertOnAfterGetServHeader(var ServiceItemLine: Record "Service Item Line"; ServiceHeader: Record "Service Header")` (integration)
- `OnInsertOnBeforeSetContractNo(var ServiceItemLine: Record "Service Item Line"; ServiceHeader: Record "Service Header"; var IsHandled: Boolean)` (integration)
- `OnInsertOnBeforeCreateAllocationEntry(var ServiceItemLine: Record "Service Item Line"; ServiceHeader: Record "Service Header"; var IsHandled: Boolean)` (integration)
- `OnInsertOnBeforeUpdatePriority(var ServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnValidateServiceItemNoOnAfterValidateWarrantyPartsLaborDates(var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnValidateServiceItemNoOnAfterSetFilterServContractLine(var ServiceItemLine: Record "Service Item Line"; var ServiceContractLine: Record "Service Contract Line")` (integration)
- `OnAfterValidateServiceItemNoOnBeforeUpdateResponseTimeHours(var ServiceItemLine: Record "Service Item Line"; xServiceItemLine: Record "Service Item Line")` (integration)
- `OnValidateRepairStatusCodeOnBeforeValidateStatus(var ServiceItemLine: Record "Service Item Line"; var ServiceHeader: Record "Service Header")` (integration)
- `OnBeforeValidateWarrantyStartingDateParts(var ServiceItemLine: Record "Service Item Line"; CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateWarrantyEndingDateParts(var ServiceItemLine: Record "Service Item Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateWarrantyStartingDateLabor(var ServiceItemLine: Record "Service Item Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateWarrantyEndingDateLabor(var ServiceItemLine: Record "Service Item Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateServicePriceGroupCode(var ServiceItemLine: Record "Service Item Line"; var xServiceItemLine: Record "Service Item Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckWarranty(var ServiceItemLine: Record "Service Item Line"; var xServiceItemLine: Record "Service Item Line"; Date: Date; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateServiceOrderChangeLog(var ServiceItemLine: Record "Service Item Line"; var OldServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeSetServItemInfo(var ServiceItemLine: Record "Service Item Line"; ServiceItem: Record "Service Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateContractNo(var ServiceItemLine: Record "Service Item Line"; var xServiceItemLine: Record "Service Item Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCalculateResponseTimeHours(var ServiceItemLine: Record "Service Item Line"; var ResponseTimeHours: Decimal; var IsHandled: Boolean)` (integration)
- `OnAfterCreateDim(var ServiceItemLine: Record "Service Item Line"; CallingFieldNo: Integer; xServiceItemLine: Record "Service Item Line"; DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])` (integration)
- `OnAfterCheckWarranty(var ServiceItemLine: Record "Service Item Line"; var xServiceItemLine: Record "Service Item Line"; Date: Date)` (integration)
- `OnShowCommentsOnCaseElse(var ServiceCommentLine: Record "Service Comment Line"; ServiceCommentLineType: Enum "Service Comment Line Type")` (integration)
- `OnValidateContractNoOnBeforeFindServiceContractLine(var ServiceContractLine: Record "Service Contract Line"; var ServiceItemLine: Record "Service Item Line")` (integration)
- `OnAssistEditSerialNoOnAfterSetDescription(var ServiceItemLine: Record "Service Item Line"; Item: Record Item)` (integration)

## Trigger event subscribers

- OnAfterDeleteEvent: [Codeunit 6610 "FS Int. Table Subscriber"](../codeunit/6610.md) HandleOnAfterDeleteServiceItemLine
- OnBeforeInsertEvent: [Codeunit 5999 "Service Experience Tier"](../codeunit/5999.md) BlockInsertServiceItemLine

## Procedures

- `SetUpNewLine()`
- `SetServHeader(var NewServHeader: Record "Service Header")`
- `GetServHeader()`
- `CheckWarranty(Date: Date)`
- `CalculateResponseDateTime(OrderDate: Date; OrderTime: Time)`
- `CheckServLineExist(): Boolean`
- `CheckIfServHourExist(ContractNo: Code[20]): Boolean`
- `UpdateStartFinishDateTime(DocumentType: Enum "Service Document Type"; DocumentNo: Code[20]; LineNo: Integer; StartingDate: Date; StartingTime: Time; FinishingDate: Date; FinishingTime: Time; Erasing: Boolean)`
- `AssistEditSerialNo()`
- `GetHideDialogBox(): Boolean`
- `SetHideDialogBox(DialogBoxVar: Boolean)`
- `ShowComments(Type: Option General,Fault,Resolution,Accessory,Internal,"Service Item Loaner")` (obsolete 27.0: Replaced by namesake procedure with Enum parameter)
- `ShowComments(ServiceCommentLineType: Enum "Service Comment Line Type")`
- `CalculateResponseTimeHours(): Decimal`
- `UpdateResponseTimeHours()`
- `UpdateServiceOrderChangeLog(var OldServItemLine: Record "Service Item Line")`
- `CreateDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])`
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`
- `ShowDimensions()`
- `UpdateAllLineDim(NewParentDimSetID: Integer; OldParentDimSetID: Integer)`
- `SetServItemInfo(ServItem: Record "Service Item")`
- `CheckTempDateErrorDate(Tempdate: Date; ErrorDate: Date; Caption1: Text[30]; Caption2: Text[30])`
- `LendLoanerWithConfirmation(errorOnDeny: Boolean)` (internal)
- `SetSecurityFilterOnRespCenter()`
- `CreateDimFromDefaultDim(FieldNo: Integer)`

Plus 15 local procedures.

## Triggers

OnDelete, OnInsert, OnModify, OnRename

## Relations

- drill-down page [Page 5903 "Service Item Lines"](../page/5903.md)
- lookup page [Page 5903 "Service Item Lines"](../page/5903.md)
- Resource Group Filter: TableRelation [Table 152 "Resource Group"](../table/152.md)
- Resource Filter: TableRelation [Table 156 "Resource"](../table/156.md)
- Ship-to Code: TableRelation [Table 222 "Ship-to Address"](../table/222.md)
- Vendor No.: TableRelation [Table 23 "Vendor"](../table/23.md)
- Shortcut Dimension 1 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Shortcut Dimension 2 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Dimension Set ID: TableRelation [Table 480 "Dimension Set Entry"](../table/480.md)
- Variant Code: TableRelation [Table 5401 "Item Variant"](../table/5401.md) (conditional)
- Responsibility Center: TableRelation [Table 5714 "Responsibility Center"](../table/5714.md)
- Document No.: TableRelation [Table 5900 "Service Header"](../table/5900.md)
- Service Order Filter: TableRelation [Table 5900 "Service Header"](../table/5900.md)
- Service Item Group Code: TableRelation [Table 5904 "Service Item Group"](../table/5904.md)
- Fault Comment: CalcFormula [Table 5906 "Service Comment Line"](../table/5906.md)
- Resolution Comment: CalcFormula [Table 5906 "Service Comment Line"](../table/5906.md)
- Service Item Loaner Comment: CalcFormula [Table 5906 "Service Comment Line"](../table/5906.md)
- Fault Area Code: TableRelation [Table 5915 "Fault Area"](../table/5915.md)
- Symptom Code: TableRelation [Table 5916 "Symptom Code"](../table/5916.md)
- Fault Reason Code: TableRelation [Table 5917 "Fault Reason Code"](../table/5917.md)
- Fault Code: TableRelation [Table 5918 "Fault Code"](../table/5918.md)
- Resolution Code: TableRelation [Table 5919 "Resolution Code"](../table/5919.md)
- Repair Status Code: TableRelation [Table 5927 "Repair Status"](../table/5927.md)
- Repair Status Code Filter: TableRelation [Table 5927 "Repair Status"](../table/5927.md)
- Service Shelf No.: TableRelation [Table 5929 "Service Shelf"](../table/5929.md)
- Location of Service Item: CalcFormula [Table 5940 "Service Item"](../table/5940.md)
- Service Item No.: TableRelation [Table 5940 "Service Item"](../table/5940.md) (conditional)
- No. of Active/Finished Allocs: CalcFormula [Table 5950 "Service Order Allocation"](../table/5950.md)
- No. of Allocations: CalcFormula [Table 5950 "Service Order Allocation"](../table/5950.md)
- Contract Line No.: TableRelation [Table 5964 "Service Contract Line"](../table/5964.md)
- Contract No.: TableRelation [Table 5965 "Service Contract Header"](../table/5965.md)
- No. of Previous Services: CalcFormula [Table 5989 "Service Shipment Item Line"](../table/5989.md)
- Service Price Group Code: TableRelation [Table 6080 "Service Price Group"](../table/6080.md)
- Serv. Price Adjmt. Gr. Code: TableRelation [Table 6082 "Service Price Adjustment Group"](../table/6082.md)

## Referenced by

9 fields in 6 objects relate to this table (TableRelation or CalcFormula).

- [Table 5950 "Service Order Allocation"](../table/5950.md): Repair Status, Service Item Description, Service Item Line No.
- [Table 5902 "Service Line"](../table/5902.md): Service Item Line Description, Service Item Line No.
- [Table 5900 "Service Header"](../table/5900.md): No. of Unallocated Items
- [Table 5990 "Service Shipment Header"](../table/5990.md): No. of Unallocated Items
- [Table 5992 "Service Invoice Header"](../table/5992.md): No. of Unallocated Items
- [Table 5994 "Service Cr.Memo Header"](../table/5994.md): No. of Unallocated Items

## Pages and codeunits on this table

- [Page 5902 "Service Order Subform"](../page/5902.md) (source table)
- [Page 5903 "Service Item Lines"](../page/5903.md) (source table)
- [Page 5906 "Service Item Worksheet"](../page/5906.md) (source table)
- [Page 5915 "Service Tasks"](../page/5915.md) (source table)
- [Page 5965 "Service Quote Subform"](../page/5965.md) (source table)
- [Page 9088 "Service Item Line FactBox"](../page/9088.md) (source table)

## Extended by

- [Table extension 6277 "Sust. Service Item Line"](../tableextension/6277.md)
- [Table extension 6620 "FS Service Item Line"](../tableextension/6620.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 408 "DimensionManagement"](../codeunit/408.md) (8 calls: `CreateDim → GetRecDefaultDimID`, `CreateDim → UpdateGlobalDimFromDimSetID`, `CreateDimFromDefaultDim → IsDefaultDimDefinedForTable`, …)
- [Codeunit 5900 "ServOrderManagement"](../codeunit/5900.md) (8 calls: `OnDelete → UpdatePriority`, `OnDelete → UpdateResponseDateTime`, `OnInsert → UpdatePriority`, …)
- [Codeunit 5906 "ServLogManagement"](../codeunit/5906.md) (7 calls: `OnDelete → ServItemOffServOrder`, `OnInsert → ServItemToServOrder`, `OnModify → ServItemOffServOrder`, …)
- [Codeunit 27 "Confirm Management"](../codeunit/27.md) (4 calls: `CheckRecreateServLines → GetResponseOrDefault`, `LendLoanerWithConfirmation → GetResponseOrDefault`, `SetFilterForType → GetResponseOrDefault`, …)
- [Codeunit 7600 "Calendar Management"](../codeunit/7600.md) (3 calls: `CalculateResponseDateTime → CalcTimeDelta`, `CalculateResponseDateTime → IsNonworkingDay`, `CalculateResponseDateTime → SetSource`)
- [Codeunit 5051 "SegManagement"](../codeunit/5051.md) (1 call: `OnInsert → LogDocument`)
- [Codeunit 5700 "User Setup Management"](../codeunit/5700.md) (1 call: `SetSecurityFilterOnRespCenter → GetServiceFilter`)
- [Codeunit 5901 "ServLoanerManagement"](../codeunit/5901.md) (1 call: `LendLoanerWithConfirmation → LendLoaner`)
- [Codeunit 5930 "ServAllocationManagement"](../codeunit/5930.md) (1 call: `OnInsert → CreateAllocationEntry`)
- [Page 5911 "Service Comment Sheet"](../page/5911.md) (1 call: `ShowComments → (object)`)

## Recent changes

- 2026-10-06 [#12290 Remove CLEAN27 from Service Management](../../changes/bcapps/12290.md) (main, BC30, refactor)

## Across versions

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

## Deprecations

- procedure ShowComments: Pending 27.0 (#if not CLEAN27), "Replaced by namesake procedure with Enum parameter"

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