今回はAzureのクレジットを別のテナントに移す方法を紹介します。
前回の投稿では開発者特典のAzure無料クレジットを活用してDynamics 365 Business CentralのCopilot/Agentの利用料に充当する方法を紹介しましたが、無料クレジットは1か月しか有効期間がないのであっさりとExpireしてしまいました。。
あきらめて従量課金しようかと思ってましたが、別のテナントに15,000円/月の無料クレジットがあり、最近は使わずにそのまま消えて行ってしまっていることを思い出し、これをBCのCopilot/Agent調査用テナントに移せないか?と思ったのが調査のきっかけです。ちなみにこの手順は会社でパートナー特典として付与されてたりするVisual Studio Enterprise Subscriptionについてもほぼ同じ手順で別テナントに移すことができたので、どちらかというとそちらのほうで参考にする方のほうが多いかもしれません。やっていることは「サブスクリプションの移動」なので、原理的にはAzureクレジットが無償かどうかによらずお金を出して購入したクレジットも別テナントに移動できるはずです。
先に言い訳しておきますが、自分はAzureの専門家ではないので「個人の練習環境でクレジットを移せれば良い」レベルで調べた結果ですので、会社で使うときは権限とかセキュリティとかは適切に追加で対処してください。あと、ライセンス規約に沿った使い方をしているかどうかも。
1. やりたい事
個人アカウント(xxxx@outlook.jp)側で持っているサブスクリプションに15,000円/月のクレジットがついています。

このクレジット付きのサブスクリプションを組織アカウント側のテナントのAzureサブスクリプションに移動する。(赤枠囲みの下の2行目は期限切れで使えなくなったサブスクリプションで、これとは別に赤枠のサブスクリプションが追加されるイメージ。)※BCのCopilot/Agentを使いたいのはこの組織アカウント側のテナントです。

2. 外部ユーザーの招待
まずはサブスクリプションの移動先(To側)のテナントから、サブスクリプションの移動元(From側)のユーザー(個人アカウントの方)を外部ユーザーとして招待します。
※「移動元」「移動先」だと字面が似てて目が滑るので、以降「From側」「To側」で表記することにします。
To側のユーザー一覧から「+新しいユーザー」>「外部ユーザーの招待」

From側テナントのアカウント(xxxx@outlook.jp)のメールアドレスを指定。

招待。

これで招待メールが送られます。

以下のようなメールがFrom側のアカウント(xxxx@outlook.jp)に届くので、「Accept Invitation」をクリック。

各種権限要求をAccept。

すると、サブスクリプションのTo側のテナント側にFrom側のアカウント(xxxx@outlook.jp)が外部ユーザーとして登録されました。

3. サブスクリプションの移動
サブスクリプションを移す前に、To側のテナントIDを確認しておきます。To側テナントでHomeからMicrosoft Entra IDをクリック。

テナントIDを確認してメモしておきます。To側は今回の例では ”2a..(中略)..f7” です

From側のサブスクリプションの概要画面を開きます。ここで「->Change Directory」をクリック。(ここはAzureの知識不足でうまく説明できないのですが、「テナントを移す」のではなく「Directoryを変更する」という処理になります。)

右側にFrom側とTo側のディレクトリが表示されます。先ほど確認したTo側のテナントID(”2a….f7”)を手掛かりにTo側のディレクトリを選択。

From-Toが正しく選択できていることを確認して「Change」をクリック。

問題なくディレクトリの変更が完了しました。

テナント(ディレクトリ?)間の移動作業自体はこれだけです。ここまでは結構簡単です。ここまでは。
4. 権限の付与
ディレクトリを移しただけでは使えません。To側のテナントの管理者アカウントでも、外部ユーザーとしてTo側に招集されたFrom側のアカウント(xxxx@outlook.jp)でも、どちらもそれぞれ権限が不足してクレジットをうまく使えません。(少なくともBCのCopilot/Agentを使うには不足していました。)
試しにTo側テナントの管理ユーザーでサブスクリプションを見てみます。

もともと持っていた有効期限切れサブスクリプション(赤枠囲み)は見えますが、From側から移したはずのサブスクリプションは見えません。

これは移したサブスクリプションを見る権限をTo側テナントの管理者が持っていない事が原因です。移したサブスクリプションの所有者であるFrom側テナントの管理者が権限を付与する必要があります。
手順としては、まずはFrom側テナントの管理者(xxxx@outlook.jp)がAzure Portalに入り、右上のアカウントをクリックして表示される名前の下の「Switch directory」をクリックします。

現在のディレクトリはFrom側(xxxxoutlook.onmicrosoft.com)であり、切替先候補としてTo側が表示されていることがわかります。ここでTo側の「Switch」をクリック。

初回なのでMFAの設定を要求されました。。

これから色々と管理者権限をつけていくユーザーなのでMFAはちゃんと設定しておきましょう。

MFA設定完了です。

本題に戻って、、現在のディレクトリがTo側に切り替わりました。

移したいサブスクリプションの所有者であるFrom側テナントの管理者が外部招待されたTo側のテナントに入っている、、という若干ややこしい状況であることを念頭に置いて作業を進めます。(超重要)
招待されたTo側テナントでサブスクリプションの一覧を見にいくとFrom側テナントの管理者には見えています。これはサブスクリプションを所有しているからです。

