---
id: object/codeunit/8614
type: object
title: Codeunit 8614 "Config. XML Exchange"
summary: Codeunit 8614 "Config. XML Exchange" in Base Application (System.IO). 31 public procedures, 31 events. Present since at least BC23, still in BC30, changed in BC24, BC26-27.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "27"
  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: 8c19dd7567824accd8cff6fef9b7bc76aba04685798b9a67fa9d5eb4c5e643a1
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/RapidStart/ConfigXMLExchange.Codeunit.al
    title: src/Layers/W1/BaseApp/System/RapidStart/ConfigXMLExchange.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: 8614
name: Config. XML Exchange
namespace: System.IO
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "26"
  - "27"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 94
  events: 31
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 12
  called_by: 10
  implements: 0
---

# Codeunit 8614 "Config. XML Exchange"

> Codeunit 8614 "Config. XML Exchange" in Base Application (System.IO). 31 public procedures, 31 events. Present since at least BC23, still in BC30, changed in BC24, BC26-27.

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

## Events published

- `OnAfterAddFieldAttributes(var ConfigPackageField: Record "Config. Package Field"; var FieldNode: DotNet XmlNode)` (integration)
- `OnAfterAddTableAttributes(ConfigPackageTable: Record "Config. Package Table"; var PackageXML: DotNet XmlDocument; var TableNode: DotNet XmlNode)` (integration)
- `OnAfterExportPackageXMLDocument(var ConfigPackage: Record "Config. Package"; HideDialog: Boolean)` (integration)
- `OnAfterImportPackageXMLDocument(PackageCode: Code[20]; ExcelMode: Boolean; var Result: Boolean)` (integration)
- `OnBeforeApplyPackageFilter(ConfigPackageTable: Record "Config. Package Table"; var RecRef: RecordRef)` (integration)
- `OnBeforeCreateRecordNodes(var ConfigPackageTable: Record "Config. Package Table"; var ConfigPackageField: Record "Config. Package Field"; var TypeHelper: Codeunit "Type Helper"; var XMLDOMManagement: Codeunit "XML DOM Management"; var WorkingFolder: Text; var ExcelMode: Boolean; var Advanced: Boolean; var HideDialog: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeEvaluateMinCountForAsyncImport(var ConfigPackage: Record "Config. Package"; var Value: Text; var IsHandled: Boolean)` (integration)
- `OnBeforeGetXSDType(TableID: Integer; FieldID: Integer; var Result: Text[30]; var IsHandled: Boolean)` (integration)
- `OnBeforeGetElementName(var NameIn: Text[250])` (integration)
- `OnCreateRecordNodesOnAfterConfigPackageFieldSetFilters(ConfigPackageTable: Record "Config. Package Table"; var ConfigPackageField: Record "Config. Package Field")` (integration)
- `OnCreateRecordNodesOnBeforeRecRefLoopIteration(ConfigPackageTable: Record "Config. Package Table"; ConfigPackage: Record "Config. Package"; var RecRef: RecordRef; var ConfigProgressBar: Codeunit "Config. Progress Bar"; var IsHandled: Boolean)` (integration)
- `OnCreateRecordNodesOnAfterApplyPackageFilter(ConfigPackageTable: Record "Config. Package Table"; ConfigPackage: Record "Config. Package"; var RecRef: RecordRef)` (integration)
- `OnCreateRecordNodesOnAfterRecordProcessed(ConfigPackageTable: Record "Config. Package Table"; var ConfigPackageField: Record "Config. Package Field"; var RecRef: RecordRef; var PackageXML: DotNet XmlDocument; var RecordNode: DotNet XmlNode; var FieldNode: DotNet XmlNode; ExcelMode: Boolean)` (integration)
- `OnCreateRecordNodesOnNotFoundOnAfterConfigPackageFieldSetFilters(ConfigPackageTable: Record "Config. Package Table"; var ConfigPackageField: Record "Config. Package Field")` (integration)
- `OnCreateRecordNodesOnAfterNotFoundRecordProcessed(ConfigPackageTable: Record "Config. Package Table"; var ConfigPackageField: Record "Config. Package Field"; var RecRef: RecordRef; var PackageXML: DotNet XmlDocument; var RecordNode: DotNet XmlNode; var FieldNode: DotNet XmlNode; ExcelMode: Boolean)` (integration)
- `OnExportPackageXMLDocumentOnAfterSetAttributes(var ConfigPackage: Record "Config. Package"; var XMLDOMMgt: Codeunit "XML DOM Management"; var DocumentElement: DotNet XmlElement)` (integration)
- `OnExportPackageXMLDocumentOnBeforeConfigProgressBarInit(var ConfigPackageTable: Record "Config. Package Table"; var ConfigPackage: Record "Config. Package"; var XMLDOMMgt: Codeunit "XML DOM Management"; Advanced: Boolean; HideDialog: Boolean)` (integration)
- `OnExportPackageXMLOnAfterAssignToFile(ConfigPackage: Record "Config. Package"; var ToFile: Text[50])` (integration)
- `OnOnExportPackageXMLOnAfterAssignToFileOnAfterSetCompressedFileName(var CompressedFileName: Text; XMLDataFile: Text)` (integration)
- `OnFillPackageMetadataFromXMLOnAfterGetPackageTableValueFromXML(ConfigPackageTable: Record "Config. Package Table"; var TableNode: DotNet XmlNode)` (integration)
- `OnFillPackageDataFromXMLOnAfterConfigPackageDataInit(var ConfigPackageData: Record "Config. Package Data"; var ConfigPackageField: Record "Config. Package Field")` (integration)
- `OnFillPackageDataFromXMLOnAfterCalcShouldShowTableContainsRecordsQst(var ConfigPackageTable: Record "Config. Package Table"; PackageCode: Code[20]; TableID: Integer; var HideDialog: Boolean; var ShouldShowTableContainsRecordsQst: Boolean)` (integration)
- `OnFillPackageDataFromXMLOnAfterCalcShouldAssignValue(var ConfigPackageField: Record "Config. Package Field"; var ConfigPackageData: Record "Config. Package Data"; var ConfigPackageRecord: Record "Config. Package Record"; var TempConfigPackageField: Record "Config. Package Field" temporary; var ShouldAssignValue: Boolean)` (integration)
- `OnFillPackageDataFromXMLOnAfterConfigPackageDataInsert(var ConfigPackageData: Record "Config. Package Data"; var ConfigPackageField: Record "Config. Package Field"; ExcelMode: Boolean)` (integration)
- `OnImportPackageXMLDocumentOnDefaultDimOnAfterConfigPackageRecordSetFilters(var ConfigPackageRecord: Record "Config. Package Record"; ConfigPackageData: Record "Config. Package Data"; PackageCode: Code[20])` (integration)
- `OnCreateRecordNodesOnBeforeApplyPackageFilter(var ConfigPackageTable: Record "Config. Package Table"; var RecordReference: RecordRef; var IsHandled: Boolean)` (integration)
- `OnImportPackageXMLDocumentOnBeforeModify(var ConfigPackage: Record "Config. Package"; var DocumentElement: DotNet XmlElement)` (integration)
- `OnFillPackageMetadataFromXMLOnBeforeConfigPackageFieldModify(var ConfigPackageField: Record "Config. Package Field"; var Value: Text; var FieldNode: DotNet XmlNode)` (integration)
- `OnFormatFieldValueOnBeforeExitInnerText(var FieldRef: FieldRef; ConfigPackage: Record "Config. Package"; var InnerText: Text)` (integration)
- `OnAfterGetDefaultDimensionNoLinkFieldNumber(TableID: Integer; var FieldNumber: Integer)` (integration)
- `OnVerifyCanImportConfigurationPackage(var CanImportConfigurationPackage: Boolean)` (integration)

