記事公開日
【Power Platform】マネージドソリューションにおけるオートナンバー1000リセット解決策!

はじめに
こんにちは!DXソリューション営業本部の二瓶です。
Power Platformでアプリ開発を進めている皆さん、こんな経験はありませんか?
開発環境で順調に増えていた自動採番(オートナンバー)の番号が、別の環境にデプロイしたら「1000」に戻ってしまった!
これ、実はPower Platformの「マネージドソリューション」を使うとよく起きる現象なんです。
本ブログでは、このオートナンバーのシード値(開始値)リセット問題の原因を解説し、その解決策としてPower Automateのクラウドフローを使った具体的な手順をご紹介します。
オートナンバーのシード値って何?なぜ「1000」に戻ってしまうの?
まず、オートナンバー列とシード値について簡単に説明します。
オートナンバー列とは
オートナンバー列とは、Dataverse(Power Platformのデータ基盤)のテーブルにて、新しいデータを追加するたびに自動的にユニークな番号が振られていきます。
例えば、顧客番号、注文ID、申請番号など、連番が必要な場面で大活躍します。
シード値とは
そして、この自動採番が「どこから始まるか」を決定するのがシード値です。
初期値は通常「1000」に設定されています。
テーブルに新しいレコードが追加されるたびに、値が自動的に「1001」「1002」…と増えていきます。
シード値の問題
このシード値は、テーブルの定義(スキーマ)とは別の情報として、環境ごとに保持されています。
ソリューションコンポーネントとして含まれていないため、ソリューションを別の環境に移行してもシード値の定義は引き継がれません。
そのため、新しい環境にソリューションをデプロイすると、オートナンバー列のシード値はその環境の初期値である「1000」のままになってしまうのです。
この現象は、アンマネージドソリューションをデプロイした場合でも発生します。
アンマネージドソリューションでこの問題が起きた場合、テーブルの定義を直接編集して、手動でシード値を修正することができます。
しかし、マネージドソリューションは、デプロイ先の環境でコンポーネントが「管理された」状態になるため、テーブルの定義を直接編集することはできません。
この仕組みはソリューションの安定性を高める上で非常に重要ですが、シード値の問題が発生した際に、手動での修正が不可能になってしまうというデメリットがあります。
例えば、開発環境ではシード値を「30000」から開始するよう設定していても、マネージドソリューションを本番環境にデプロイすると、新しく登録されるレコードの最初のIDが「1000」といった値に戻ってしまうことがあります。
その結果、すでに存在する本番データとIDが重複する可能性が生じます。
これはデータの一貫性や業務の正確性に大きな影響を与えかねません。
解決策はPower Automateクラウドフロー!
「バインドしていないアクションを実行する」アクションを
使おう
このシード値リセット問題を解決するには、マネージドソリューションのデプロイ後に、オートナンバー列のシード値を正しい値に修正する必要があります。
マネージドソリューションとしてインポートされたテーブルの定義を直接編集してシード値を変更することはできませんから、この制約を回避する必要があります。
そこで役立つのが、Power Automateのクラウドフローです!
Power AutomateのDataverseコネクタ(プレミアム)には、「バインドしていないアクションを実行する」というアクションがあります。
これを使うと、DataverseのWeb APIで提供されている「SetAutoNumberSeed」という特別なアクションを呼び出し、オートナンバー列のシード値を直接設定し直すことができます。
それでは、具体的な使い方を見ていきましょう。
必要なもの
• Power Platform 環境(管理者権限またはDataverseのカスタマイズ権限が必要です)
• Power Automateクラウドフロー
• Dataverse内に、シード値を修正したいオートナンバー列があるテーブル
Power Automateクラウドフローの作成手順
①新しいクラウドフローを作成
まずはPower Automateにアクセスし、新しいクラウドフローを作りましょう。
今回は手動で実行するフローとして作成します。
②Dataverse「バンドしていないアクションを実行する」アクションを追加
ここが今回のメインとなる部分です。
Dataverseの特定の機能を使って、オートナンバーのシード値を変更します。
項目名 | 設定値 | 説明 | |
① | アクション名 | SetAutoNumberSeed | オートナンバーのシード値を設定するための特別なアクションです。 |
② | EntityName | テーブル論理名 | シード値を変更したいテーブルの論理名を入力します。 |
③ | AttributeName | 列論理名 | シード値を変更したいオートナンバー列の論理名を入力します。 |
④ | Value | 次に採番してほしい数字 | この値が、次にレコードを作成した時に最初に割り当てられる番号になります。 例えば、次に割り当てたい番号が「2000」なら、「2000」と入力します。 |

③フローを保存してテストする
フローを保存し、手動でフローを実行して完了です。
この解決策のメリットと注意点
■メリット
・データの一貫性を保つ!
シード値のリセットによる番号の重複を防ぎ、システム全体のデータが正しく管理されます。
・追加ツール不要!
Power Platformの標準機能であるPower Automateだけで解決できるので、特別なツールや難しいプログラミングは必要ありません。
■注意点
・デプロイ後の実行を忘れないこと!
マネージドソリューションをデプロイした後、このフローを手動で実行するか、何らかの自動化の仕組み(例えば、Azure DevOpsなどと連携してデプロイ後に自動実行させる)を構築する必要があります。
・テーブルや列の「論理名」を正確に!
フロー設定時に、テーブルやオートナンバー列の正確な「論理名」が必要です。
これは表示名とは異なる場合があるので、事前に確認しておきましょう。
まとめ
Power Platformで本格的にアプリを開発し、複数の環境で運用していく上で、マネージドソリューションは非常に強力な機能です。
しかし、今回解説したオートナンバー列のシード値リセット問題のような、デプロイ時に発生する「落とし穴」も存在します。
本ブログが、皆さんのPower Platform開発・運用の一助となり、システム構築に役立てば幸いです。
QESではPower Platform導入時の支援から、アプリケーション開発、導入後の保守サポートまで対応しています。
以下のリンクからご提供しているサービスの詳細をご確認いただけます。