From側テナントの管理者(xxxx@outlook.jp)が招待されたTo側テナントに入った状態で、To側テナントの管理者にサブスクリプションの権限を付与します。サブスクリプションの画面でAccess Controlをクリック。

「+Add」> 「Add co-Administrator」を選択。

「Add RBAC role assignment」を選択。(この辺り、背景色が薄橙色の注意メッセージを読む限り、最近やり方が「RBAC」方式とやらに変更されたように見えます。まあ、気にせず進めましょう。)

Co-Administrator権限をTo側テナントの管理者に付与しよう・・・と思ったら以下のようになりました。招待されたFrom側テナントの管理者(xxxx@outlook.jp)にはTo側テナントのユーザーがそもそも見えていないようです。

これを解決するには、To側テナントの管理者が招待したFrom側テナントの管理ユーザー(xxxx@outlook.jp)に閲覧権限を付与する必要があります。To側テナントの管理者でAzure Portalにはいり、From側テナントのユーザー設定画面を開き、「割り当てられたロール」の数字部分の ”0” をクリック。

グローバル閲覧者権限を選択して「追加」。(この辺、会社の環境でやるときはもう少し絞ったほうがいいかも)

グローバル閲覧者ロールが招待したFrom側ユーザー(xxxx@outlook.jp)に付与されました。

外部ユーザーとして招待されたFrom側テナントの管理者のAzure Portal画面に戻り、改めてロールを割り当てます。(が、、ここでCo-AdministratorではなくOwnerを選んでしまいました。。本当は「必要最低限」の権限を付与したほうが良いのですが、個人環境の検証なのでこのまま進めます。)

メンバーとしてTo側テナントの管理者を指定します。


Ownerとしての権限の付与レベルを指定します。細かい検証はしていませんが、RBACと書かれているRecommendedの権限を付与しておきます。(Azureプロフェッショナルの方に怒られそうですw)

Review + Assignをクリックして、、

完了!
これで「移したサブスクリプションを、To側の管理者アカウントが自由に触れる権限」が付与されました。

権限付与が完了したので、To側テナントの管理者がサブスクリプション一覧画面を開くと移したサブスクリプションが見えるようになりました。これでAzure無料クレジット付きのサブスクリプションをこの管理者が自由に使うことができます。

5. 移動したAzureクレジットの活用
移したAzureクレジットを実際にBCで使うにはもう少し設定が必要です。Power Platform Admin Centerで前回作成した請求プランに紐づいているAzureサブスクリプションを今回移したサブスクリプションに切り換えれば良いだろう、と思って見に行くと編集できません。。おそらくサブスクリプションが有効期限切れだからだと思われます。

面倒くさいですが、前回同様にリソースグループから作り直します。移動したサブスクリプションを使って新規作成。

作成。

作成されました。

Power Platform側でも請求プランを新規作成。ここで移したサブスクリプションと新規作成したリソースグループを指定。

前回同様、Dataverse環境に紐づけ。

請求プラン作成完了。

前回同様、必須ではないけどPower Appsとかもこの請求プランに紐づけておく。(Copilot Studioも紐づけられるのね。いま気づいた。それは夢が広がる。)

BCのAdmin CenterのEnvironment設定画面。リンク先のDataverse環境は変わっていないので、ここは設定変更の必要なし。

ということで無事にAgent機能が使えるようになりました。

ですが、知らない間にスパムメールなどが届いてAgentが生真面目に解析してチャリンチャリン課金されても困るので、実験しないときはスイッチを切っておくことにします。

使える状態だけどスイッチオフにしておくと、Pauseマーク付きのアイコンになるのですね。(いま気づいた)

6. まとめ
Azureクレジット付きのサブスクリプションを別テナントに移動させるには、「サブスクリプションのディレクトリ変更機能」を使って別テナントに移動させる。手順は以下です。
- 移動先テナントの管理者がサブスクリプションの所有者(移動元テナントの管理者)を外部ユーザーとして招待する。招待の際、移動先テナントのユーザーが見えるような閲覧権限を付与しておく。
- 外部ユーザーの招待を受諾すると、サブスクリプションの所有者(移動元テナントの管理者)は「サブスクリプションのディレクトリ変更」機能を使って移動先テナントにサブスクリプションを移動できるようになるので移動する。
- サブスクリプションを移動したのち、サブスクリプションの所有者(移動元テナントの管理者)は移動先テナントの管理者に管理者権限を付与する。
手順は若干ややこしいですが、①サブスクリプションをディレクトリ変更できること、②権限付与が必要なこと、この2点を覚えておけば理屈は理解できるとおもいますし、画面遷移が今後変更されたとしても応用が利くと思います。
手元に無料クレジットが余っている人はぜひ試してみてください。(くれぐれも利用規約違反にならないよう気を付けてください)
余談ですが、、今回の手順で登場する「MSDN Platform」サブスクリプションはWindows Server OSとかSQLサーバーとか(昔のオンプレNAVとか)が山ほど付いて月額換算2万円程度で購入できます(しました)。そしてご覧のように月々1万5千円のAzureクレジットがついてくるという非常にお得なプランです。自宅でサーバー立ててみたいし、AzureとかPower PlatformとかCopilotとかを勉強したい!という方にお勧めします。
クレジットの手配ができたので、これからBCのAgentとかCopilot Studioを色々触っていきたいと思います!