## Procedures

- `ApplyPackageFilter(ConfigPackageTable: Record "Config. Package Table"; var RecRef: RecordRef)`
- `ExportPackageXMLToStream(ConfigPackage: Record "Config. Package"; PackageOutStream: OutStream)`: Export the provided configuration package to an OutStream.
- `ExportPackage(ConfigPackage: Record "Config. Package")`
- `ExportPackageXML(var ConfigPackageTable: Record "Config. Package Table"; XMLDataFile: Text): Boolean`
- `ExportPackageXMLDocument(var PackageXML: DotNet XmlDocument; var ConfigPackageTable: Record "Config. Package Table"; ConfigPackage: Record "Config. Package"; Advanced: Boolean)`
- `GetImportedPackageCode(): Code[20]`
- `ImportPackageXMLFromClient(): Boolean`
- `ImportPackageXML(XMLDataFile: Text): Boolean`
- `ImportPackageXMLFromStream(InStream: InStream): Boolean`
- `ImportPackageXMLWithCodeFromStream(InStream: InStream; PackageCode: Code[20]): Boolean`
- `ImportPackageXMLDocument(PackageXML: DotNet XmlDocument; PackageCode: Code[20]): Boolean`
- `GetTableStatisticsForTelemetry(TableNode: DotNet XmlNode; var TableName: Text; var RecordCount: Integer; var TotalTableFields: Integer; var ImportedTableFields: Integer)` (internal)
- `ImportTableFromXMLNode(var TableNode: DotNet XmlNode; var PackageCode: Code[20])`
- `GetAttribute(AttributeName: Text[1024]; var XMLNode: DotNet XmlNode): Text[1000]`
- `GetElementName(NameIn: Text[250]): Text[250]`
- `GetFieldElementName(NameIn: Text[250]): Text[250]`
- `GetTableElementName(NameIn: Text[250]): Text[250]`
- `GetPackageCode(PackageXML: DotNet XmlDocument): Code[20]`
- `GetMediaFolder(var MediaFolderPath: Text; SourcePath: Text): Boolean`
- `GetMediaFolderName(): Text`
- `GetXSDType(TableID: Integer; FieldID: Integer): Text[30]`
- `SetAdvanced(NewAdvanced: Boolean)`
- `SetCalledFromCode(NewCalledFromCode: Boolean)`
- `SetExcelMode(NewExcelMode: Boolean)`
- `SetHideDialog(NewHideDialog: Boolean)`
- `SetExportFromWksht(NewExportFromWksht: Boolean)`
- `SetPrefixMode(PrefixMode: Boolean)`
- `TableObjectExists(TableId: Integer): Boolean`
- `DecompressPackage(ServerFileName: Text): Text`
- `DecompressPackageToBlob(var TempBlob: Codeunit "Temp Blob"; var TempBlobUncompressed: Codeunit "Temp Blob")`
- `GetFileDialogFilter(): Text`

