顧客にたいする営業活動を記録するための活動(仕事、レター、電話など)はいったんクローズすると、Dynamicsの画面からは再度オープン状態にもどせません。クローズされた活動を再 オープンにする方法を記載します。活動の一つ 仕事 エンティティを再オープンする方法を ワークフロー、PowerShell、 C#のカスタムプログラムの 3種類の方法を記載します。
PowerShell と カスタムプログラムを使用する方法は、 Dynamics CRM SDK が必要になります。
1. PowerShell を使用する方法
仕事を再オープンするPowerShell スクリプトのサンプル(TaskReOpen.ps1) は次のとおりです。スクリプト内で使用している GetCrmService.ps1 というスクリプトは、[Dynamics CRM] PowerShell で Dymamics CRM で紹介しているスクリプトです。スクリプトは、OnPremise (AD認証) で、組織 org1, スクリプトを実行するローカルのDynamics CRM サーバに接続する環境するようにしています。
# TaskReOpen.ps1 # クローズした仕事を再オープンする $service = ./GetCrmService.ps1 "org1" "http://localhost" $request = New-Object Microsoft.Crm.SdkTypeProxy.SetStateTaskRequest $request.EntityId = [guid] "40F007EE-A01F-DF11-977B-0003FFBF2D57" $service.Execute($request) $request.TaskStatus = 3 $request.TaskState = "Open"
2. カスタムプログラムを使用する
PowerShell で行ったことをC#プログラムで行う場合の抜粋を掲載します。GetCrmService は CrmService を作成するヘルパメソッドです。
static void Main(string[] args) { // CrmService を作成. CrmService service = GetCrmService(); // 仕事のステータスを変更する SetStateTaskRequest request = new SetStateTaskRequest(); request.TaskStatus = 3; // InProgress request.TaskState = TaskState.Open; // オープンにする // オープンにする仕事のID request.EntityId = new Guid("608122B1-A01F-DF11-977B-0003FFBF2D57"); service.Execute(request); }
3. ワークフローを使用する
クローズ状態の仕事をオープン状態にするワークフローを作成してみます。
3.1 ワークフローを作成する
設定メニューからワークフロー一覧を表示します。一覧のメニューから新規作成を選択します。表示されたポップアップ画面で、ワークフロー名を "完了した仕事をオープンに戻す" にし、エンティティに "仕事" を選択して、新規作成します。
次の画面で、下図のようにスコープを組織全体、 実行可能なワークフローにオンデマンドにチェックします。次に、ステップの追加→条件の確認を選択します。
上家の指定画面が表示されるので、 仕事の状態が 完了または、取り消し に等しいという条件を作成して 画面を閉じます。
ワークフローのこの行を選択肢、[ステップの追加]をクリックします。を選択します。
ステップの追加メニュー→状態の変更 を選択します。
次のレコード ステータスに変更で 仕事、処理中を選択します。
ワークフローが完了しました。保存して公開します。
3.2 ワークフローを実行する
作成したワークフローを実行してみます。クローズした仕事のエンティティフォームを表示します。メニューのワークフローの実行を選択します。
作成したワークフロー "完了した仕事をオープンに戻す" を選択して OK ボタンをクリックします。
確認画面が表示されます。OKボタンをクリックします。
エンティティフォームを閉じて、数秒後画面を再びフォームを開くと状態がオープンになり、仕事レコードが編集できるようになります。
4. まとめ
3とおりの方法で活動を再オープンする方法を紹介しました。 オンデマンドでやりたい場合やバッチで行いたい場合など、用途に合わせて実装方法を使い分ければよいと思います。
さんのコメント: さんのコメント: