Before we start

2021年1月,抱着试一试的心理,我申请了 Microsoft Developer Program E5 订阅。

E5 订阅默认只有90天的试用期,之后系统会根据你的使用活跃度来判断给不给你续订的机会。本着薅羊毛的心理,当然想着长久的用下去,于是开始折腾起各种玄学自动续订程序,搭建公开网盘,搞自己的私人云以及实现离线下载等等。折腾的乐趣是无限的,逐渐,我对这个订阅的依赖越來越强。我开始想自己的公开网盘里上传许多不同的资源,公开分享给他人。当我自己需要补旧番时,我会用自建的私人云把资源离线到OneDrive里,有空了再下到电脑上品尝。当朋友或其他人需要使用订阅激活 Office 365 或者使用 OneDrive 空间保存资源时,我也会毫不犹豫的分享子帐号给他们。

不过,在连续稳定使用了一年半的时间后,坏事还是发生了。由于我注册开发者计划时使用的帐号是一个组织帐号(我也不知道当时为啥脑残选成了组织帐号),所以组织管理员可以直接控制这个帐号。一天,由于操作失误,那个组织的管理员不慎把这个帐号删掉了(虽然听起来很离谱但确实是这样),随后我帐号绑定的邮箱便收到了来自微软的邮件:

Sorry to see you go…

Our records indicate that you have deleted your Microsoft 365 Developer Program profile and membership.

We’re sorry to see you go. You’re welcome to rejoin our community at any time.

Thank you!

​ —— The Microsoft 365 Developer Program Team

我第一时间意识到我的账户被删了。在联系到原组织管理员后,虽然重建了一个一模一样的帐号,但也没有任何作用。之后我尝试用英文发工单给微软的客户支持,得到的回复是:

Thanks for contacting Microsoft 365 customer support. Your support request uses your subscription’s complimentary support which doesn’t cover developer issues. Here’s how you can access developer support for Microsoft 365:

看来没有任何办法了,只能重建一个新的订阅然后尽可能完整的把数据迁移过去了。

迁移前的准备

首先盘点一下我需要迁移的东西:

  1. 订阅里绑定的自定义域名
  2. 组织下的15个子帐号
  3. 这些子帐号 OneDrive 中的数据

关于迁移的具体顺序,域名最先迁移和最后迁移其实没有什么区别,只是中间会踩到很多坑,下面我会一一详细的叙述。在这里我的顺序是先迁移帐号的数据,最后迁移域名。

开始迁移

迁移子帐号

首先,我们需要在旧订阅管理面板中的“活跃用户”一栏中把所以用户的基础数据导出,导出之后你会得到一个 csv 文件。里面字段很多,但能用到的就几个。

然后我们去新订阅的用户管理,点击 “添加多名用户”,然后勾选下面的“我想上传包含用户信息的 CSV”。然后下载包含所需标头的空白 CSV 文件。

我们只需要填写 CSV 文件中的用户名、名字、姓氏、备用电子邮件地址这几个字段就够了,其他的按需填写。把刚才导出的 CSV 文件里相关信息复制到这里来。

第一个坑来了:由于之前导出用户的电子邮件地址跟新订阅默认的电子邮件地址不一样,所以这里我们需要批量修改即将导入用户的电子邮件地址为新订阅的(xxx@a.onmicrosoft.com 全部改成 xxx@b.onmicrosoft.com),否则就会报错:导入用户的邮件地址不正确。如果已经把自定义域名迁移过来了的话也可以直接使用自己的自定义域名。不过这里也有坑,等会说。

导入的时候记得分配订阅许可证,导入完成后,第一部分就完成了。

重头戏:迁移 OneDrive 数据

所有的子号加上我自己的号 OneDrive 里面加一块一共有将近一个T的资源,所以本地迁移基本不可能,只能依赖一些第三方的云迁移服务来完成。

这里就要请出我们的重要角色:Mover。这个迁移平台似乎跟微软有合作关系,在微软的官方文档中直接指定性的推荐了这个平台。不过这里我必须吐槽下微软的机翻:在文档里,把 Mover 硬是翻译成了 移动器。看文档时给我看的一愣。。。

登陆 Mover,这里使用任意正常的微软帐号登陆就可以,不需要使用订阅的组织帐号。登陆之后,你会看到三个分栏,Source,Destination 和…. 一个没啥用的提示栏。

在最左边的 Source 栏里,点击 Authorize New Connector,然后点击 Office 365 (OneDrive/SharePoint Admin),然后使用旧订阅的管理员帐号登陆即可。这里有个小坑,登陆之后,Mover 会提示你当前没获取到读取数据的权限。这时候你需要到 Azure Active Directory 里的企业应用程序里找到 Mover 刚注册的那个应用程序(Office 365 Mover),然后去权限一栏,然后点击 “代表 XXX 授予管理员同意” 即可。

