Lifecycle Services 実装プロジェクトをオンプレミスからクラウドに移動する
この記事では、独自のインフラストラクチャでホストされている Microsoft Microsoft Dynamics 365 Finance + Operations (on-premises) 環境を Azure クラウドに移動する方法について説明します。
背景
クラウドへの以前の移行では、SQLPackage を使用して .bacpac ファイルを作成および復元し、オンサイト データベースをクラウドに移動しました。 このアプローチは現在サポートされていません。 現在のアプローチでは、データ移行ツールキットのバージョン1.0.8 (以降) を使用します。
クラウド サブスクリプション ライセンス
クラウド サブスクリプション ライセンスをまだお持ちでない場合は、クラウド サービス プロバイダーまたはボリューム ライセン スリセラーと協力して、Microsoft Entra テナントで必要なサブスクリプションを取得してアクティブ化します。 ユーザーおよびアドオン環境のすべてのサブスクリプションを有効にする必要があります。
Lifecycle Services クラウド実装プロジェクトを構成する
以前に Microsoft Entra テナントで財務と運用クラウド名のユーザー サブスクリプション ライセンスが有効かされていない場合、新しい Microsoft Dynamics Lifecycle Services クラウド実装プロジェクトが自動的にプロビジョニングされます。 それ以外の場合は、サポート要求を開いて Lifecycle Services クラウドの実装プロジェクトを作成する必要があります。 詳細については、1 つの Microsoft Entra テナントでの複数の LCS プロジェクトと運用環境 を参照してください。
Lifecycle Services クラウドの実装プロジェクトが作成されたら、完全に構成する必要があります。 この構成の一部として、次の手順を実行する必要があります (その他)。
- ユーザーを追加します。
- Azure DevOps 関連を追加します。
- サブスクリプション見積を追加します。
- 資産ライブラリを入力します。
- ビジネス プロセス モデラー (BPM) を追加します。
更新された統合の開発とテストの完了
おそらく、Finance + Operations (on-premises) 環境とのインターフェイスに使用した統合デザイン パターンにいくつかの変更を加える必要があります。 これらの変更はかなりのものになる可能性があり、それらの詳細な説明はこの記事の範囲を超えています。 ただし、すべてのインターフェイスを評価して、それらに適切な変更を行う必要があります。
元のインターフェースと同じコードベースで共存できるように、更新されたインターフェースを開発することを検討する必要があります。 このアプローチにより、オンプレミスからクラウドへの移行期間中のコード ライフサイクル管理が簡素化されます。 このアプローチが不可能な場合は、クラウドの運用開始を通じて新しい開発ブランチを管理する必要があります。 移行期間中のこの新しいブランチの管理を簡素化するために、他のコード変更を可能な限り凍結することをお勧めします。 さらに、詳細なカットオーバー計画では、古いインターフェイスを無効にし、新しいインターフェイスを有効化する手順を慎重に文書化する必要があります。
前提条件
Tier-2 (UAT) セルフ サービス環境を配置する。
オンプレミスの運用環境 (または、必要に応じて、前のセクションで説明したクラウド統合開発ブランチからの現在のビルド) に適用されるのと同じコード パッケージを適用します。 このコード パッケージは、独立系ソフトウェア ベンダー (ISV) のソリューションとライセンスを含む単一の完全な展開可能なパッケージである必要があります。
メモ
- ローカル ビジネス データ (LBD) 移行プロセスは、財務と運用サンドボックス (UAT) セルフサービス環境専用です。 運用環境に対して実行することは出来ません。 移行されたデータを実稼働データに移動するために、金色のコピー更新が行われます。
- Dynamics 365 用 Data Migration Toolkit の最新バージョンを Lifecycle Services からダウンロードしてください。
- 移行のためにリンクされた Power Platform 環境を 配置または使用しないでください。 Power Platform 環境は、データ アップグレードの完了後に配置して使用できます。
Lifecycle Services から Data Migration Toolkit for Dynamics 365 バージョン 1.0.8 (またはそれ以上) をダウンロードします。 共有資産ライブラリで、資産タイプとして モデル を選び、モデル ファイルを選択します。
まだインストールされていない場合は、.NET Framework version 4.7.1 をダウンロードし、インストールします。
レプリケーション機能がインストールされ、ソース SQL Server インスタンスに対して有効になっていることを確認します。 レプリケーションが有効かどうかを確認するには、次の SQL スクリプトを実行します。
-- If @installed is 0, replication must be added to the SQL Server installation. USE master; GO DECLARE @installed int; EXEC @installed = sys.sp_MS_replication_installed; SELECT @installed;
レプリケーション コンポーネントがインストールされていない場合は、SQL Server レプリケーションのインストールの手順に従いインストールします。
SQL Server 認証は、SQL Server および Windows 認証モード に設定する必要があります。 (この変更を行うには、SQL Server サービスを再起動する必要があります。) ツールキットではネイティブ SQL ログインのみを使用します。
ソース データベース サーバーで SQL Server Agent を有効にして起動します。
メモ
ユーザーはソース データベースで DB_Owner 権限を持ち、マスター データベースおよびソース データベースにアクセスできる必要があります。
データ移行ツールキットの設定
Lifecycle Services からダウンロードした Data Migration Toolkit for Dynamics 365 のバージョン 1.0.x の zip ファイルを、選択したフォルダに展開します。
メモ
Zip ファイルが正しく展開されるようにするには、ダウンロードを選択して保留 (または右クリック) し、ブロックの解除 チェック ボックスをオフにします。
zip ファイルを展開した フォルダーで、DataMigrationZip.exe.config ファイルを開き、次の手順に従います。
以下の列を検索します:
<add key="isD365OnPrem" value="false" />
下の例のように、値を false から true に変更してください。
<add key="isD365OnPrem" value="true" />
オプション: ソース データベース テーブルの一部をターゲット データベースに複製しない場合は、IgnoreTables.xml ファイルでそれらを指定できます。 同様に、一部の関数を複製しない場合は、IgnoreFunctions.xml ファイルでそれらを指定できます。 また、主パブリケーション外のパブリケーションに特定のテーブルを置く場合は、SpecialTables.xml ファイルを使用できます。
- IgnoreTables.xml ファイルのパス : Data\IgnoreTables.xml
- IgnoreFunctions.xml ファイルのパス : Data\IgnoreFunctions.xml
- SpecialTables.xml ファイルのパス : Data\SpecialTables.xml
次の例は、XML ファイルのテーブルおよび関数を指定する方法を示しています。
<?xml version="1.0" encoding="utf-8"?> <IgnoreTables> <Name> <Table>NON_AOT_TABLE1</Table> <Table>NON_AOT_TABLE2</Table> <Table>NON_AOT_TABLE3</Table> </Name> </IgnoreTables>
メモ
無視するリストに追加するテーブルは、Dynamics 365 アプリケーション オブジェクト ツリー (AOT) に存在しないテーブルでなければなりません。 AOT に存在するテーブルを含めると、データのアップグレード中にエラーが発生します。 これらのテーブルはターゲット データベースに複製されません。
<?xml version="1.0" encoding="utf-8"?> <IgnoreFunctions> <Name> <Function>if_WHSInventReserveUnionDelta</Function> </Name> </IgnoreFunctions>
重要
IgnoreFunctions.xml ファイルに指定された機能はターゲット データベースに複製されません。
<?xml version="1.0" encoding="utf-8"?> <SpecialTables> <Name> <Table></Table> </Name> </SpecialTables>
重要
SpecialTables.xml ファイルで指定されたテーブルは、専用のパブリッシャーに追加されます。 特別テーブル パブリッシャーの数は、NumberOfPublishers パラメーターに基づいています。以下の手順を参照してください。 詳細については、次の手順を参照してください。 特別なテーブル処理は、ダウンタイム時間中に手動でレプリケーションを開始する必要がある、非常に大規模なテーブルに有用です。
オプション: レプリケーションの待機時間/パフォーマンスを最適化するために、App.config ファイルで次のディストリビューターのパラメーターを更新できます。
- MaxBcpThreads - 既定では、パラメーターは 6 に設定されています。 機械のコア数が 6 未満の場合は、その値をコア数に更新します。 指定できる最大値は 8 です。
- NumberOfPublishers - 既定では、パラメーターは 4 に設定しています。 この値を使用することを推奨します。 ただし、パブリッシャーの数を増やして、各パブリッシャーに配分するテーブル数を少なくする場合があります。 この変更により、手動のスナップショットが開始し、より小さな初期スナップショットを実行できます。これは、メンテナンス期間が限られていて、レプリケーションの開始を複数に分割する必要がある場合に役立ちます。
- snapshotPostPublication – このオプションは、自動スナップショット プロセスの開始間隔を 5 分追加で遅延させます。 この遅延は、ソース サーバーの負荷の場合に役立ちます。 このツールキットでは手動でのスナップショットの開始も可能です。 この方法を使用する場合は、このパラメータを設定する必要があります。
メモ
システムのリソース使用率、メモリの使用率、ディスク IO 操作が高いピーク時には、レプリケーションを設定または構成しないでください。
リソースが最大上限まで使用されている場合 (90% 以上が既に消費されている)、システムが使用可能なリソースを見つけるためにレプリケーションが遅延する場合があります。 システム リソースの使用が最小 (オフピーク時) であるオフ時間にレプリケーションを開始することをお勧めします。
また、Go-Live の切替については、前の週末にレプリケーションを開始することをお勧めします。
移行プロセス
DataMigrationTool.exe アプリケーションを実行する
重要
移行プロセスを開始する前に、環境が 配置された 状態にある必要があります。
DataMigrationTool.exe アプリケーションを実行します。
クラウド環境のタイプを指定できるコンソール ウィンドウが開きます。
- 公開: lcs.dynamics.com
- GCC: gov.lcs.microsoftdynamics.us
- UAE: [ uae.lcs.dynamics.com ]
クラウド環境を入力すると、サインインを求めるプロンプトが表示されます。 Lifecycle Services へのサインインに使用する資格情報を提供します。
正常に認証された後コンソール ウィンドウで、Project-Id 値から Environment-Id 値を順に作成します。
指定した値を検証するには、Lifecycle Services へのログインに使用する資格情報を使用してサインインする必要があります。
メモ
プロジェクト ID および環境 ID の値は、Lifecycle Services の環境の管理ページで確認できます。 また、環境 ID の値は、環境の詳細ページでも確認できます。
データ レプリケーションと移行の完了
検証が成功すると、アプリケーションには、データ アップグレード プロセスの手順に対応する一連のメニュー オプションが表示されます。 データのレプリケーションおよびアップグレードを完了するには、次の手順を順番に実行する必要があります。
環境の準備: 環境の設定活動
この手順では、次の情報の入力が求められます。
ソース データベースの詳細:
- ソース サーバー (サーバー名\サーバーインスタンスの形式)
- ソース データベース名
- ユーザー名
- パスワード
ソース データベース サーバーの IP アドレス (許可リスト用)
配布データベース パス (D:\SQLServer\Data など)
レプリケーション スナップショット パス (D:\SQLServer\Snapshot など)
重要
SQL Server 認証を使用する必要があります。 ドメイン サインインは使用できません。
SQL Server (NetBIOS) 名を使用し、完全修飾ドメイン名 (ガン) を使用する必要があります。 SQL クラスタがある場合は、有効なプライマリ ノードのサーバー名を使用する必要があります。
SQL Server (NetBIOS) 名での接続に問題がある場合、SQL 暗号化に使用する証明書に、サーバーの名前が件名の代替名プロパティで DNS エントリとして登録されていることを確認します。 SQL 暗号化証明書には、すべての SQL サーバー ノードの NetBIOS と FQDN、およびクラスタの場合はリスナーのエントリが必要です。
指定した配布データベースとレプリケーション スナップショット パスには、十分な容量が必要です。 容量は、少なくともソース データベースのサイズにすることをお勧めします。 Dynamics 365 データベースで圧縮を使用した場合、スナップショットが圧縮されていなため必要容量が大きくなります。 このパスは、コンピューターのローカル ディスクに含まれる必要があります。 (共有パスの使用を避けます。)
仮想コンピューター (VM) またはコンピューター (手順 1. の許可リストのため) に対して静的 IP アドレスを設定することをお勧めします。 これにより、ターゲット データベースに関する接続の問題を防ぐのに役立ちます。
この手順では、次のアクションを実行します。
- ソース データベースへの接続を検証します。
- Dynamics 365 LBD データベースのバージョンを検証します。
- ソースの IP アドレスを承認します。
- ターゲット データベースを検証します。
環境の準備 : データ アップグレードのターゲット環境を準備する
この手順により、Lifecycle Services の環境の状態が 配置済み から レプリケーションの準備完了 に変更されます。
レプリケーション : ターゲット データベースのクリーンアップ
この手順では、次のアクションを実行します。
- Lifecycle Services 環境の状態を、レプリケーションの準備完了 から レプリケーションの処理中 に変更します。
- これは、ターゲット データベースのすべての Dynamics AX 製品タブレット、ビュー、ストアド プロシージャ、およびターゲット データベースのユーザー定義関数を削除します。
レプリケーション : 配布の設定
この手順により、ソース サーバーのシステム データベース フォルダー下に配布データベースが作成されます。 この配布データベースは、レプリケーションに使用されます。
レプリケーション : 主キー (PK) テーブル用にパブリケーションを設定する
この手順により、ソース サーバーのレプリケーション フォルダーの下に主キー テーブル用のパブリケーションが作成され、ターゲット データベースに複製されます。 ignore-table エントリが指定された場合、指定されたテーブルはレプリケーションから除外されます。 特別なテーブル 追加されたエントリ、これらは追加の特別なテーブル のパブリケーションに追加されます。
ノート
SQL Management Studio でスナップショットを手動で起動する必要があります。
- レプリケーション モニターを開き、SQL Server のインスタンスを選択します。
- エージェント タブで、開始する公開元を選択したまま (または右クリック)、開始 を選択します。
一度に 1 つのスナップショットを開始し、そのスナップショットのレプリケーションが完了するまで待機します。 レプリケーション モニターで、次の例のようなメッセージが表示されるまで、ディストリビューターからサブスクライバーへ の履歴を確認します: "\unc\server\folder から配信されたスナップショット"。
レプリケーションを監視する方法の詳細については、データ移行ツールキットのレプリケーションの監視 を参照してください。
手順 6 と 7 のパブリッシャー スナップショットを手動で開始する必要があります。
古いバージョンのデータ移行ツールキットには自動開始と手動開始があります。 ツールキットの最新バージョンに移行することをお勧めします。
作成された公開元の名前: AX_PUB_PkTable_[*]
注意
このレプリケーション構成ステップが完了すると、バックグラウンドで実行される SQL ジョブとして実際のデータ レプリケーションが発生します。 このジョブは完了するまでに少し時間がかかります。 レプリケーションの状態を表示するには 'rs' オプションを指定します。 'rs' オプションについての詳細は、この記事の後のアプリケーションのレポーティング セクション セクションを参照してください。
レプリケーション : 他のオブジェクト (機能) に対するパブリケーションの設定
この手順により、他のオブジェクト (機能) に対するパブリケーションが作成され、ターゲット データベースに複製されます。 一部の関数を複製しない場合は、IgnoreFunctions.xml ファイルでそれらを指定できます。
作成された公開元の名前 : AX_PUB_OtherObjects
注意
このレプリケーションは完了までに少し時間がかかることがあります。 レプリケーションの状態を表示するには、'rs' オプションを指定します。 複製する関数がない場合、パブリケーションは作成されません。 このステップの DataReplicationStatus プロパティが完了として表示されるまで、次のステップに進まないでください。
切替: 非 PK テーブル用にパブリケーションを設定する
この手順では、2 つのパブリケーションを作成します: 1 つは主キーのないテーブルの複製に使用され、もう 1 つはロックされたテーブルの複製に使用されます。
注意
ロックされたテーブルがない場合、パブリケーションは作成されません。
パブリケーション名 : AX_PUB_NoPKTable、AX_PUB_TABLE_LockedTable
主キーパブリケーションの作成中に AX サービスがスキーマ ロックを取得した場合、それらのテーブルは無視され、パブリケーションから除外されます。 これらは、一時テーブルに追加され、切替パブリケーションの作成中にレプリケーション用にマークされます。
[重要] このステップの DataReplicationStatus プロパティが完了として表示されるまで、次のステップに進まないでください。
メモ
'dv' オプションを使用して複製データを検証できます。 テーブルが不一致である場合は、この手順によりそのテーブル用のパブリケーションを作成できます。 レプリケーションに対して不一致のテーブルを除外する場合は、アプリを閉じ、それらのテーブルを Data/IgnoreTables.xml に追加します。 その後、アプリを再実行し 'dv' オプションを使用します。
'dv' オプションの詳細については、この記事の後のアプリケーションのレポート セクションを参照してください。
切替: レプリケーションの設定の削除
この手順では、ソース データベース、配布データベース、およびレプリケーション スナップショットに作成されたすべてのパブリケーションを削除します。
メモ
例外を発生させずにスナップショット フォルダーを削除するには、ソース データベースで次のスクリプトを実行します。 このスクリプトを実行しなくても、受信した例外メッセージは無視できます。
EXEC master.dbo.sp_configure 'show advanced options', 1 RECONFIGURE WITH OVERRIDE EXEC master.dbo.sp_configure 'xp_cmdshell', 1 RECONFIGURE WITH OVERRIDE
レプリケーション後: 環境の状態をレプリケート済に更新する
この手順では、Lifecycle Services 環境の状態を、レプリケーションの処理中 から レプリケーション完了 に変更します。
データ同期 : トリガー変換
この手順によって、クラウド用にデータベースを更新する Lifecycle Services のサービス ステップがトリガされます。 アクションが成功した際、Lifecycle Services 環境の状態を レプリケーション完了 から データ アップグレードの処理中 に変更します。
データの移行に成功すると、環境は Lifecycle Services の 配置済 ステータスに設定されます。
データ同期 : ロールバックのトリガー
この手順は、データ アップグレードのロールバックをトリガーします。 これにより、アップグレードがトリガーされる前の状態にデータがロールバックされ、Lifecycle Services 環境の状態が レプリケート済み に設定されます。 このアクションにより、環境が 失敗 から レプリケート済み に変わります。
この時点では、ロールバックをトリガーしたのみです。 ロールバックのステータスを表示するには、'rbs' オプションを使用します。 オプションの詳細については、記事の後半で アプリケーションのレポーティング セクション セクションを参照してください。
ロールバックに成功した場合、'rbs' オプションは、 D365 のアップグレード トポロジ (LCS) ステータス: レプリケート済 と表示されます。
ロールバックに失敗した場合、'rbs'オプションは、 D365 のアップグレード トポロジ (LCS) ステータス: 失敗 と表示されます。
アプリケーションのレポート セクション
次のオプションを使用して、レプリケーションの検証、レプリケーション ステータス、データ アップグレードのステータス、データ アップグレード ステータスのロールバックに関するレポートを確認できます。
dv) レポート: レプリケーションを検証します。
このオプションは、ソース サーバー データベースとターゲット サーバー データベースのテーブルとレコードの数を比較した後、レポートを表示します。 このオプションは、手順 7 が完了した後にのみ使用できます。
テーブルが不一致である場合は、この手順によりそのテーブル用のパブリケーションを作成できます。 レプリケーションに対して不一致のテーブルを除外する場合は、アプリを閉じ、それらのテーブルを Data/IgnoreTables.xml ファイルに追加します。 その後、アプリを再実行し 'dv' オプションを使用します。
レポート データは、output/PostValidationInfo.csv で確認できます。
rs) レポート – レプリケーション ステータスを取得します。
このオプションは、作成されたパブリケーションのレプリケーション プロセスのレポートを表示します。 このオプションは、手順 5 が開始された後 (任意のパブリケーションのレプリケーション プロセス中) にのみ使用できます。
rbs) レポート – ロールバックのステータスを取得します。
このオプションは、ロールバック プロセスのレポートを表示します。 このオプションは、手順 11 を開始した後にのみ使用できます。
アプリケーションのツール セクション
- レプリケーションのリセット – すべてのレプリケーション構成を削除することで、レプリケーションの設定をリセットします。 パブリケーションおよび配布データベースが削除されます。 すべてのレプリケーションおよび切替メニュー オプションのステータスが、完了モードからリセット モードにリセットされ、レプリケーションを最初からやり直すのに役立ちます。
- すべてリセット – すべてのメニュー オプションをリセットし、レプリケーションの設定を削除します。 すべてのオプションの状態は、リセットに変更されます。
- クリア – 環境設定の活動をクリアします。 project-Id の値、Environment-Id の値、ソース データベースの詳細など、すべての情報がキャッシュからクリアされます。
- ヘルプ – 更新されたステータスでデータ アップグレード移行オプションを表示します。
- 終了 – アプリケーションを閉じます。
- 設定エラー – 環境を削除したい場合、環境が PreparingForReplication、ReadyForReplication または Replicating Replicated) の状態にある場合は、このオプションを使い 失敗 に環境状態を設定します。 この環境は、その後 Lifecycle Services から削除できます。
移行後タスク
- 必要であれば、他のすべてのユーザーを再インポートし、適切なセキュリティ ロールを割り当てます。 ユーザーは Microsoft Entra アカウントに割り当てる必要があります。
- クラウド環境での直接印刷は、Document Routing Agent (DRA) を使用して行われます。 ネットワーク印刷を有効にして Document Routing Agent をインストール の説明に従ってサンドボックス DRA を設定し、回帰テストに印刷シナリオを含めることができます。
- ドキュメント処理の添付ファイルをクラウドにコピーします。 ドキュメント処理の添付ファイルはデータベースに保存されません。 保存する必要がある場合は、個別に移動する必要があります。 詳細については、この記事の サンドボックスへの添付ファイルを処理するドキュメントの移行 セクションを参照してください。
- 完全な回帰テスト サイクルを実行します。 このサイクルには、統合のテストを含める必要があります。
- テスト中に検出された問題を修正します。 各問題ごとに、サンドボックスで行った修正調整を文書化して追跡し、オンプレミスソースでこれらの調整を繰り返します。 オンプレミス環境で変更を加えてはなら ない 場合は、その環境の正しい機能と互換性がないため、移行プロセスの繰り返しごとに手動で適用するのではなく、DMF データパッケージを作成することをお勧めします。
- すべてのテストが成功し、コードまたは構成に変更が加えられなくなるまで、手順 2 ~ 10 を繰り返します。
運用への移行の繰り返し
前のすべての手順に従ってデータを移行 し、ゴールデン構成プロモーション - サンドボックス データベースから実稼働へ の手順に従います。
- 新しい運用環境を展開します。 通常の前提条件が適用されることに注意してください。 たとえば、有効なサブスクリプションの見積もりツールを持ち、運用フェーズの前に Lifecycle Services の方法のフェーズを完了し、FastTrack 準備レビューを完了する必要があります。 詳細については、「Go-Live の準備」を参照してください。
- ソフトウェア展開可能パッケージの最終バージョンを運用に適用します。
- オンプレミスの運用環境に対するデータの変更を中止します。
- 試用版の移行と問題の解決 セクションで手順 3 ~ 6 を繰り返して、最終的な/最新のオンプレミス運用データベースをクラウド サンドボックスにコピーします。
- 試用版の移行と問題の解決 セクションで手順 8 を繰り返して、添付ファイルを処理する最終/最新のドキュメントをクラウドサンドボックスにコピーします。
- サンドボックスから運用へのデータベースの更新を要求します。 (このプロセスは、ゴールデン構成データベースを運用にプロモートするために使用されるプロセスと同じです。)
- サポートリクエストを開いて、Dynamics サービス エンジニアリング にドキュメント処理の添付ファイルをサンド ボックス ストレージ アカウントから運用ストレージ アカウントにコピーさせ、運用データベースの DocuValue テーブルと DocuDeletedValue テーブルの参照を更新します。 要求が完了したら、添付ファイルがドキュメント処理レコードのサンプルに使用できるかどうかを確認します。
メモ
ドキュメント処理添付ファイルに関するサポート要求は、スケジューリングのため 72 時間前までに送信の必要があります。 事前の通知なしに行われた要求は受け入れられません。
- 運用の DRA を設定します。 試用版の移行の一部として以前にインストールされた DRA のいずれかを再利用する場合は、サンドボックス URL ではなく、運用 URL に接続するように構成を更新するようにしてください。
- カットオーバー計画で詳しく説明されているように、クラウドとオンプレミスの運用環境を調整します。
- 運用開始のサインオフを取得します。
- クラウド運用インターフェイス、バッチジョブなどをアクティブ化します。
- クラウド運用環境での取引を開始します。
ドキュメント処理の添付ファイルをサンドボックスに移行
Finance + Operations (オンプレミス) 環境のドキュメント処理添付ファイルは、ファイル共有に格納されます。 ただし、クラウド バージョンはこのファイル共有をサポートしていません。 次の手順を使用して、添付ファイルをサンドボックス環境の Azure ストレージ アカウントにコピーし、データベース内の対応するメタデータを更新できます。 その後の運用への昇格のために、Dynamics サービス エンジニアリングは添付ファイルをサンドボックスから運用にコピーするように要求できます。
添付ファイルを処理するドキュメントのコピーを、オンプレミスの運用ファイル共有から、Application Object Server (AOS) のサンドボックス インスタンスの 1 つにある一時フォルダーにアップロードします。 たとえば、添付ファイルの ZIP ファイルをアップロードし、ターゲットで展開することができます。 リモート デスクトップ アクセスがない場合 (たとえば、セルフ サービス環境など) は、代わりに別の仮想マシン (VM) を使用できます。 妥当な変換パフォーマンスを得るには、この VM をターゲット サンドボックスと同じ Azure データセンターに配置する必要があります。 AOS インスタンスを使用していない場合は、サンドボックスの SQL データベース インスタンスへのアクセスの許可リストに VM を追加する必要があります。
サポート リクエストを開いて、サンドボックス Azure ストレージ アカウントの名前と、ドキュメント コンテナの時間制限のある共有アクセス署名 (SAS) トークンを取得します。 次の手順で実行する Windows PowerShell スクリプトの対応するプレースホルダーを更新します。 また、Lifecycle Services の環境の詳細を使用して、一時フォルダーと財務と運用トランザクション データベースのプレースホルダーを更新し ます。
サンドボックス AOS インスタンスまたはその他の VM で次の Windows PowerShell スクリプトを実行して、ドキュメント処理ファイルをストレージアカウントにアップロードし、各ファイルに必要なメタデータを作成します。
#Upload F&O on-prem document handling attachments to Azure storage account # $filesPath = "<TEMP_ATTACHMENTS_FOLDER_PATH>" $dBHostName = "<DATABASE_SERVER>.database.windows.net" $dBName = "<DATABASE_NAME>" $dBUsername = "<DATABASE_USER>" $dBPassword = "<DATABASE_PASSWORD>" # Note! - The storageAccountName should be set without the ".blob.core.windows.net", e.g. $storageAccountName = wxxtst4xx5bfxx $storageAccountName = "<STORAGE_ACCOUNT_NAME>" # Note! - The sasToken starts with "sv=20" $sasToken = "<SAS_TOKEN>" [Reflection.Assembly]::LoadWithPartialName("System.Security.Cryptography") #Load crypto $cryptoObj = [System.Security.Cryptography.SHA256]::Create() $StorageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken foreach ($file in Get-ChildItem $filesPath) { try { $blob = (Set-AzStorageBlobContent -Context $StorageContext -Container documents -File $file.FullName -Blob "$($file.Name)" -Force).ICloudBlob } catch { Write-Host "Could not upload $($file.Fullname) to blob" Write-Host $_ } if($blob) { #Write-Host "Processing $($file.Fullname)..." #FileHash: $fileBytes = [System.IO.File]::ReadAllBytes($file.FullName) $hashBytes = $cryptoObj.ComputeHash($fileBytes) $encodedHash = [System.Convert]::ToBase64String($hashBytes) #FullFileName: $origFileName = (Invoke-Sqlcmd -Query "SELECT ORIGINALFILENAME FROM DOCUVALUE WHERE FILEID = '$($file.Name)'" -ServerInstance $dBHostName -Database $dBName -Username $dBUsername -Password $dBPassword).ORIGINALFILENAME if ($origFileName.Length -eq 0) { $origFileName = (Invoke-Sqlcmd -Query "SELECT ORIGINALFILENAME FROM DOCUDELETEDVALUE WHERE FILEID = '$($file.Name)'" -ServerInstance $dBHostName -Database $dBName -Username $dBUsername -Password $dBPassword).ORIGINALFILENAME } if ($origFileName.Length -eq 0) { Write-Host "Missing DOCUVALUE $($file.Name)" } else { $nameBytes = [System.Text.Encoding]::UTF8.GetBytes($origFileName) $encodedName = [System.Convert]::ToBase64String($nameBytes) #Write-Host "Base64 encoded original filename $encodedName." $blob.Metadata["FileHash"] = $encodedHash $blob.Metadata["FileSize"] = $file.Length $blob.Metadata["FullFileName"] = $encodedName $blob.SetMetadata() Write-Host "Uploaded $($file.Fullname)" } } }
SSMS で、次の T-SQL コマンドを実行して、DocuValue レコードと DocuDeletedValue レコードを更新し、ターゲットの保存場所を参照するようにします。
update DOCUVALUE set ACCESSINFORMATION = replace(ACCESSINFORMATION, 'file://<SOURCE_PREFIX>/documents/', 'https://<STORAGE_ACCOUNT>.blob.core.windows.net/documents/'), STORAGEPROVIDERID = 1 where STORAGEPROVIDERID = 4 --4 for LBD filesystem, 1 for Azure blob and ACCESSINFORMATION like 'file://<SOURCE_PREFIX>/documents/%' update DOCUDELETEDVALUE set ACCESSINFORMATION = replace(ACCESSINFORMATION, 'file://<SOURCE_PREFIX>/documents/', 'https://<STORAGE_ACCOUNT>.blob.core.windows.net/documents/'), STORAGEPROVIDERID = 1 where STORAGEPROVIDERID = 4 --4 for LBD filesystem, 1 for Azure blob and ACCESSINFORMATION like 'file://<SOURCE_PREFIX>/documents/%'
ドキュメント処理の添付ファイルのサンプルをテストして、サンドボックス環境でアクセスできるようになったことを確認します。
トラブルシューティング
問題解決の情報については、Dynamics 365 Finance + Operations セルフ サービス環境へのアップグレードに関するトラブルシューティング を参照してください。
SSMS 経由でのレプリケーションの構成とステータスについて
SSMS で、オブジェクト エクスプローラーに レプリケーション フォルダーが含まれる場合、レプリケーション機能がサーバーにインストールされ、使用可能になります。
データ アップグレード プロセスの手順 3 が完了したら、レプリケーション フォルダー下にコンフィギュレーションされたパブリッシャーが表示されます。 レプリケーション ステータスを確認するには、レプリケーション フォルダーを選択したまま (または右クリック)、レプリケーション モニターの起動 を選択します。
- レプリケーション モニターには、レプリケーション用に作成されたすべてのパブリッシャーを表示できます。
- スナップショット タブには、スナップショットのステータスが表示されます。
- 詳細ログ/トランザクションを表示するには、グリッド品目をダブルタップ (またはダブルクリック) します。
- ターゲットへのデータ レプリケーションを表示するには、すべてのサブスクリプション タブで、グリッド品目のサブスクリプションをダブルタップ (またはダブルクリック) します。