---
id: object/page/40016
type: object
title: Page 40016 "Add Custom Migration Mapping"
summary: Page 40016 "Add Custom Migration Mapping" in HybridBaseDeployment (Microsoft.DataMigration). Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - page
  - hybridbasedeployment
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: b46b1c6613ad5f94f0eacb635942ad253faaebf87f09f4f2646b0aa6f3593f42
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/HybridBaseDeployment/app/src/CustomMigration/TableMappings/AddCustomMigrationMapping.Page.al
    title: src/Apps/W1/HybridBaseDeployment/app/src/CustomMigration/TableMappings/AddCustomMigrationMapping.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/9700
    - change/bcapps/9200
object_type: page
object_id: 40016
name: Add Custom Migration Mapping
caption: Add migration table mappings for custom migration
namespace: Microsoft.DataMigration
app: HybridBaseDeployment
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: 1
  events: 0
  subscribers: 0
  controls: 8
  actions: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 1
  called_by: 0
  implements: 0
---

# Page 40016 "Add Custom Migration Mapping"

> Page 40016 "Add Custom Migration Mapping" in HybridBaseDeployment (Microsoft.DataMigration). Introduced in BC29, still in BC30.

HybridBaseDeployment · Microsoft.DataMigration · captioned "Add migration table mappings for custom migration" · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/HybridBaseDeployment/app/src/CustomMigration/TableMappings/AddCustomMigrationMapping.Page.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Caption | Add migration table mappings for custom migration |
| SourceTable | AllObj |
| PageType | List |
| ApplicationArea | All |
| Permissions | tabledata "NAV App Installed App" = r, tabledata AllObj = r, tabledata "Published Application" = r |

## Fields on this page

Layout controls in source order, grouped by the container they sit in. Shows: the table field a control is bound to (or its expression as written); ToolTip: the control's own, else the bound field's (marked).

| Group | Control | Shows | ToolTip |
|---|---|---|---|
| Replication settings | Mapping Type | `MappingType` | Specifies whether the mapping should be saved to Replication Table Mapping or Migration Setup Table Mapping. |
|  | Data per-company | `DataPerCompany` | Specifies if the table data is per company |
| CompanySettingsGroup | All companies | `AllCompanies` | Specifies if the table mapping applies to all companies. |
|  | Company name | `CompanyName` | Specifies the company name associated with this table mapping. The value should be blank if the table is per-database. |
| Replication settings | Preserve cloud data | `GlobalPreserveCloudData` | Specifies whether to preserve existing data in the cloud during replication for all selected tables. If set to true, existing data in the destination table will not be overwritten during replication, only new records will be added. |
| Source table | Name | `SourceTableName` | Specifies the name of the source table. Use underscores in place of special characters, similar to how table names appear in SQL Server Management Studio. |
| Target table | Table name | `TargetTableName` | Specifies the name of the target table. |
|  | Destination table name | `DestinationTableName` | Specifies the name of the destination table in the cloud database. Use underscores in place of special characters, similar to how table names appear in SQL Server Management Studio. |

## Procedures

1 local procedures, no public ones.

## Triggers

OnQueryClosePage, OnOpenPage, OnAfterGetRecord

## 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 40021 "Cloud Mig. Replicate Data Mgt."](../codeunit/40021.md) (1 call: `ValidateTargetTable → ValidateAndEnableTableReplication`)

## Recent changes

- 2026-07-27 [#9700 Rename TempCustomMigrationTableBuffer back to CustomMigrationTableBuffer](../../changes/bcapps/9700.md) (main, BC30, refactor)
- 2026-07-23 [#9200 Cloud Migration bug fixes (BC14 reimplementation, custom mapping, OnPrem dev companies)](../../changes/bcapps/9200.md) (main, BC30, fix)

## Across versions

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

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "page", object_name: "Add Custom Migration Mapping")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
