---
id: object/codeunit/6610
type: object
title: Codeunit 6610 "FS Int. Table Subscriber"
summary: Codeunit 6610 "FS Int. Table Subscriber" in FieldServiceIntegration (Microsoft.Integration.DynamicsFieldService). 14 public procedures, 1 events, 33 event subscribers. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - codeunit
  - fieldserviceintegration
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: 3f260fcc298cfd7ae4ce7e3de0d80ba0d3dc04b6249f0bdf74f8a93d1502edca
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSIntTableSubscriber.Codeunit.al
    title: src/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSIntTableSubscriber.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/11094
    - change/bcapps/9322
object_type: codeunit
object_id: 6610
name: FS Int. Table Subscriber
namespace: Microsoft.Integration.DynamicsFieldService
app: FieldServiceIntegration
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: 87
  events: 1
  subscribers: 33
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 18
  called_by: 0
  implements: 0
---

# Codeunit 6610 "FS Int. Table Subscriber"

> Codeunit 6610 "FS Int. Table Subscriber" in FieldServiceIntegration (Microsoft.Integration.DynamicsFieldService). 14 public procedures, 1 events, 33 event subscribers. Introduced in BC29, still in BC30.

FieldServiceIntegration · Microsoft.Integration.DynamicsFieldService · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/FieldServiceIntegration/app/src/Codeunits/FSIntTableSubscriber.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| SingleInstance | true |

## Events published

- `OnSetUpNewLineOnNewLine(var JobJournalLine: Record "Job Journal Line"; var JobJournalTemplate: Record "Job Journal Template"; var JobJournalBatch: Record "Job Journal Batch"; var Handled: Boolean)` (integration)

## Event subscriptions

- OnEnsureConnectionSetupIsDisabled subscribes to Table "CDS Connection Setup" OnEnsureConnectionSetupIsDisabled
- OnEnableMultiCompanySynchronization subscribes to Table "Integration Table Mapping" OnEnableMultiCompanySynchronization
- IntegrationTableMappingOnAfterModifyEvent subscribes to Table "Integration Table Mapping" OnAfterModifyEvent
- OnBeforeTransferRecordFields subscribes to Codeunit "Integration Rec. Synch. Invoke" OnBeforeTransferRecordFields
- OnAfterTransferRecordFields subscribes to Codeunit "Integration Rec. Synch. Invoke" OnAfterTransferRecordFields
- OnTransferFieldData subscribes to Codeunit "Integration Record Synch." OnTransferFieldData
- OnFindNewValueForCoupledRecordPK subscribes to Codeunit "CRM Int. Table. Subscriber" OnFindNewValueForCoupledRecordPK
- HandleOnAfterInsertRecord subscribes to Codeunit "Integration Rec. Synch. Invoke" OnAfterInsertRecord
- HandleOnBeforeIgnoreUnchangedRecordHandled subscribes to Codeunit "Integration Rec. Synch. Invoke" OnBeforeIgnoreUnchangedRecordHandled
- HandleOnAfterUnchangedRecordHandled subscribes to Codeunit "Integration Rec. Synch. Invoke" OnAfterUnchangedRecordHandled
- HandleOnBeforeModifyRecord subscribes to Codeunit "Integration Rec. Synch. Invoke" OnBeforeModifyRecord
- HandleOnUpdateIntegrationRecordCoupling subscribes to Codeunit "Integration Rec. Synch. Invoke" OnUpdateIntegrationRecordCoupling
- AfterValidateLocationMandatory subscribes to Table "Inventory Setup" OnAfterValidateEvent (Location Mandatory)
- AddFieldServiceProductMappings subscribes to Codeunit "CRM Setup Defaults" OnResetItemProductMappingOnAfterInsertFieldsMapping
- HandleOnAfterModifyRecord subscribes to Codeunit "Integration Rec. Synch. Invoke" OnAfterModifyRecord
- HandleOnBeforeInsertRecord subscribes to Codeunit "Integration Rec. Synch. Invoke" OnBeforeInsertRecord
- OnSynchNAVTableToCRMOnBeforeCheckLatestModifiedOn subscribes to Codeunit "CRM Integration Table Synch." OnSynchNAVTableToCRMOnBeforeCheckLatestModifiedOn
- HandleOnDeletionConflictDetectedSetRecordStateAndSynchAction subscribes to Codeunit "Integration Rec. Synch. Invoke" OnDeletionConflictDetectedSetRecordStateAndSynchAction
- HandleOnAfterApplyUsage subscribes to Codeunit "Job Link Usage" OnAfterApplyUsage
- HandleOnAfterPostJnlLines subscribes to Codeunit "Job Jnl.-Post Batch" OnAfterPostJnlLines
- HandleOnHasCompanyIdField subscribes to Codeunit "CDS Integration Mgt." OnHasCompanyIdField
- HandleOnBeforeUncoupleRecord subscribes to Codeunit "Int. Rec. Uncouple Invoke" OnBeforeUncoupleRecord
- OnQueryPostFilterIgnoreRecord subscribes to Codeunit "CRM Integration Table Synch." OnQueryPostFilterIgnoreRecord
- LogTelemetryOnAfterInitSynchJob subscribes to Codeunit "Integration Table Synch." OnAfterInitSynchJob
- ServiceMgtSetupOnBeforeValidateOneServiceItemLinePerOrder subscribes to Table "Service Mgt. Setup" OnBeforeValidateEvent (One Service Item Line/Order)
- HandleOnIsCRMIntegrationRecord subscribes to Codeunit "CRM Integration Management" OnIsCRMIntegrationRecord
- HandleOnAfterDeleteServiceHeader subscribes to Table "Service Header" OnAfterDeleteEvent
- OnAfterStoreServiceLineArchive subscribes to Codeunit "Service Document Archive Mgmt." OnAfterStoreServiceLineArchive
- HandleOnAfterDeleteServiceItemLine subscribes to Table "Service Item Line" OnAfterDeleteEvent
- HandleOnAfterDeleteServiceLine subscribes to Table "Service Line" OnAfterDeleteEvent
- OnBeforeOpenCoupledNavRecordPage subscribes to Codeunit "CRM Integration Management" OnBeforeOpenCoupledNavRecordPage
- OnBeforeOpenRecordCardPage subscribes to Codeunit "CRM Integration Management" OnBeforeOpenRecordCardPage
- HandleOnBeforeFindCoupledToCRMField subscribes to Codeunit "CRM Integration Management" OnBeforeFindCoupledToCRMField

