Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Dynamics CRM

【Dynamics CRM】【7.1 新機能】代替キー設定時の注意事項

Dynamics CRM 7.1から代替キーという機能が追加されてました。 詳しくは過去記事で紹介しています。 【Dynamics CRM】【C#】【7.1新機能】代替キーの使い方 - Morning Girlkageura.hatenadiary.jp ここを実装していくにあたり、いくつか注意すべき点を見つけ…

【Dynamics CRM】【Excel連携】インポート処理の仕様変更?

Dynamics CRM 2015 Update1だと思われるのですが、Excelのインポート処理の仕様が変わっている感じがします。 気になっている点 Excelで一括インポートを実施する際、検索フィールドを含めた状態でインポートを実施すると、処理の流れがCreate一発で終わらな…

【Dynamics CRM】【Xrm.Page】OpenEntityForm利用時にPartyListの値設定ができない

Dynamics CRMのXrm.PageオブジェクトにOpenEntityFormという、新規ないし既存のレコードのフォームを開くメソッドがあるのですが、、、 Xrm.Utility (クライアント側の参照) openEntityForm Xrm.Utility (クライアント側の参照) 例えば、活動の関連【regardi…

【Dynamics CRM】【管理者向け】インスタンスのコピー

Dynamics CRM OnlineではProライセンスを25個以上購入すると、サンドボックスと呼ばれる検証環境が無償でついてきます。 (Pluginのサンドボックスとは違います) サンドボックスインスタンスについてはDynamics CRM チームブログなどからどうぞ。 MSDN Blog…

【Dynamics CRM】【C#】【7.1新機能】UpsertRequest

Dynamics CRM 2015 Update1の新機能。続いてはもう一つの目玉機能と思っている、UpsertRequest。 SDK関係新機能の中ではとりわけわかりやすい追加機能の一つかと思います。 Requestに含めたEntityの代替キー指定で、レコードが既に存在していればUpdateを行…

【Dynamics CRM】【C#】【7.1新機能】ExecuteTransactionRequestの活用