Plus 32 local procedures.

## Triggers

OnRun

## Calls

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

- [Codeunit 419 "File Management"](../codeunit/419.md) (19 calls: `DecompressPackage → ServerTempFileName`, `ExportPackageXML → DownloadHandler`, `ExportPackageXML → GetDirectoryName`, …)
- [Codeunit 8611 "Config. Package Management"](../codeunit/8611.md) (19 calls: `AddDimPackageFields → InsertPackageField`, `ExportConfigPackageMediaSetToXML → InsertPackageFilter`, `ExportConfigPackageMediaSetToXML → InsertPackageTable`, …)
- [Codeunit 8615 "Config. Progress Bar"](../codeunit/8615.md) (11 calls: `CreateRecordNodes → Close`, `CreateRecordNodes → Init`, `CreateRecordNodes → Update`, …)
- [Codeunit 6224 "XML DOM Management"](../codeunit/6224.md) (9 calls: `AddFieldAttributes → AddAttribute`, `CreateRecordNodes → AddAttribute`, `ExportPackageXMLDocument → AddAttribute`, …)
- [Codeunit 8616 "Config. Management"](../codeunit/8616.md) (9 calls: `AddDimPackageFields → DimensionFieldID`, `AddDimPackageFields → IsDefaultDimTable`, `AddDimPackageFields → IsDimSetIDTable`, …)
- [Codeunit 4100 "Temp Blob"](../codeunit/4100.md) (6 calls: `ConvertBlobToBase64String → CreateInStream`, `ConvertBlobToBase64String → FromFieldRef`, `DecompressPackageToBlob → CreateInStream`, …)
- [Codeunit 8617 "Config. Validate Management"](../codeunit/8617.md) (5 calls: `AddDimensionFields → CheckName`, `AddDimensionFieldsWhenProcessingOrder → CheckName`, `FillPackageDataFromXML → EvaluateValue`, …)
- [Codeunit 10 "Type Helper"](../codeunit/10.md) (2 calls: `CreateRecordNodes → GetField`, `FormatFieldValue → FormatDate`)
- [Codeunit 4110 "Base64 Convert"](../codeunit/4110.md) (2 calls: `ConvertBlobToBase64String → ToBase64`, `GetConfigPackageDataValue → FromBase64`)
- [Codeunit 490 "Parallel Session Management"](../codeunit/490.md) (2 calls: `ImportPackageXMLDocument → NewSessionRunCodeunitWithBlob`, `ImportPackageXMLDocument → WaitForAllToFinish`)
- [Codeunit 8619 "Config. Pckg. Compression Mgt."](../codeunit/8619.md) (2 calls: `DecompressPackage → ServersideDecompress`, `ExportPackageXML → ServersideCompress`)
- [Codeunit 8703 "Feature Telemetry"](../codeunit/8703.md) (2 calls: `ExportPackageXMLDocument → LogUptake`, `ImportPackageXMLDocument → LogUptake`)