## Procedures

- `UpdateQuantities(var FSWorkOrderProduct: Record "FS Work Order Product"; var ServiceLine: Record "Service Line"; ToFieldService: Boolean)` (internal)
- `UpdateQuantities(var FSWorkOrderService: Record "FS Work Order Service"; var ServiceLine: Record "Service Line"; ToFieldService: Boolean)` (internal)
- `UpdateQuantities(FSBookableResourceBooking: Record "FS Bookable Resource Booking"; var ServiceLine: Record "Service Line")` (internal)
- `GetMaxQuantity(Quantity1: Decimal; Quantity2: Decimal): Decimal`
- `GetMaxQuantity(Quantity1: Decimal; Quantity2: Decimal; Quantity3: Decimal): Decimal`
- `SynchRecordsToIntegrationTable(var RecordsToSynchRecordRef: RecordRef; TargetTable: Integer; IgnoreChanges: Boolean; IgnoreSynchOnlyCoupledRecords: Boolean): Guid`
- `ArchiveServiceOrder(ServiceHeader: Record "Service Header"; ArchivedServiceOrders: List of [Code[20]])` (internal)
- `IgnorePostedJobJournalLinesOnQueryPostFilterIgnoreRecord(SourceRecordRef: RecordRef; var IgnoreRecord: Boolean)` (internal)
- `IgnoreArchievedServiceOrdersOnQueryPostFilterIgnoreRecord(SourceRecordRef: RecordRef; var IgnoreRecord: Boolean)` (internal)
- `IgnoreArchievedCRMWorkOrdersOnQueryPostFilterIgnoreRecord(SourceRecordRef: RecordRef; var IgnoreRecord: Boolean)` (internal)
- `IgnoreArchivedWorkOrderLinesOnQueryPostFilterIgnoreRecord(SourceRecordRef: RecordRef; var IgnoreRecord: Boolean)` (internal)
- `IgnoreServiceItemsByConvertToCustomerAssetFlag(SourceRecordRef: RecordRef; var IgnoreRecord: Boolean)` (internal) (obsolete 30.0: Remove calls to this procedure. Service items are always synchronized to Field Service customer assets; item-product synchronization disables customer asset conversion.)
- `MarkArchivedServiceOrder(ServiceHeader: Record "Service Header")` (internal)
- `MarkArchivedServiceOrderLine(var ServiceLine: Record "Service Line"; var ServiceLineArchive: Record "Service Line Archive")` (internal)