然后回到 Mover 的界面,刷新一下,这时候就不会报错了。然后在 Destination 一栏里登陆新订阅的管理员帐号,步骤同上。

两边的都连接上之后,Mover 会跳到 Migration Manager 界面,然后下面会有一个空的用户列表,也就是说需要选择迁移的用户。没错,第二个大坑来了。

首先你会发现点添加用户的按钮之后会有一个 “Autodiscover” (自动检测用户)的选项,正常人的思维肯定是让它自己检测,自己一个个加不麻烦嘛。然后你会发现,它检测出来的用户除了 Sharepoint Sites 之外,全都会报“User does not exist”,这时候你就无法执行下面的扫描步骤。原因也很简单:目标订阅里添加的用户域名不对。没办法,又要自己写 CSV。而且它不会给你 CSV 模板,毕竟只有两列:Source Path 和 Destination Path。

于是你需要新建一个 CSV 文件,把两个表头写进去,然后依次把要导入的目标用户的域名改过来。(别忘了刚才有个从旧订阅导出的用户列表,可以从那复制过来然后批量替换)。又因为 Mover 认为这些用户是路径,所以所以值的前面还需要加上一个斜杠。如果你有 SharePoint 站点的话,把站点的路径也当成用户写进去就好,格式应该类似,因为我没有所以就没法演示了。

最后弄好的 CSV 大概长这样:

Source Path Destination Path
/aaaa@a.onmicrosoft.com /aaaa@b.onmicrosoft.com
/bbbb@a.onmicrosoft.com /bbbb@b.onmicrosoft.com
/cccc@a.onmicrosoft.com /cccc@b.onmicrosoft.com

做好 CSV 之后就可以上传给 Mover 的添加用户那个框里面了。不出意外的话所有用户应该都能正常匹配到。

然后就是执行 Mover 的扫描操作,这会对所有用户将要迁移的数据进行扫描,大概是提前检查错误的意思吧,基本上所有帐号都能通过扫描。不过我有个子帐号好像是因为没开通过 OneDrive 最后报了警告,因为那个号无关紧要我就直接给删掉了。

扫描完成后就可以点开始迁移了,这会把旧帐号里所有的OneDrive文件和 SharePoint 里的文件复制到新订阅里,整个过程还是挺快的,我的有 954 GB 的文件总共用了三个小时不到就迁移完了。

这里也有个小坑,如果 OneDrive 里有大于 15 GB 的文件会因为 API 限制迁移不过去,我盘里就一个 17.3 GB 的大文件,MATLAB 2021 的安装包,看来只能之后再手动传了。另外,如果文件路径超过 255 个字符的话好像也会迁移不过去,不过这个我没有碰到。具体哪些文件没有迁移成功会有一个详细的列表的。

后续步骤:迁移域名

迁移域名便是第三个大坑。

首先你需要在旧订阅的域名列表里把你的域名删掉,然后才能在新订阅里绑定自定义域名,这一步一般不会出现什么障碍。

然后需要把所有子帐号的电子邮件域名改成你的自定义域名,管理面板竟然很反人类的不提供批量修改,所以我们需要手动修改。然后坑便出现了:当你尝试把一个帐号的主电子邮件地址的域名改成你的自定义域名时,便会报错:You can’t use the domain because it’s not an accepted domain for your organization.

这个报错让人很摸不着头脑:我不是已经成功添加域名了吗?为什么改不了??在经过一番谷歌搜寻无果后,我想起了似乎还有另一个地方能改:Azure Active Directory

打开 Azure Active Directory 的用户管理页面,进入一个用户的配置文件,然后点击编辑,然后把用户主体名称和下面的电子邮件地址中的邮箱域名都改成你的自定义域名,然后点保存,就可以保存成功。

什么垃圾管理面板,rnm巨硬

其他后续步骤

成功的修改了用户邮箱之后基本就算迁移完成了,不过不要忘了通知你的用户,及时帮助他们重置新的密码并检查数据迁移是否完整。虽然我的订阅里实际上只有不到10个人在用,但作为全局管理我依然会帮每个用户迁移数据。遗憾的是有的人因为时间太久了已经找不到联系方式了,所以只能在登录页面留个提醒等对方联系我了。

也有几个人已经很长时间没有登录过了,也许那几个人早就把这个 E5 帐号给忘了吧。

另外,如果有偶然在搜索引擎中看到这篇文章的人,倘若你在迁移过程中遇到困难的话,也可以给我留言或者给我发邮件,我会提供力所能及的帮助。

结尾:碎碎念

已经将近三个月没有更新过博客了,这日子真是越过越颓废了。有时候真的想静下心来认真学点东西写点博客,但又总感觉没时间,然而事实却是学业也没忙好东西也没学到,甚至开始了大摆烂。

希望这样的混日子早点结束吧。