Dynamics CRM : コードレビュー事例 : イメージを利用したプラグイン

みなさん、こんにちは。 今回は開発者の方向けの情報として、北米 PFE ブログからプラグインの コーディングに関する記事を紹介します。 元情報 : Code Review: Refactored Handling of Plug-in Pre-Image Attribute Values =============================================================== 最近関わった Microsoft Dynamics CRM 2011 のプラグインに関するコードレビュー プロジェクトで、カスタムコードが繰り返し利用されるパターンに気が付きました。 このような場合、繰り返されるコードをメソッドとして記述することで、プラグイン で利用するコードをより簡潔にできると共に、メンテナンス性も向上します。 問題のコードは pre-image を利用して処理前のエンティティの列情報を確認する ものですが、これは Update プラグインでよく利用されるシナリオです。Update 処理では、実際に更新される列の情報のみがプラグインに引き渡されるため、 その他の更新されない列の情報は確認が行えません。 イメージを利用することで、処理の前後におけるレコードの任意の列情報を プラグインに引き渡すことが可能になります。この機能を利用すれば、不要な Retreive をプラグイン内で実行する必要がなくなり、パフォーマンスが向上 しますが、フィールドの情報を取得する際、InputParameter と Image の両方 から値を取得する必要があります。通常以下の流れになります。 1. プライマリエンティティよりフィールドの値の取得を試みる。 2. 値が取得できた場合はそれを利用する。 3. 値が取得できない場合は、イメージから値の取得を試みる。 4. 値が取得できたらそれを利用する。 5. 値が取得できない場合は既定値を利用する。 実際のコードでは以下のようになります。 Common…


Dynamics CRM 環境でのウィルススキャン例外設定について

みなさん、こんにちは。 今回は先日 US の Dynamics CRM プレミアフィールドエンジニアリングチームが公開しているブログ記事を紹介します。 元記事 : Anti-virus exclusions for Microsoft Dynamics CRM Microsoft Dynamics CRM 環境での ウィルススキャンのベストプラクティスは質問としてよくあがってきます。ウィルススキャンの設定によってはパフォーマンスが大きく影響される可能性がありますのでこちらは重要な確認ポイントとなります。また、ウィルススキャンは他アプリケーションが使うファイルをロックし、他アプリケーションからこのファイルにアクセスできなくすることがあります。Dynamics CRM は複数のサーバーにアクセスし、その環境にあるファイルを広範囲に触ることがあるので、様々な観点からウィルススキャンの例外設定を検討する必要があります。ウィルススキャンはアプリケーションサーバー、SQL Server、Active Directory サーバー、Reporting Server、そして クライアントマシンに影響を与える可能性があります。 パフォーマンスへの影響を最小限に抑えるためには以下のファイルとフォルダをウィルススキャンの例外に追加することをご検討ください。こちらの一覧は様々な御客様環境で作業をしてきた経験をもとにまとめたリストであり、ウィルススキャンに影響される可能性のあるファイルをすべて網羅しているわけではありません。なお、ファイルを例外に追加するべきか否かは環境毎に検討する必要があり、無暗にファイルを例外に追加することで意図しない問題が発生する可能性もあります。従って、こちらの一覧は御客様のIT管理ポリシーと照らし合せてご利用ください。 CRM Servers 以下のディレクトリは例外に追加すべきです。 %SystemDrive%\inetpub\temp\IIS Temporary Compressed File %systemroot%\system32\inetsrv CRM Server ではウィルススキャンのスクリプトスキャン機能を無効にしてください。 以下の弊社技術情報には IIS と ウィルススキャンに関する情報が記載されています。 http://support.microsoft.com/kb/817442 http://support.microsoft.com/kb/821749 SQL Server SQL Server のデータファイル。これらのファイルは通常以下のような拡張子を持ちます。 .mdf .ldf .ndf SQL Server…


Dynamics CRM : PrincipalObjectAccess テーブルサイズが肥大化する原因