## Called by

- [Codeunit 8618 "Config. Excel Exchange"](../codeunit/8618.md) (9 calls: `AddPackageAndTableInformation → GetElementName`, `CreateTableColumnNames → GetElementName`, `CreateTableColumnNames → GetXSDType`, …)
- [Table 8627 "Config. Setup"](../table/8627.md) (8 calls: `DecompressPackage → DecompressPackage`, `DecompressPackageToBlob → DecompressPackageToBlob`, `ImportPackage → ImportPackageXML`, …)
- [Codeunit 18 "Financial Report Mgt."](../codeunit/18.md) (3 calls: `XMLExchangeExport → ExportPackage`, `XMLExchangeImport → GetImportedPackageCode`, `XMLExchangeImport → ImportPackageXMLFromClient`)
- [Codeunit 5432 "Automation - Import RSPackage"](../codeunit/5432.md) (3 calls: `OnRun → DecompressPackageToBlob`, `OnRun → ImportPackageXMLWithCodeFromStream`, `OnRun → SetHideDialog`)
- [Table 333 "Column Layout Name"](../table/333.md) (3 calls: `XMLExchangeExport → ExportPackage`, `XMLExchangeImport → GetImportedPackageCode`, `XMLExchangeImport → ImportPackageXMLFromClient`)
- [Table 84 "Acc. Schedule Name"](../table/84.md) (3 calls: `Export → ExportPackage`, `Import → GetImportedPackageCode`, `Import → ImportPackageXMLFromClient`)
- [Codeunit 8626 "Config. Import Table in Backgr"](../codeunit/8626.md) (2 calls: `OnRun → ImportTableFromXMLNode`, `OnRun → SetHideDialog`)
- [Table 8613 "Config. Package Table"](../table/8613.md) (2 calls: `GetNoOfDatabaseRecords → TableObjectExists`, `GetNoOfDatabaseRecordsText → TableObjectExists`)
- [Table 8616 "Config. Package Field"](../table/8616.md) (2 calls: `GetElementName → GetElementName`, `GetUniqueElementName → GetElementName`)
- [Page 1181 "Data Privacy ListPage"](../page/1181.md) (1 call: `GeneratePreviewData → ApplyPackageFilter`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24, BC26-27

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