Dynamics 365 Business Central のトライアル取得方法と API の使い方
Dynamics 365 Business Central のトライアルは個人的に何回か取得しているんですが、かなり毎回勘所を忘れてしまうので、書き残しておきたいと思います。
また、ざっとAPIを使うための下地も見えたので、OAuthやAzureADへの登録などのあたりも併せて。
Dynamics 365 Business Centralって何?
https://dynamics.microsoft.com/ja-jp/business-central/overview/
Dynamics 365 Business Central は中小企業向けに最適化されたMicrosoftが提供するERPパッケージの一つです。他にもう少し大きな企業向けの Finance がありますが、アーキテクチャやAPI仕様は全然違うので注意しましょう。
Business Central のトライアル取得方法
今回はそんなBusiness Centralのトライアルを取得するのですが、今の所日本の環境ではトライアルを取得できません。なので、英語版にうまくアクセスできるようにしたり、USリージョンのOffice365アカウントが必要だったりするので、注意が必要です。
何はともあれ、まずはUSリージョンのOffice365アカウントを取得しておきます。いろんな方法がありますが、せっかくなので Dynamics 365 ライセンスで取得してしまいましょう。
まず、以下のURLにアクセスして、Dynamics 365 CRM系(SalesやCustomer Service)を選択し、「こちらからサインアップ」をクリックします。
https://trials.dynamics.com/Dynamics365/Signup/sales
以下のようなダイアログが表示されますが、「いいえ、サインアップを続行します」をクリックします。
サインアップ画面にたどり着いたら、一番最初にリージョンを選択するプルダウンリストがあるので、ここで「United States」を選択します。あとは、そのまま案内通りにアカウントを作成すればOKです。(以降は割愛)
次に、作成したOffice365アカウントを使って、Business Centralのトライアルを取得します。取得しますが、ここで一点注意が必要です。
Dynamics 365 はユーザーの言語設定で表示するアイテムを変えています。なので、ブラウザの言語設定を英語に変更してください。Chromeですと、以下のようにSettings→Advanced→LangageからEnglishを選択することで、対応可能です。設定後、一度ブラウザの再起動が必要なので注意してください。
そうしたら、再度トライアルのセットアップ画面に移動します。すると、Business Centralのメニューが増えているのがわかるかなと思います。ここでBusiness Centralを選択し、事前に取得したUSリージョンのアカウントでGET STARTEDを実行します。
https://trials.dynamics.com/Dynamics365/Signup/sales
ライセンスの確認などのチェックが完了すれば晴れて以下のように環境のデプロイメントが開始されます。
少し待てば、このように、Business Centralの画面が表示されます。USのアカウントや言語設定など、ひっかかりポイントはあるものの、そこさえ押さえてしまえば難しいところはあまりありません。
API を使う準備
さて、せっかく環境を手に入れたので、APIを叩いてみましょう。
Business CentralのAPI Referenceは以下のURLで公開されています。
https://docs.microsoft.com/en-us/dynamics-nav/api-reference/v1.0/
認証にはいくつかアプローチがありますが、今後スタンダードとして間違いの無い、Azure ADベースのOAuth 2.0 で行ってみます。
まず、Office365 管理センターなどから、Azure ADの管理画面に移動し、アプリケーションの登録を行います。
今回はローカルホストから接続するので、リダイレクトURLは「http://localhost:33333」としました。ここはポートがあいていれば、任意のものでOKです。
次に、APIのアクセス許可を設定します。Dynamics 365 Business Centralが一覧にあるので、こちらを選択し
「委任されたアクセス許可」から「user_impresonation」を選択します。この場合、最終的にユーザーログインが必須となるので、注意しましょう。
アプリケーション認証もあるようですが、私は現在未チェック。今後余裕があればきっと、、、。
あとはクライアントシークレットを生成し
アプリケーションIDをコピーすれば準備完了です。
APIアクセスを行う前に、自身の環境情報をチェックしておきましょう。
Business Central のTOPページに移動したときに表示されるこのURLに必要情報が含まれています。
このGUID(edb74166-0f9c-4489-92ff-9e2d3c1b68f4)とCompany(CRONUS%20USA%2C%20Inc.)をAPIリクエストで利用します。
APIリクエストを行う
それでは実際にAPIリクエストを行います。ここはお馴染みPOSTMANでいってみましょう。Postmanを立ち上げて、新しいリクエストを作成し、「Authorization」→「OAuth2.0」を選択、「Get New AccessToken」をクリックします。
OAuth 2.0 の設定値は以下のような感じです。ここで予め取得しておいたAzure ADアプリの情報を使います。(ちなみにこれらの情報は削除済みなので、使えません。あしからず。わかりやすいように生の情報を置いています)
- GrantType:Authorization Code
- Callback URL:http://localhost:33333(Azure ADで設定したリダイレクトURL)
- Auth URL:https://login.windows.net/{GUID}/oauth2/authorize?resource=https://api.businesscentral.dynamics.com(GUIDをテナントIDに置き換える)
- Access Token URL:https://login.windows.net/{GUID}/oauth2/token(GUIDをテナントIDに置き換える)
- Client ID:11f3530c-3444-4dd6-91b3-fc8b5394c9d1(Azure ADから取得したもの)
- Client Secret:vhkjHm4:mJ@6le?xqqH9mA/59C7GA]93(Azure ADから取得したもの)
設定後、Request Tokenをクリックすると、ログイン画面が立ち上がるので、対象のアカウントでログインしましょう。
ログイン後、Permissionの許可を行えば、完了です。
無事、アクセストークンが取得できました。
では、実際にAPIアクセスしてみましょう。
API Endpointは「https://api.businesscentral.dynamics.com/v1.0/{GUID}/ODataV4/」で、
Metadata APIはこんなURLになります。「https://api.businesscentral.dynamics.com/v1.0/{GUID}/ODataV4/$metadata」
まずは、Metadata APIから。GETリクエストで「https://api.businesscentral.dynamics.com/v1.0/{GUID}/ODataV4/$metadata」を指定するだけでOKです。
次に、SalesOpportunitiesを取得してみましょう。Business CentralではTenantIDの他に、Companyでそれぞれリソースが分けられているので、URIにその指定を挟む必要があります。
その指定の後に、取得したいリソース名を付与するので、こんな感じのURIになります。
Companyは知っていれば以下のようにGUID指定でもかまいません。
こんな感じで取得できます。
URIのポイントさえ押さえれば、Dynamics 365 CRM系と同じ用にアクセスできるのではないかなと思います。
APIを追加したい場合
さて、Business Centralは多数のリソースを抱えているので、予め定義されたリソースやクエリしかAPIとしてアクセスできません。なので、このビューで取得したいなーと思った場合には、API設定を追加する必要があります。
例えば、この Customer And Salesperson のビューを追加したい場合は
検索ボタンから「Web」で検索し、「Web Services」を選択します。
すると、現在Web APIでアクセス可能なリストの一覧が表示されるので、新しくここに追加するために「+NEW」をクリック
後ろの方に行が追加されるので、Object TypeでQueryを選択します。
次に定義するリソースを探します。Object IDのところから「select from full list」を選択し
一覧画面を開いてから、Customerと入力。すると、「Cusotmer and Salesperson」のビュー定義が見つかるので、これを選択して追加します。
最後にAPIでアクセスする際のリソースIDを指定します。ここは重複しない任意のIDを入力すればOKです。
Publicにチェックを入れて、他の行にカーソルを合わせると、以下のようにURIが定義されます。これでAPIアクセスが可能になります。
生成されたURLはこんな感じです。
もちろん、Postmanからも。
以上です。