Plus 39 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 5340 "CRM Integration Table Synch."](../codeunit/5340.md) (6 calls: `OnSynchNAVTableToCRMOnBeforeCheckLatestModifiedOn → SynchRecordsToIntegrationTable`, `ResetFSWorkOrderIncidentFromServiceOrderItemLine → SynchRecordsToIntegrationTable`, `ResetServiceOrderItemLineFromFSWorkOrderIncident → SynchRecordsFromIntegrationTable`, …)
- [Codeunit 7200 "CDS Integration Mgt."](../codeunit/7200.md) (5 calls: `HandleOnBeforeUncoupleRecord → OnHasCompanyIdField`, `HandleOnBeforeUncoupleRecord → ResetCompanyId`, `OnEnableMultiCompanySynchronization → FindCompanyIdField`, …)
- [Codeunit 6611 "FS Setup Defaults"](../codeunit/6611.md) (4 calls: `AfterValidateLocationMandatory → ResetLocationMapping`, `AfterValidateLocationMandatory → ResetProjectJournalLineWOProductMapping`, `AfterValidateLocationMandatory → SetLocationFieldMapping`, …)
- [Codeunit 6615 "FS Integration Mgt."](../codeunit/6615.md) (4 calls: `HandleOnBeforeInsertRecord → GetDefaultWorkOrderIncident`, `LogTelemetryOnAfterInitSynchJob → ReturnIntegrationTypeLabel`, `ResetServiceOrderLineFromFSBookableResourceBooking → GetBookingStatusCompleted`, …)
- [Codeunit 5330 "CRM Integration Management"](../codeunit/5330.md) (3 calls: `HandleOnAfterApplyUsage → (object)`, `HandleOnAfterPostJnlLines → (object)`, `OnEnsureConnectionSetupIsDisabled → CheckCRMConnectionURL`)
- [Codeunit 5335 "Integration Table Synch."](../codeunit/5335.md) (3 calls: `SynchRecordsToIntegrationTable → BeginIntegrationSynchJob`, `SynchRecordsToIntegrationTable → EndIntegrationSynchJob`, `SynchRecordsToIntegrationTable → Synchronize`)
- [Codeunit 5344 "CRM Product Name"](../codeunit/5344.md) (3 calls: `HandleOnBeforeInsertRecord → CDSServiceName`, `OnEnableMultiCompanySynchronization → FSServiceName`, `SetJobJournalLineTypesAndNo → FSServiceName`)
- [Codeunit 1012 "Job Jnl.-Post Line"](../codeunit/1012.md) (2 calls: `ConditionallyPostJobJournalLine → RunWithCheck`, `PostJobJournalLine → RunWithCheck`)
- [Codeunit 8703 "Feature Telemetry"](../codeunit/8703.md) (2 calls: `LogTelemetryOnAfterInitSynchJob → LogUptake`, `LogTelemetryOnAfterInitSynchJob → LogUsage`)
- [Page 456 "No. Series"](../page/456.md) (2 calls: `SetDocumentNo → (object)`, `SetPostingDocumentNo → (object)`)
- [Codeunit 5334 "CRM Setup Defaults"](../codeunit/5334.md) (1 call: `AddFieldServiceProductMappings → InsertIntegrationFieldMapping`)
- [Codeunit 5342 "CRM Synch. Helper"](../codeunit/5342.md) (1 call: `HandleOnBeforeInsertRecord → FindRecordIDByPK`)
- [Codeunit 5345 "Integration Rec. Synch. Invoke"](../codeunit/5345.md) (1 call: `HandleOnDeletionConflictDetectedSetRecordStateAndSynchAction → PrepareNewDestination`)
- [Codeunit 5402 "Unit of Measure Management"](../codeunit/5402.md) (1 call: `SetJobJournalLineTypesAndNo → RoundAndValidateQty`)
- [Codeunit 6041 "Service Document Archive Mgmt."](../codeunit/6041.md) (1 call: `ArchiveServiceOrder → ArchServiceDocumentNoConfirm`)
- [Codeunit 7201 "CDS Integration Impl."](../codeunit/7201.md) (1 call: `SetCompanyId → CheckCompanyIdNoTelemetry`)
- [Page 5900 "Service Order"](../page/5900.md) (1 call: `OnBeforeOpenRecordCardPage → (object)`)
- [Page 6271 "Service Order Archive"](../page/6271.md) (1 call: `OpenServiceHeaderArchive → (object)`)

## Recent changes

- 2026-09-29 [#11094 [FS] Prevent duplicate Field Service customer assets during item synchronization](../../changes/bcapps/11094.md) (main, BC30, fix)
- 2026-07-15 [#9322 [FS Integration] SVCITEM-CUSTASSET mapping ignores "Convert to Customer Asset" flag — every Service Item synced to FS unconditionally](../../changes/bcapps/9322.md) (main, BC30, fix)

## Across versions

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

## Deprecations

- procedure IgnoreServiceItemsByConvertToCustomerAssetFlag: Pending 30.0, "Remove calls to this procedure. Service items are always synchronized to Field Service customer assets; item-product synchronization disables customer asset conversion."

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: "FS Int. Table Subscriber")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
