租户到租户迁移
租户到租户迁移功能允许您将环境从一个租户转移到另一个租户。 此功能支持将多个租户合并为一个租户并促进公司收购等方案。 环境实际上并没有移动,而是链接到另一个租户。 环境仍然存在,但不再是源租户的一部分。 它可以在目标租户下访问和管理。 在此迁移中,不会出现用户界面变化或版本变更。
赛前须知
在开始租户到租户迁移之前,请注意以下注意事项。
- 支持的环境类型:仅限生产环境和沙盒环境。
- 不支持的环境类型:不支持默认、开发者、试用和 Teams 环境类型。 不支持从政府社区云(GCC)到公有云,反之亦然。
- 不支持的组件包括 Dynamics 365 Customer Voice、Customer Service 全渠道、组件库、Dynamics 365 Customer Insights - Journeys 和 Dynamics 365 Customer Insights - Data。
- 对于 Power Apps、Power Automate、Power Pages 和 Microsoft Copilot Studio,在迁移前和迁移后步骤中都有具体要求。
- 链接到财务和运营组织的 Dataverse 组织不能迁移到其他租户。
- 您可能需要在租户间迁移后重新配置一些应用程序和设置,如 Microsoft Dynamics 365 for Outlook、服务器端同步、SharePoint 等。
- 创建和配置用户后,必须创建用户映射文件,本文稍后将对此进行介绍。
- 如果映射的用户在目标租户中有邮箱,在迁移过程中会自动配置该邮箱。 对于所有其他用户,需要重新配置邮箱。
- 如果目标租户
test@microsoft.com
使用了相同的邮箱,则默认使用该邮箱。 在租户到租户迁移之前,客户需要在目标租户上迁移和配置邮箱。 - 如果您使用的是默认的 onmicrosoft 域 (
test@sourcecompanyname.onmicrosoft.com
),迁移后的域名将更改为test@targetcompanyname.onmicrosoft.com
。 客户需要重新配置邮箱。 在连接到 Exchange Online 中了解有关配置邮箱的更多信息。
先决条件
在开始迁移过程之前,请确保完成以下先决条件。
- 在目标租户中创建用户,包括:
- 在 Microsoft 365 和 Microsoft Entra ID 中创建用户。
- 分配许可证。
- 您必须具有 Power platform 管理员或 Dynamics 365 管理员权限才能执行迁移。
- Power Platform 管理员的 PowerShell 模块是用于与管理员功能交互的推荐 PowerShell 模块。 了解更多信息,请参阅 Power Platform 管理员的 PowerShell 入门。
准备过程
迁移前,完成 Power Automate、Power Apps、Copilot Studio 和 Power Pages 的以下程序。 您还必须创建用户映射文件。
准备Power Automate
如果您的流已在 Dataverse 中定义,则无需额外工作。
任何需要迁移的 Power Automate 流都需要在源环境中将其定义添加到 Dataverse 解决方案中。 更多信息请参阅将现有云端流添加到解决方案中。 可以通过运行 Add-AdminFlowsToSolution cmdlet 来批量添加。
准备Power Apps
任何 Power Apps 必须手动导出。 我们不支持客户连接器、连接或网关的迁移。 如果您设置了这些组件中的任何一个,则必须在迁移后手动重新配置它们。
对于解决方案感知应用程序:
对于解决方案感知应用程序,请转到 Power Apps,导航到解决方案页面,然后导出所有应用程序和解决方案。 您可以单独导出它们,也可以将它们组合到一个解决方案中(如果尚未导出)。
导出后删除环境中的这些解决方案感知应用。
属于托管解决方案的应用只能通过删除解决方案来删除。
可以使用从此环节中删除选项,删除未托管解决方案中的应用程序。
重要提示
迁移之前未从环境中删除的解决方案感知画布应用、自定义页面或组件库在迁移完成后不起作用。
对于非解决方案感知应用程序:
转到 Power Apps,然后选择应用。
对于要移动的每个应用,选择更多命令,然后选择导出包(预览)。
填写执行应用导出所需的详细信息,然后选择导出。 导出完成后,将开始下载。
所生成的文件包含选定的应用包。
重复上述步骤,直到所有应用全部导出。
从环境中删除这些非解决方案感知应用程序
管理员还可以通过完成以下步骤,从管理门户的列表中查看或删除画布应用程序。
- 转到 Power Platform 管理中心,然后从管理中选择环境。
- 在资源操作下,选择 Power Apps 查看并删除它们。
准备Copilot Studio
任何 Copilot Studio 机器人都必须手动导出。 在迁移期间或之后,必须手动重新配置聊天机器人的某些相关组件。 例如,必须在迁移期间或迁移后手动重新配置连接、环境变量和自定义连接器。
聊天机器人可识别解决方案。 转到 Power Apps,导航到解决方案页面,然后导出所有聊天机器人解决方案,既可以单独导出,也可以将它们组合到一个解决方案中。 更多信息,请参阅使用解决方案导出和导入机器人。
准备Power Pages
必须对环境中的每个网站执行以下步骤。
创建用户映射文件
为要传输到目标环境的源环境创建用户映射文件。 请务必注意,每个环境都需要一个单独的映射文件。 请确保用户在原始租户和目标租户中都存在并获得授权,因为这是成功迁移所必需的。 用户的域可能因源和目标而异,前提是它们处于活动状态。
创建名为 usermapping.csv 的用户映射文件。
备注
文件名区分大小写。 确保记录用逗号分隔,而不是分号。
准确记录用户的详细信息,包括其源和目标电子邮件 ID。 确保标题前后没有多余的空格。 映射文件应如下所示:
Source 目标 SourceUser@sourcetenant.com
DestinationUser@targettenant.com
对于完全访问权限用户:
访问源环境。
使用高级查找查找用户。
选择使用保存的视图 > 完全访问权限用户,然后选择编辑列。
删除全名之外的所有列。
选择添加列 > Windows Live ID。
选择确定 > 结果查看完全访问权限用户的列表。
选择所有记录,在功能区中选择导出用户,然后选择静态工作表。
如有可能,请对目标租户执行上面的步骤 1 到 7。 您现在应该有两个单独的 Excel 工作表 - 一个用于源,一个用于目标租户。
打开 Excel 文件进行编辑。
从源 Excel 工作表开始,将 Windows Live ID 列下的记录复制到记事本中。 不要复制标头。
保存记事本文件。
在相应源 UPN 右侧的同一记事本文档中输入目标 Windows Live ID(UPN)。 请务必用逗号(,)分隔源 UPN 和目标 UPN。
示例:
-
user001@source.com
,user001@destination.com
-
user002@source.com
,user002@destination.com
-
user003@source.com
,user003@destination.com
-
将文件保存为 CSV。
对于管理员访问权限用户:
- 访问源环境。
- 使用高级查找查找用户。
- 选择使用保存的视图 > 管理员访问权限用户,然后选择结果查看管理员访问权限用户的列表。
- 如果您决定不包括这些用户的任何一个,请跳过以下步骤。 否则,要在映射文件中包含这些用户,请执行以下操作:
- 在目标租户中找到相应的用户。
- 确保为目标租户中的目标用户分配了有效的许可证。
备注
如果没有为目标用户分配任何许可证,迁移将失败。
- 保存映射了完全访问权限用户和管理员访问权限用户的 CSV 文件。
迁移
在继续迁移之前,请确保您已查看并完成准备过程。 完成准备过程后,请完成以下部分进行迁移。
为 Power Platform 管理员(源管理员和目标管理员)安装 PowerShell
Power Platform 管理员的 PowerShell 模块是用于与管理员功能交互的推荐 PowerShell 模块。 有关帮助您开始使用 PowerShell for Power Platform Administrators 模块的信息,请转到开始使用 PowerShell for Power Platform Administrators 和 安装 PowerShell for Power Platform Administrators 。
使用以下命令之一安装或更新必要的模块:
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
Update-Module -Name Microsoft.PowerApps.Administration.PowerShell
在 Windows 上安装 Azure PowerShell(源管理员和目标管理员)
Azure PowerShell 模块是一个汇总模块。 安装 Azure PowerShell 模块将下载正式发布的模块,并使其 cmdlet 可供使用。 更多信息,请参阅在 Windows 上安装 Azure PowerShell。
使用 Install-Module cmdlet 安装 Azure PowerShell 模块:
Install-Module -Name Az -Repository PSGallery -Force
登录 Microsoft Power Platform(源管理员和目标管理员)
登录到 Microsoft Power Platform。 此步骤允许管理员验证和访问 Power Platform 环境。
Add-PowerAppsAccount
提交迁移请求(源管理员)
要启动租户到租户的迁移,源租户的 Dynamics 365 或 Power Platform 管理员必须使用以下命令向目标租户提交请求,并提供环境名称 ID 和租户 ID。
您必须拥有 Power Platform 管理员或 Dynamics 365 管理员凭据才能完成此步骤。
TenantToTenant-SubmitMigrationRequest –EnvironmentName {EnvironmentId} -TargetTenantID {TenantID}
您可以使用以下命令查看状态和 MigrationID。
TenantToTenant-ViewMigrationRequest
备注
记录 MigrationID,该 ID 将用于进一步的迁移命令。 源租户迁移 ID 不同于目标租户迁移 ID
查看和批准迁移请求(目标管理员)
目标租户的管理员应运行以下命令来查看所有迁移请求和状态。 管理员可以查看所有迁移请求以及批准或拒绝的选项。
Add-PowerAppsAccount
TenantToTenant-ViewApprovalRequest
TenantToTenant-ManageMigrationRequest -MigrationId {MigrationId from above command to approve or deny}
请求获得批准后,目标租户的管理员可以通知源租户的管理员继续执行下一步的迁移。
生成共享访问签名(SAS)URL(源管理员)
此步骤涉及创建 SAS URL,稍后将用于上传用户映射文件。 执行以下 PowerShell 命令,用实际环境 ID 替换 EnvironmentId。
GenerateResourceStorage-PowerAppEnvironment –EnvironmentName {EnvironmentId}
重要提示
确保环境处于非管理模式下,且用户在环境中已分配基本用户角色。
示例输出
Code :
Description :
Headers :
Error :
Errors :
Internal : @{sharedAccessSignature=https://dynamics.blob.core.windows.net/20240604t000000z73e18df430fe40059290dsddc25d783?sv=2018-03-28&sr=c&si=SASpolicyXXRRRX}
上传用户映射文件(源管理员)
下一步涉及将用户映射文件传输到先前建立的 SAS URL。 为此,请在 Windows PowerShell ISE 中执行以下命令,确保参数 SASUri 和 FileToUpload 包含适当的环境信息。 此步骤对于在系统中准确上传用户映射至关重要。
备注
运行上述脚本需要安装 Azure 模块。 使用 Windows PowerShell ISE 完成以下步骤。
$SASUri ="Update the SAS Uri from previous step”
$Uri = [System.Uri] $SASUri
$storageAccountName = $uri.DnsSafeHost.Split(".")[0]
$container = $uri.LocalPath.Substring(1)
$sasToken = $uri.Query
# File to upload
# Note that the file name should be usermapping.csv (case sensitive) with comma separated values.
$fileToUpload = 'C:\filelocation\usermapping.csv'
# Create a storage context
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
# Upload the file to Azure Blob Storage
Set-AzStorageBlobContent -File $fileToUpload -Container $container -Context $storageContext -Force
准备环境迁移(源管理)
以下步骤涉及执行全面验证,以确保用户映射文件中列出的每个用户都经过验证,并且当前在目标租户中处于活动状态。
可以使用源租户中的“TenantToTenant-ViewMigrationRequest”命令查看 MigrationId。
TenantToTenant-PrepareMigration
-MigrationId {MigrationId}
-TargetTenantId {TargetTenantId}
-ReadOnlyUserMappingFileContainerUri {SasUri}
备注
在传递 SASUri 值时,必须提供这样的参数:https://dynamics.blob.core.windows.net/20240604t000000z73e18df430fe40059290dsddc25d783
。
示例输出
Code : 202
Description : Accepted
此步骤的持续时间因用户映射文件中的用户数而异。 您可以使用下面提供的 TenantToTenant-GetStatus 命令监控此步骤的进度。
检查状态(源管理员)
TenantToTenant-GetMigrationStatus -MigrationId {MigrationId}
示例输出
- 验证租户到租户迁移:正在运行
- 验证租户到租户迁移:已成功
- 验证失败,错误信息在此处的 blob 上更新:SASURI
错误以及如何解决它们
- 如果收到以下错误提示:为租户到租户迁移提供的用户映射文件无效,请检查用户映射文件名是否正确,以及用户映射文件是否用逗号分隔值。
- '{行号}'行中有相同的'{emailID}':确保没有任何重复条目。
-
电子邮件格式'{emailid}'无效:确保
testuser@tenantdomain.com
的电子邮件格式正确。 - '{linenumber}'行的目标与源 emailId 相同:确保 目标电子邮件 与 源电子邮件 不同。
- 每一行必须正好有两列:'{行号}':确保每一行只有两列:来源列和目的地列。 删除任何多余的逗号(如果有)。
修复用户映射错误后,您需要使用相同的 SAS URI 重新上传用户映射文件。
下载错误报告(源管理员)
如果用户映射文件中有任何错误,可以选择下载错误报告。 要做到这一点,可以直接复制并粘贴 Tenant-To-Tenant-GetMigrationStatus 命令中提供的SasUrl,或者使用以下命令,使用上一步检查状态中的 SAS URI 以及下载错误报告的所需位置。
完成以下步骤。
使用 Windows PowerShell ISE 运行以下命令。
Import-Module Az.Storage # Define the SAS URI of the blob $sasUri = " Update the SAS Uri from previous step " # Define the path where the blob will be downloaded $destinationPath = "C:\Downloads\Failed\" # Split the SAS URI on the '?' character to separate the URL and the SAS token $url, $sasToken = $sasUri -split '\?', 2 $containerName = $url.Split('/')[3] $storageAccountName = $url.Split('/')[2].Split('.')[0] $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken Get-AzStorageBlobContent -Blob "usermapping.csv" -Container $containerName -Destination $destinationPath -Context $storageContext
修复用户映射文件中的问题。
使用[上传用户映射文件(源管理员)](#upload-the-user-mapping-file-(source-admin)中的步骤重新上传文件。
成功完成准备环境迁移(源管理员)后,您可以继续执行迁移环境(源管理员)步骤来迁移环境。 在接下来的 7 天内执行迁移。 如果在接下来的七天内没有完成迁移,则必须重新启动准备环境迁移(源管理员)程序。
迁移环境(源管理)
可以在源租户中使用 TenantToTenant-ViewMigrationRequest 命令查看 MigrationId。
TenantToTenant-MigratePowerAppEnvironment
-MigrationId {MigrationId}
-TargetTenantId {TargetTenantId}
获取状态(源管理员)
TenantToTenant-GetMigrationStatus -EnvironmentName {EnvironmentId}
示例输出
- 迁移环境:运行
- 迁移环境:成功
备注
如果在运行上述命令时遇到任何问题,请提交支持请求以获得帮助。
迁移后流程
将环境移动到另一个租户后:
- 环境 URL、组织 ID (OrgID) 和名称不会改变。
- 源环境没有 Dataverse。
- 映射文件中不包含的用户在迁移后不会迁移和映射。
请针对 Power Automate、Power Apps、Copilot Studio、Power Pages 完成以下步骤。
Power Automate 的迁移后流程
迁移完成后,将审查组件部分作为检查清单,调整并激活流和其他组件。 关键步骤如下:
- 为所有连接引用创建连接。
- 启动所有流,包括在父流之前启动子流。
- 对于任何 HTTP 触发的流,检索新 URL 并将其放置在任何调用应用或流中以刷新这些引用。
Power Apps 的迁移后流程
对于解决方案感知应用:
- 从 Power Apps 中选择新环境并导航到解决方案页面。
- 选择导入,使用文件选择器选择从上述步骤导出的软件包。
- 通过检查迁移环境的解决方案内容,确认导入已成功完成。
对于非解决方案感知应用程序:
- 转到 Power Apps。
- 从环境下拉列表中选择新环境。
- 选择应用程序。
- 选择导入画布应用。
- 上载应用包文件。
- 完成所有选择的导入选项,然后选择导入。
- 重复上述步骤,直到所有应用全部导入。
Copilot Studio 的迁移后流程
- 从 Power Apps 中选择新环境并导航到解决方案页面。
- 选择导入,使用文件选择器选择从上述步骤导出的软件包。
- 通过检查迁移环境的解决方案内容,确认导入已成功完成。
Power Pages 的迁移后流程
必须为环境中的每个网站完成以下步骤。
- 登录到环境。
- 打开管理中心。
- 使用相同的门户类型和语言配置网站。
完成上述所有步骤和迁移后,您可以在目标租户中验证环境,稍后可以在 Power 平台管理中心中删除源环境。
常见问题解答
租户间迁移期间是否启用后台操作? 在租户间迁移期间将启用管理模式,因此后台操作不会运行。 了解更多信息,请参阅管理模式。
能否迁移 Dataverse 组织的所有用户? 只有在目标环境中存在用户时,我们才能迁移 Dataverse 组织的所有用户。 例如:
user001@source.com
,user001@destination.com
user002@source.com
,user002@destination.com