Dynamics CRM 7.1のSDK関係新機能の目玉(と思ってる)、[ExecuteTransactionRequest]をやってみました。 Dynamics CRMのSDKを利用したアプリケーションでは、基本的にトランザクションのサポートが無く、ロールバックを考慮することが大変面倒でした。 (…

【Dynamics CRM】【C#】【7.1新機能】代替キーの使い方

Dynamics CRM 2015 Update1で結構SDK周りの拡張が行われました。 その中でも地味ながら、うれしい拡張が代替キーと思われます。 代替キー概要 Dynamics CRMのSDKを用いてレコードのUpdateを行う場合は、Guidを指定する必要がありました。 たとえば、取引先担…

【Dynamics CRM】【SSRS】監査の取得

Dynamics CRMの監査履歴ってちょっと見づらいですよね。 細かな変更内容が見れるのはいいんですが、標準ではエクスポートもできないので、 何かと調べごとをしたい、アクセス状況とかを見たい場合にはあまり向いていません。 今回は、簡単なものですが、SSRS…

【Dynamics CRM】【7.1】IMEモードの入力制御が行われないバグ

Dynamics CRM 2015 Update1(7.1)よりターボフォームが採用されました。 レンダリングが何やら早くなっているようですが、個人的にあまり恩恵を感じられていません……。 そんな中、このターボフォームでバグを発見してしまいました。 概要 Dynamics CRMの入…

【Dynamics CRM】【Plugin】【7.1新機能】Pluginトレースログ

Dynamics CRM7.1(2015SP1)からPluginのトレースログを簡単に残すことができる機能が追加されました。 今までは ・同期Pluginの場合、例外発生ダイアログが表示され、そこからエラーログをダウンロードする、 ・非同期Pluginの場合、システムジョブのPlugin…

【Dynamics CRM】【7.1 新機能】テーマの変更

Dynamics CRM 2013からタブレットデバイス向け(?)にメトロスタイルのナビゲーションが採用されていました。 このナビゲーション、お客さんからよく「色変更できないの?」と言われていたのですが それがようやくこの7.1バージョンで変更できるようになり…

【Dynamics CRM】【7.1 新機能】Excel Onlineによる編集

Dynamics CRM 7.1からExcel Onlineでデータの更新ができるようになりました。 ライセンスについて Dynamics CRM Onlineのライセンスを持っていれば、特に問題なく利用できるみたいです。 初めもしかしたらOffice365も必要なのかとおもいきや、そんなことはあ…

【Dynamics CRM】Dynamics CRM 2015 Update1 について

CRM 2015になってから、まだ間もない気がしますが、もうアップデートの季節のようです。 5月中らしいですが、早いところ、 Microsoft Dynamics CRM 2015 リリースプレビューガイド 以下のSlideShareでMarketingとCRMの新機能が紹介されています。 Microsoft …

【Dynamics CRM】【Tool】XrmToolBoxが日本データセンター環境にも対応

最近Dynamics CRM Onlineのデータセンター環境が日本でもできました。 今まで普通に取得するとアジア・パシフィック環境(crm5)だったのですが、現在取得しますと日本環境(crm7)で構築できます。 すでに日本データセンターでの導入事例も出ていますね。 …

【C#】【Dynamics CRM】Pluginにおけるトレースと例外処理

Dynamics CRM Pluginでの例外処理、例外の確認方法が同期・非同期などで異なるので、その点について確認していきたいと思います。 例外処理結果の違い Dynamics CRM Pluginで例外をスローすると、同期・非同期で結果の表示方法が違います。 同期であれば、We…

【C#】【Dynamics CRM】PluginにおけるPre・PostEntityImagesの利用

Dynamics CRM Pluginでは、例えばUpdateに登録したPluginの場合、ContextのInputParameterに送られてくるデータは更新されたデータのみになります。 しかしながら、シナリオによってはUpdateする前の値と比較し何かしらの処理を行いたい、もしくはUpdate後の…

【C#】【Dynamics CRM】【Azure】Azure Webサービス Webジョブで定期実行

Dynamics CRM でお客さんがやりたいことリストのトップへ常に名を連ねるものが外部データ連携だと思います。 SFA的に使うにしても、やはり何かしらのデータを外部から持ってこないと始まるものも始まらない、みたいな感じはどこでもありますね。 基本的なア…

【C#】【Dynamics CRM】PluginのContextを用いた関連レコードの作成

個人的にPluginのよくあるパターンとして、CreateMessageに設定して、作成されるレコードに関連づいたレコードを作成する、というものがある気がします。 もちろん、ワークフローでも可能なアプローチですが、例えば一括で複数件の関連レコードを作成する、…

【C#】【Dynamics CRM】PluginのContextについて

Dynamics CRM Pluginは各Messageの処理に関連付けて登録し、処理を実行します。 その実行する際に、実行ContextがPluginにパラメータとして渡ってきます。 Contextには様々な種類のデータが格納されて来ますが、そのContextの概要とContextの中で重要な位置…

【Dynamics CRM】【Plugin】PluginRegistrationTool SDK6.1以降の問題

Dynamics CRM でPluginを登録するために使用するPluginRegistrationToolなのですが、 SDK 6.1以降、日本語環境で正常に動作しないという問題が発生していました。 Download Microsoft Dynamics CRM Software Development Kit (SDK) for CRM Online and on-pr…

【C#】【Dynamics CRM】Pluginの作成(概要)

今までいくつかのプロジェクトでDynamics CRM のPluginを作成してきたけども、認識として曖昧な部分もあったので、改めて全体的な内容を確認し直して、書き留めておきたいと思います。 Dynamics CRM におけるPluginの概要 Dynamics CRMではレコードの作成時…

【C#】【Dynamics CRM】並列処理の実行結果比較

今回はDynamics CRMで実際に並列処理結果を比べたらどうなるの? というのをやってみました。 実施方法は3種類。 ・一つ目は単純にforを回して、レコードをCreateし続けるもの。 ・二つ目は前回作成したParallel.ForによるCreate。スレッド数の制限は無し。 …

【C#】【Dynamics CRM】Parallel.Forによる並列処理

前回Dynamics CRMのExecuteMultipleRequestによる一括実行を書き留めましたが、今回は.netの並列処理の1つであるParallel.For処理方法を記載してみたいと思います。 詳しくはやっぱりDynamics CRM team Blogで実践されてますが、ここはやっぱり自分でも試し…

【C#】【Dynamics CRM】ExecuteMultipleRequestによる一括実行

Dynamics CRMにおいて、C#などの外部プログラムでCUD操作を行う際、基本的に1件ずつレコードを処理する形になります。 ですが、ExecuteMultipleRequestクラスを利用することで、Dynamics CRM各Execute Messageの一括実行が可能になります。 これが意外と性能…

【C# 】【Dynamics CRM】事前バインディングのエンティティフィルタリング

前回すべてのエンティティの事前バインディング方法を記載したので、今回は特定のエンティティに絞った事前バインディングの方法を確認しておきたいと思います。 概要 Dynamics CRM SDKで提供されているサンプルコードのCrmSvcUtilExtensionsフォルダのBasic…

【C#】【Dynamics CRM】事前バインディングの手順

Dynamics CRMでは.NETプログラム(CS・VB)を作成する際、事前バインディングという手法(ツール?)を提供しています。 毎度毎度やり方を確認しているので一度ちゃんとまとめておきたいと思います。 今回はDynamics CRM Onlineにて実施。 実施環境 Windows …

【C#】【Dynamics CRM】QueryExpression によるページングの指定

Dynamics CRM から組織サービス経由で大量のデータを取得(RetrieveMultiple)する場合、標準で取得件数5000件制限が付与されています。 予めフィルターしたデータを取得するのであれば、あまり問題にはなりませんが、 5000件を超えるデータを取得することが…

【C#】【Dynamics CRM】BlukDeleteJobの作成

Dynamics CRMのデータを一括削除する必要があったので、 その辺りを調べていたのだけど手法としては3つあるかなぁと。 Dynamics CRM における削除手法 単純にservice.Delete にGuidを渡してあげる BlukDeleteJobを生成する。 ExecuteMultipleをDeleteに渡し…

【C#】【Dynamics CRM】Metadataの取得

Dynamics CRMのプライマリフィールドを調べたい! とうことで、Metadata取得周りを漁っていたのですが、随分めんどくさかったので、簡単にまとめました。 概要 まず理解する必要があるのは【MetadataFilterExpression】【MetadataPropertiesExpresion】の2つ…

【C#】【Dynamics CRM】

毎度毎度仕事でDynamics CRMへコネクションするのだけど、 毎度毎度調べ直している気がするので、接続方法を少しづつ書き留めておこうと思う。 概要 とりあえず、一番簡単にDynamics CRM Onlineへ接続する方法 CrmConnectionクラスのParseメソッドにそのまま…