みなさん、こんにちは。 今回はパフォーマンスとセキュリティに関連するトピックをお届けします。Microsoft Dynamics CRM では、CRM ユーザーが適切なレコードにのみアクセスできるよう、 セキュリティの機能を提供しています。 セキュリティの機能は多岐に渡りますが、その中で 「共有」 と呼ばれる機能があり、 任意のレコードを任意のユーザーに共有することが可能です。この場合、ユーザー が所有しているセキュリティロールに依存することなくレコードを参照できますが、 その情報は個別にデータベースに格納します。 しかしながら、時としてその情報が膨大になることでパフォーマンスに影響することも 事実であり、パフォーマンスチューニング時によく話題になります。 今回はこの共有機能に関連した記事を US チームブログより紹介します。 ※記事のタイトルでは Microsoft Dynamics CRM 4.0 とありますが、現行バージョン にも共通する内容となっています。 元記事 : Excessive PrincipalObjectAccess Table Growth in CRM 4.0 from the Reparent – Cascade All Setting 私は Microsoft Dynamics CRM システムで巨大なデータを扱うお客様とお仕事を する機会がよくあります。そのようなシステムにおいて各種テーブルのデータ量を 見ていると、PrincipalObjectAccess (POA) テーブルのデータ量が期待より遥かに 多い場合があります。POA テーブルは、特定のレコードをユーザーがアクセス できるよう情報を保持しており、POA の 1…


Microsoft Dynamics CRM の Microsoft SQL Server 2012 サポートに関して

みなさん、こんにちは。 今回はつい先日公開されたばかりの技術情報をご案内します。 Support for Microsoft Dynamics CRM with Microsoft SQL Server 2012 http://support.microsoft.com/kb/2686619 こちらの技術情報にあるとおり、Microsoft Dynamics CRM 4.0 および Microsoft Dynamics CRM 2011 では特定の Update Rollup 以降で Microsoft SQL Server 2012 をサポートします。 技術情報にはいくつか既存の問題と対応が含まれていますので、今後 SQL Server のアップグレードが予定されている場合には、ご確認ください。 尚、日本における Microsoft SQL Server 2012 製品版の公開時期と 製品情報は、以下のリンクをご覧ください。 http://www.microsoft.com/ja-jp/sqlserver/2012/default.aspx Microsoft SQL Server 2012 高可用性の新機能である AlwaysOn に 関連する情報は、後日別途提供される予定です。 – Dynamics CRM サポート…


Dynamics CRM との通信で HTTP 401 応答を減らす方法

みなさん、こんにちは。 今回も US チームのブログより、ネットワーク通信のパフォーマンスに関する情報を 紹介したいと思います。IIS レベルの設定になりますので Microsoft Dynamics の 設置型全てのバージョンに応用が可能です。 情報元 : How to Decrease 401 Responses in CRM Web Traffic Microsoft Dynamics CRM のような Web アプリケーションのトラフィックをモニターすると、 HTTP 応答 200 (Success) を受け取る前に、頻繁に HTTP 応答 401 (Access Denied) の パケットがあることに気がつくと思います。Internet Explorer はまず匿名でのアクセスを 試みるため、ケルベロス認証や NTLM 認証を利用する場合は通常の動作です。 画像等のファイルは匿名でのアクセスが許可されているため、HTTP 応答 401 を受け取ることなく HTTP 応答 200 を受け取っています。ASPX ページ等他のものでは、HTTP 応答 401…


Microsoft Dynamics CRM 互換性リスト

みなさん、こんにちは。 今回は管理者向けの記事として、Microsoft Dynamics CRM と 互換性のある製品とバージョンの一覧を示した KB を紹介します。 Microsoft Dynamics CRM Compatibility List http://support.microsoft.com/kb/2669061 こちらには Microsoft Dynamics CRM 4.0 および 2011 の互換性 情報が記載されており今後も更新されますので、定期的にご覧ください。 – Dynamics CRM サポート 中村 憲一郎


Microsoft Dynamics CRM 4.0 Update Rollup 20 がリリースされました!

みなさん、こんにちは。 2011年11月10日(US 時間) に CRM 4.0 Update Rollup 20 がリリースされました。 次のリンクから Update Rollup 20 に関する情報を確認することができます。 マイクロソフト ダウンロード センター: http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=b720eec7-5d9c-4498-a260-2b56e00c2390&displaylang=ja-necMicrosoft サポート技術情報: http://support.microsoft.com/kb/2550098/ja Update Rollup 20 概要 Update Rollup 20 は累積修正プログラムですが、次の 2 つの Update Rollup 20 に関しては、適用前に Update Rollup 7 を適用する必要があります。 その他の CRM コンポーネントには、適用前提となっている Update Rollup はありません。 CRM Outlook クライアント (CRMv4.0-KB2550098-i386-Client-JPN.exe) データ移行マネージャー (CRMv4.0-KB2550098-i386-DMClient-JPN.exe) なお、2011年8月時点でダウンロード センターから入手可能な CRM 4.0 Outlook クライアントには、Update Rollup 10 が含まれおり、ダウンロード ファイルに組み込まれています。バージョンは…

0