<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Identity Management Extensibility</title><link>http://blogs.msdn.com/b/imex/</link><description>This blog covers extensibility points in ILM &amp;quot;2&amp;quot; such as the web service interface.

All content is provided &amp;quot;as is&amp;quot; without any warranty, expressed or implied.</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Forefront Identity Manager 2010 Management Pack is on Connect</title><link>http://blogs.msdn.com/b/imex/archive/2010/07/01/forefront-identity-manager-2010-management-pack-is-on-connect.aspx</link><pubDate>Fri, 02 Jul 2010 03:21:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10033685</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=10033685</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2010/07/01/forefront-identity-manager-2010-management-pack-is-on-connect.aspx#comments</comments><description>&lt;p&gt;This post is to help people discover the FIM MP via search engines.&amp;nbsp; The Forefront Identity Manager 2010 Management Pack is posted on Microsoft Connect while we gather customer feedback.&lt;/p&gt;
&lt;p&gt;Enroll in the FIM connect site and look for the Management Pack (MP) in downloads.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://connect.microsoft.com/site433"&gt;https://connect.microsoft.com/site433&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10033685" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/MP/">MP</category></item><item><title>CodePlex project for community client</title><link>http://blogs.msdn.com/b/imex/archive/2010/04/09/codeplex-project-for-community-client.aspx</link><pubDate>Fri, 09 Apr 2010 22:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9993463</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9993463</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2010/04/09/codeplex-project-for-community-client.aspx#comments</comments><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/imex/archive/2009/10/20/shout-out-to-paolo-for-tweaking-the-unsupported-client.aspx" mce_href="http://blogs.msdn.com/imex/archive/2009/10/20/shout-out-to-paolo-for-tweaking-the-unsupported-client.aspx"&gt;Paolo&lt;/A&gt; started a codeplex project to continue development of the &lt;A href="http://blogs.msdn.com/imex/archive/2009/10/05/the-ida-guys-and-rc1-unsupported-client.aspx" mce_href="http://blogs.msdn.com/imex/archive/2009/10/05/the-ida-guys-and-rc1-unsupported-client.aspx"&gt;unsupported client&lt;/A&gt;.&amp;nbsp; Paolo fixed a bunch of bugs, added more strongly-typed classes, and enabled approvals.&amp;nbsp; Check it out now:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://fim2010client.codeplex.com/" mce_href="http://fim2010client.codeplex.com/"&gt;http://fim2010client.codeplex.com/&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9993463" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/release/">release</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Forefront Identity Manager 2010 has Shipped!</title><link>http://blogs.msdn.com/b/imex/archive/2010/03/02/forefront-identity-manager-2010-has-shipped.aspx</link><pubDate>Tue, 02 Mar 2010 18:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9971658</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9971658</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2010/03/02/forefront-identity-manager-2010-has-shipped.aspx#comments</comments><description>&lt;P&gt;It's been a long and fruitful road, but now we're pleased to announce that FIM is available for customers!&amp;nbsp; Read the full Forefront blog post here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/forefront/archive/2010/03/02/rsa-conference-2010-identity-at-the-forefront.aspx"&gt;http://blogs.technet.com/forefront/archive/2010/03/02/rsa-conference-2010-identity-at-the-forefront.aspx&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9971658" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/release/">release</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/RTM/">RTM</category></item><item><title>Excellent description of RCDCs</title><link>http://blogs.msdn.com/b/imex/archive/2009/12/09/excellent-description-of-rcdcs.aspx</link><pubDate>Wed, 09 Dec 2009 20:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9934277</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9934277</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/12/09/excellent-description-of-rcdcs.aspx#comments</comments><description>&lt;P&gt;Please see David's excellent guide to using RCDCs:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://www.ilmbestpractices.com/blog/2009/11/fim-rcdc-explained-in-brief.html"&gt;http://www.ilmbestpractices.com/blog/2009/11/fim-rcdc-explained-in-brief.html&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9934277" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Using PowerShell to automate tasks in FIM</title><link>http://blogs.msdn.com/b/imex/archive/2009/11/11/using-powershell-to-automate-tasks-in-fim.aspx</link><pubDate>Wed, 11 Nov 2009 20:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9919847</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9919847</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/11/11/using-powershell-to-automate-tasks-in-fim.aspx#comments</comments><description>&lt;P&gt;Markus has put together a great set of example PowerShell scripts which automate many tasks in FIM.&amp;nbsp; Check them out today in the Scriptbox:&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;FONT color=#800080&gt;&lt;A href="http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/807617bc-b560-4cbe-a137-b9f338bfbd8e"&gt;http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/807617bc-b560-4cbe-a137-b9f338bfbd8e&lt;/A&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;A href="http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/559143af-3171-46db-90c7-4bbd92889cf2"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919847" width="1" height="1"&gt;</description></item><item><title>Another great tweak from Paolo</title><link>http://blogs.msdn.com/b/imex/archive/2009/11/10/another-great-tweak-from-paolo.aspx</link><pubDate>Tue, 10 Nov 2009 20:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9919843</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9919843</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/11/10/another-great-tweak-from-paolo.aspx#comments</comments><description>&lt;P&gt;Check out another useful tweak from Paolo with the unsupported web service client.&amp;nbsp; Paolo adds another strongly-typed class to the client:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="https://espace.cern.ch/idm/Lists/Posts/Post.aspx?ID=14"&gt;https://espace.cern.ch/idm/Lists/Posts/Post.aspx?ID=14&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919843" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/client/">client</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Shout out to Paolo for tweaking the unsupported client</title><link>http://blogs.msdn.com/b/imex/archive/2009/10/20/shout-out-to-paolo-for-tweaking-the-unsupported-client.aspx</link><pubDate>Tue, 20 Oct 2009 19:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9910028</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9910028</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/10/20/shout-out-to-paolo-for-tweaking-the-unsupported-client.aspx#comments</comments><description>&lt;P&gt;Paolo at Cern has been using the unsupported client and contributing back to the community with bug fixes.&amp;nbsp; It's always exciting to see developer adoption of our platform!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/ffc16720-0dfb-4131-b676-9225f15b4f72?prof=required"&gt;http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/ffc16720-0dfb-4131-b676-9225f15b4f72?prof=required&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9910028" width="1" height="1"&gt;</description></item><item><title>The IDA Guys and RC1 unsupported client</title><link>http://blogs.msdn.com/b/imex/archive/2009/10/05/the-ida-guys-and-rc1-unsupported-client.aspx</link><pubDate>Mon, 05 Oct 2009 20:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9903304</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9903304</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/10/05/the-ida-guys-and-rc1-unsupported-client.aspx#comments</comments><description>&lt;P&gt;Many thanks to &lt;A href="http://blogs.technet.com/idaguys/default.aspx" mce_href="http://blogs.technet.com/idaguys/default.aspx"&gt;The IDA Guys&lt;/A&gt; for getting together an unsupported client for RC1.&amp;nbsp; We in the product group are deeply grateful for the great work the field do in extending the value of FIM for our customers.&lt;/P&gt;
&lt;P&gt;&lt;A title=http://blogs.technet.com/idaguys/archive/2009/10/04/fim-2010-rc1-resource-management-client-sample-announcement.aspx href="http://blogs.technet.com/idaguys/archive/2009/10/04/fim-2010-rc1-resource-management-client-sample-announcement.aspx" mce_href="http://blogs.technet.com/idaguys/archive/2009/10/04/fim-2010-rc1-resource-management-client-sample-announcement.aspx"&gt;http://blogs.technet.com/idaguys/archive/2009/10/04/fim-2010-rc1-resource-management-client-sample-announcement.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9903304" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/release/">release</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/client/">client</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>A new face in the Identity Management blog community</title><link>http://blogs.msdn.com/b/imex/archive/2009/10/02/a-new-face-in-the-identity-management-blog-community.aspx</link><pubDate>Fri, 02 Oct 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9902463</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9902463</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/10/02/a-new-face-in-the-identity-management-blog-community.aspx#comments</comments><description>&lt;p&gt;A colleague on the product team recently joined the ranks of bloggers in the Identity Management community.&amp;#160; Please welcome Darryl, and I look forward to his insights on FIM!&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/darrylru/default.aspx" href="http://blogs.msdn.com/darrylru/default.aspx"&gt;http://blogs.msdn.com/darrylru/default.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9902463" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Forefront Identity Manager 2010 RC1 is released!</title><link>http://blogs.msdn.com/b/imex/archive/2009/09/30/forefront-identity-manager-2010-rc1-is-released.aspx</link><pubDate>Thu, 01 Oct 2009 00:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9901514</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9901514</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/09/30/forefront-identity-manager-2010-rc1-is-released.aspx#comments</comments><description>&lt;p&gt;Check out the exciting announcement:&lt;/p&gt;  &lt;p&gt;&lt;a title="MSFT Identity and Access news- Forefront Identity Manager RC1 and ADFS 2.0 SAML interoperability" href="http://blogs.technet.com/forefront/archive/2009/09/30/forefront-identity-manager-2010-release-candidate-1-available-now-part-of-microsoft-s-overall-identity-and-access-strategy.aspx"&gt;MSFT Identity and Access news- Forefront Identity Manager RC1 and ADFS 2.0 SAML interoperability&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9901514" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/release/">release</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Discovered a new blog in the community: Identity Management Crisis</title><link>http://blogs.msdn.com/b/imex/archive/2009/09/24/discovered-a-new-blog-in-the-community-identity-management-crisis.aspx</link><pubDate>Thu, 24 Sep 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9899037</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9899037</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/09/24/discovered-a-new-blog-in-the-community-identity-management-crisis.aspx#comments</comments><description>&lt;p&gt;Interesting topics from a new entry in the identity management blogging community:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.idmcrisis.com/" href="http://www.idmcrisis.com/"&gt;http://www.idmcrisis.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9899037" width="1" height="1"&gt;</description></item><item><title>Reminder: The IDA Guys Blog</title><link>http://blogs.msdn.com/b/imex/archive/2009/09/17/reminder-the-ida-guys-blog.aspx</link><pubDate>Thu, 17 Sep 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9896441</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9896441</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/09/17/reminder-the-ida-guys-blog.aspx#comments</comments><description>&lt;p&gt;This is a friendly reminder that &lt;a href="http://blogs.technet.com/idaguys/default.aspx"&gt;The IDA Guys&lt;/a&gt; have some great content to check out.&amp;#160; For example,&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/idaguys/archive/2009/07/29/manageability-for-identity-and-access-management-solutions.aspx" href="http://blogs.technet.com/idaguys/archive/2009/07/29/manageability-for-identity-and-access-management-solutions.aspx"&gt;http://blogs.technet.com/idaguys/archive/2009/07/29/manageability-for-identity-and-access-management-solutions.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9896441" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Reminder: “Forum Greatest Hits”</title><link>http://blogs.msdn.com/b/imex/archive/2009/09/02/reminder-forum-greatest-hits.aspx</link><pubDate>Wed, 02 Sep 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9890085</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9890085</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/09/02/reminder-forum-greatest-hits.aspx#comments</comments><description>&lt;p&gt;A recent conversation with a customer reminded me about Markus and Ahmad’s “Greatest Hits” on the TechNet forums:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://social.technet.microsoft.com/Forums/en-US/identitylifecyclemanager/thread/284da8d2-201c-42ca-bc63-00651c0b80b8" href="http://social.technet.microsoft.com/Forums/en-US/identitylifecyclemanager/thread/284da8d2-201c-42ca-bc63-00651c0b80b8"&gt;http://social.technet.microsoft.com/Forums/en-US/identitylifecyclemanager/thread/284da8d2-201c-42ca-bc63-00651c0b80b8&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9890085" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/fun/">fun</category></item><item><title>No change in status to report</title><link>http://blogs.msdn.com/b/imex/archive/2009/08/27/no-change-in-status-to-report.aspx</link><pubDate>Fri, 28 Aug 2009 02:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9887631</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9887631</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/08/27/no-change-in-status-to-report.aspx#comments</comments><description>&lt;p&gt;This post is a reminder that we have no change in status to report with respect to dates, etc.&amp;#160; The previous post is still accurate:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://blogs.technet.com/stbnewsbytes/archive/2009/03/24/identity-lifecycle-manager-2-schedule-update.aspx" href="http://blogs.technet.com/stbnewsbytes/archive/2009/03/24/identity-lifecycle-manager-2-schedule-update.aspx"&gt;http://blogs.technet.com/stbnewsbytes/archive/2009/03/24/identity-lifecycle-manager-2-schedule-update.aspx&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9887631" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/release/">release</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>FIM Query Tool</title><link>http://blogs.msdn.com/b/imex/archive/2009/08/24/fim-query-tool.aspx</link><pubDate>Mon, 24 Aug 2009 22:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9882890</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9882890</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/08/24/fim-query-tool.aspx#comments</comments><description>&lt;P&gt;I was catching up with my blog roll and saw that Joe Zamora at Ensynch put together a nifty little app to query the FIM Service.&amp;nbsp; I recommend checking it out!&lt;/P&gt;
&lt;P&gt;&lt;A title=http://c--shark.blogspot.com/2009/07/auditing-with-fim-query-tool.html href="http://c--shark.blogspot.com/2009/07/auditing-with-fim-query-tool.html" mce_href="http://c--shark.blogspot.com/2009/07/auditing-with-fim-query-tool.html"&gt;http://c--shark.blogspot.com/2009/07/auditing-with-fim-query-tool.html&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9882890" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Office Protocol Docs Published</title><link>http://blogs.msdn.com/b/imex/archive/2009/07/15/office-protocol-docs-published.aspx</link><pubDate>Wed, 15 Jul 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9833551</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9833551</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/07/15/office-protocol-docs-published.aspx#comments</comments><description>&lt;p&gt;As a small part of the the &lt;a href="http://www.microsoft.com/presspass/press/2009/jul09/07-13Office2010WPCPR.mspx"&gt;announcement about Office 2010 Technical Preview&lt;/a&gt;, Microsoft published the &lt;a href="http://msdn.microsoft.com/en-us/library/cc441976(PROT.10).aspx"&gt;Office 2010 protocol documents&lt;/a&gt;.&amp;#160; A small and dedicated group of us worked hard and long for these past months to release documents related to FIM’s protocols on time.&amp;#160; Of particular interest to this audience may be the &lt;a href="http://msdn.microsoft.com/en-us/library/dd942210(PROT.10).aspx"&gt;FIM web service protocol document&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The protocol documents are part of Microsoft’s earnest commitment to interoperability. More information about this program can be found &lt;a href="http://www.microsoft.com/protocols/"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9833551" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/release/">release</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>FIM 2010 Wallpapers</title><link>http://blogs.msdn.com/b/imex/archive/2009/07/10/fim-2010-wallpapers.aspx</link><pubDate>Fri, 10 Jul 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9828864</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9828864</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/07/10/fim-2010-wallpapers.aspx#comments</comments><description>&lt;p&gt;I’ve been meaning to post some of Richard’s excellent desktop wallpapers for Forefront Identity Manager 2010.&lt;/p&gt;  &lt;p&gt;Direct Link: &lt;a title="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=imexsamples&amp;amp;DownloadId=6543" href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=imexsamples&amp;amp;DownloadId=6543"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=imexsamples&amp;amp;DownloadId=6543&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9828864" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fun/">fun</category></item><item><title>IDA Guys Blog</title><link>http://blogs.msdn.com/b/imex/archive/2009/06/10/ida-guys-blog.aspx</link><pubDate>Wed, 10 Jun 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9723329</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9723329</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/06/10/ida-guys-blog.aspx#comments</comments><description>&lt;P&gt;I am catching up on my blog roll, and I would like to shout out to a relatively new blog in the IDA space: &lt;A href="http://blogs.technet.com/idaguys/default.aspx" mce_href="http://blogs.technet.com/idaguys/default.aspx"&gt;The IDA Guys&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;+1 on "&lt;A href="http://blogs.technet.com/idaguys/archive/2009/06/06/never-say-it-will-only-take-five-minutes-the-case-of-the-ilm-sql-management-agent-trying-to-connect-to-a-database-with-a-trailing-space-in-the-name.aspx" mce_href="http://blogs.technet.com/idaguys/archive/2009/06/06/never-say-it-will-only-take-five-minutes-the-case-of-the-ilm-sql-management-agent-trying-to-connect-to-a-database-with-a-trailing-space-in-the-name.aspx"&gt;Never say it will&amp;nbsp;only take Five Minutes&lt;/A&gt;" -- the only task that takes 5 minutes is the one you don't do ...&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9723329" width="1" height="1"&gt;</description></item><item><title>Creating a Named Group and adding Persons as members</title><link>http://blogs.msdn.com/b/imex/archive/2009/05/11/creating-a-named-group-and-adding-persons-as-members.aspx</link><pubDate>Mon, 11 May 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9603792</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9603792</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/05/11/creating-a-named-group-and-adding-persons-as-members.aspx#comments</comments><description>&lt;p&gt;Leading announcement: I appreciate the feedback I’ve gotten from some of you about the API of the new client.&amp;nbsp; One piece of key feedback I want very much to incorporate is how we can unify accessing single-valued and multi-valued attributes.&amp;nbsp; Please send any additional comments my way.&lt;br&gt;&lt;/p&gt;  &lt;p&gt;For this week’s post we see the benefits of promoted properties and transactions.&amp;nbsp; The full source code is available on &lt;a href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=imexsamples&amp;amp;ReleaseId=1824" mce_href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=imexsamples&amp;amp;ReleaseId=1824"&gt;MSDN code gallery&lt;/a&gt;.&lt;/p&gt;  &lt;h1&gt;Example 1: Create a Named Group&lt;/h1&gt;  &lt;p&gt;In this example we create a new object and pass it to the client to be created on the server.&lt;/p&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;font face="Courier New"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt; CreateGroup()&lt;/span&gt; &lt;/font&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;{&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt; newGroup = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt;();&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; newGroup.DisplayName = &lt;font color="#a31515"&gt;"My New Group"&lt;/font&gt;;&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#008000"&gt;// Demonstrate accessing a non-promoted attribute&lt;/font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; newGroup[&lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt;.&lt;font color="#2b91af"&gt;AttributeNames&lt;/font&gt;.MembershipAddWorkflow].Value = &lt;font color="#a31515"&gt;"OwnerApproval"&lt;/font&gt;;&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#008000"&gt;// Any user object's ObjectId&lt;/font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; newGroup.Owner = &lt;font color="#0000ff"&gt;this&lt;/font&gt;.OwnerObjectId;&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.client.Create(newGroup);&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: 115%; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 10pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;p&gt;Now let’s add some users to the group.&lt;/p&gt;  &lt;h1&gt;Example 2: Add members to Group&lt;/h1&gt;  &lt;p&gt;In this example we demonstrate using a transaction to track our changes to the group object.&amp;nbsp; To add a member to a group simply add another reference to the ExplicitMember attribute. The public client exposes the ExplicitMember as List&amp;lt;Guid&amp;gt;, and in this example we add another Guid.&amp;nbsp; Once all of the changes are complete, we accept the changes and send the transaction to the client.&amp;nbsp; The client transforms the changes into da:ModifyRequest/da:Change elements and sends them over the wire.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt; AddUsers(&lt;font color="#2b91af"&gt;Guid&lt;/font&gt; groupId)&lt;/span&gt; &lt;/font&gt;&lt;/p&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;{&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt; group = &lt;font color="#0000ff"&gt;this&lt;/font&gt;.client.Get(groupId) &lt;font color="#0000ff"&gt;as&lt;/font&gt; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt;;&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#2b91af"&gt;RmResourceTransaction&lt;/font&gt; transaction = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2b91af"&gt;RmResourceTransaction&lt;/font&gt;(group);&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; transaction.BeginChanges();&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;int&lt;/font&gt; numberAdded = 0;&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;foreach&lt;/font&gt;(&lt;font color="#2b91af"&gt;RmResource&lt;/font&gt; resource &lt;font color="#0000ff"&gt;in&lt;/font&gt; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.client.Enumerate(&lt;font color="#a31515"&gt;"/Person[Department='Sales']"&lt;/font&gt;))&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#2b91af"&gt;RmPerson&lt;/font&gt; person = resource &lt;font color="#0000ff"&gt;as&lt;/font&gt; &lt;font color="#2b91af"&gt;RmPerson&lt;/font&gt;;&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;if&lt;/font&gt;(person != &lt;font color="#0000ff"&gt;null&lt;/font&gt;)&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numberAdded++;&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group.ExplicitMember.Add(person.ObjectID);&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#2b91af"&gt;Assert&lt;/font&gt;.IsTrue(numberAdded &amp;gt;0);&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; transaction.AcceptChanges();&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#2b91af"&gt;Assert&lt;/font&gt;.IsTrue(&lt;font color="#0000ff"&gt;this&lt;/font&gt;.client.Put(transaction));&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: 115%; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 10pt; font-size: 11pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;p&gt;We successfully created a group and added users to it programmatically.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9603792" width="1" height="1"&gt;</description></item><item><title>This morning’s post delayed until Monday</title><link>http://blogs.msdn.com/b/imex/archive/2009/05/07/this-morning-s-post-delayed-until-monday.aspx</link><pubDate>Thu, 07 May 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9594002</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9594002</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/05/07/this-morning-s-post-delayed-until-monday.aspx#comments</comments><description>&lt;p&gt;Preparing for TechEd has eaten up cycles to proof today’s post. I should have the cycles on the plane this weekend.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9594002" width="1" height="1"&gt;</description></item><item><title>What can I do with the web service interface?</title><link>http://blogs.msdn.com/b/imex/archive/2009/05/06/what-can-i-do-with-the-web-service-interface.aspx</link><pubDate>Wed, 06 May 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9589195</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9589195</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/05/06/what-can-i-do-with-the-web-service-interface.aspx#comments</comments><description>&lt;p&gt;I got a very good question today from a TAP customer last week which I hope is generally applicable.&amp;#160; The customer asked “What can I do with the web service interface?”&amp;#160; Fantastic question!&amp;#160; With the web service interface, you can….&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Do everything the portal does.&amp;#160; (The portal uses the web service interface for all requests.)      &lt;ol&gt;       &lt;li&gt;Create and delete groups. &lt;/li&gt;        &lt;li&gt;Add and remove members from groups. &lt;/li&gt;        &lt;li&gt;Create and delete users. &lt;/li&gt;        &lt;li&gt;Configure synchronization rules to provision users and groups to connected systems like AD. &lt;/li&gt;        &lt;li&gt;Configure management agents and the metaverse using ma-data and mv-data objects. &lt;/li&gt;        &lt;li&gt;Create calculated groups and read their resulting calculated membership. &lt;/li&gt;        &lt;li&gt;Create workflow definitions and configure policy to fire these workflows upon changes in the system. &lt;/li&gt;        &lt;li&gt;Search for objects with complex queries. &lt;/li&gt;        &lt;li&gt;Save searches for objects by using Sets and configure the system to take action when values in the set change. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If you are considering batch creation of groups or objects or are looking for a good integration story with another product, I invite you to consider using the web service interface.&amp;#160; For more information, I recommend reading my &lt;a href="http://blogs.msdn.com/imex/archive/2008/11/06/how-ilm-uses-its-own-web-services.aspx"&gt;previous post&lt;/a&gt; on this topic.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9589195" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Product Team Attendance at TechEd 2009</title><link>http://blogs.msdn.com/b/imex/archive/2009/05/05/product-team-attendance-at-teched-2009.aspx</link><pubDate>Tue, 05 May 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9587088</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9587088</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/05/05/product-team-attendance-at-teched-2009.aspx#comments</comments><description>&lt;p&gt;Members from the product team will attend the &lt;a href="http://www.msteched.com/teched/default.aspx"&gt;TechEd 2009 conference&lt;/a&gt; next week in Los Angeles.&amp;#160; Fred, Alym, Joel, and myself will attend the conference to speak about FIM and staff the booth.&amp;#160; I invite you to attend our sessions:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Alym and Joel will present using FIM to reduce the cost of the help desk for MSIT (SIA-307).&lt;/li&gt;    &lt;li&gt;Fred and I will speak about using FIM to reduce the cost of provisioning and credential management (SIA-308).&lt;/li&gt;    &lt;li&gt;Brian Komar will talk about integrating FIM workflows with certificate management (SIA-310).&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If you are in the area, please stop by our booth on the expo floor or check out one of our sessions.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9587088" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/Events/">Events</category></item><item><title>How to Search for Existing Groups</title><link>http://blogs.msdn.com/b/imex/archive/2009/04/30/how-to-search-for-existing-groups.aspx</link><pubDate>Thu, 30 Apr 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9580692</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9580692</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/04/30/how-to-search-for-existing-groups.aspx#comments</comments><description>&lt;p&gt;In this week’s post we look at the three most common queries to search for existing groups: getting all groups, “my groups”, and groups that match a particular filter.&amp;#160; While these examples show off the current prototype client, the filters and principles may be used on any client.&amp;#160; The test case source code may be downloaded from &lt;a href="http://code.msdn.microsoft.com/imexsamples/Release/ProjectReleases.aspx?ReleaseId=1824"&gt;MSDN code gallery&lt;/a&gt;.&lt;/p&gt;  &lt;h1&gt;Example 1: All Groups&lt;/h1&gt;  &lt;p&gt;To search for all groups, we pass a simple filter “/group” to the Enumerate method.&amp;#160; The Enumerate method returns a .NET enumerator, which C# can use in its foreach construct.&amp;#160; Note that the enumerator returns the parent class RmResource and that we down-cast the returned object to an RmGroup.&amp;#160; Some queries might return a mixed bag of object types so it is necessary to check the status of the cast in production.&lt;/p&gt;  &lt;p&gt;Behind the scenes the enumerator is making the enumerate and pull requests.&amp;#160; This iterator does not expose the count of the enumeration since we would prefer to move away from clients relying upon it.&amp;#160; Therefore, if you only want a fixed number of objects, either include a break in the foreach or make the pull request with MaxElements set to the value you desire.&lt;/p&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;[&lt;font color="#2b91af"&gt;TestMethod&lt;/font&gt;]&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;font face="Courier New"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt; Example1AllGroups()&lt;/span&gt; &lt;/font&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;{&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008000"&gt;// In this example we enumerate all groups in the system&lt;/font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008000"&gt;// and show how to get some common attributes&lt;/font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#2b91af"&gt;RmResource&lt;/font&gt; resource &lt;font color="#0000ff"&gt;in&lt;/font&gt; client.Enumerate(&lt;font color="#a31515"&gt;&amp;quot;/Group&amp;quot;&lt;/font&gt;))&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt; group = resource &lt;font color="#0000ff"&gt;as&lt;/font&gt; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt;;&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;Assert&lt;/font&gt;.IsNotNull(group);&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;Console&lt;/font&gt;.WriteLine(&lt;font color="#2b91af"&gt;String&lt;/font&gt;.Format(consoleFormat,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.DisplayName,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.ObjectID,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.DisplayedOwner,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.ExplicitMember.Count,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (group.Type == &lt;font color="#2b91af"&gt;RmGroupType&lt;/font&gt;.Distribution)&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; );&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: 115%; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 10pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;h1&gt;Example 2: My Groups&lt;/h1&gt;  &lt;p&gt;To search for “my groups”, we search for groups whose owner are equal to the user’s ObjectID.&amp;#160; In this example we already know the user’s ObjectID (perhaps from a previous query for all users whose ObjectSid equals some value).&amp;#160; We also limit results to distribution lists by including the group type.&amp;#160; Note that this client contains an enum for group type for easy checks and searches.&lt;/p&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;[&lt;font color="#2b91af"&gt;TestMethod&lt;/font&gt;()]&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;font face="Courier New"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt; Example2GetMyDls()&lt;/span&gt; &lt;/font&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;{&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008000"&gt;// In this example we enumerate all of &amp;quot;my&amp;quot; dls&lt;/font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;String&lt;/font&gt; filter = &lt;font color="#2b91af"&gt;String&lt;/font&gt;.Format(&lt;font color="#a31515"&gt;&amp;quot;/Group[{0}={1} and {2}='{3}']&amp;quot;&lt;/font&gt;,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt;.&lt;font color="#2b91af"&gt;AttributeNames&lt;/font&gt;.Owner.Name,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#a31515"&gt;&amp;quot;6FB8413E-49DA-48d9-A204-FFB8F0EEE133&amp;quot;&lt;/font&gt;,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt;.&lt;font color="#2b91af"&gt;AttributeNames&lt;/font&gt;.Type.Name,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;RmGroupType&lt;/font&gt;.Distribution&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; );&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#2b91af"&gt;RmResource&lt;/font&gt; resource &lt;font color="#0000ff"&gt;in&lt;/font&gt; client.Enumerate(filter))&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt; group = resource &lt;font color="#0000ff"&gt;as&lt;/font&gt; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt;;&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;Assert&lt;/font&gt;.IsNotNull(group);&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;Assert&lt;/font&gt;.IsTrue(group.Type == &lt;font color="#2b91af"&gt;RmGroupType&lt;/font&gt;.Distribution);&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;Console&lt;/font&gt;.WriteLine(&lt;font color="#2b91af"&gt;String&lt;/font&gt;.Format(consoleFormat,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.DisplayName,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.ObjectID,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.DisplayedOwner,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.ExplicitMember.Count,&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (group.Type == &lt;font color="#2b91af"&gt;RmGroupType&lt;/font&gt;.Distribution)&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; );&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: 115%; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 10pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;h1&gt;Example 3: Match DisplayName&lt;/h1&gt;  &lt;p&gt;To search for a group which has a DisplayName or MailNickname like a predicate, we need to use the contains and starts-with functions in FIM’s XPath dialect.&amp;#160; Nima posted &lt;a href="http://blogs.technet.com/doittoit/archive/2009/02/08/reporting-and-querying-with-xpath-examples.aspx"&gt;great examples&lt;/a&gt; on his blog with a more complete description of FIM’s dialect features.&amp;#160; Last, note the static structures we’re using to refer to attribute names.&amp;#160; The static definitions of attributes specific to groups, like Owner and MailNickname, are stored in the RmGroup class.&amp;#160; The static definitions of attributes common to all objects types like DisplayName are stored in the RmResource class. The values of these attributes at runtime, however, are present on the RmGroup object.&amp;#160; &lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;[&lt;font color="#2b91af"&gt;TestMethod&lt;/font&gt;()]&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;font face="Courier New"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;/span&gt;&lt;span style="font-size: 10pt"&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt; Example3SearchGroups()&lt;/span&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;{&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008000"&gt;// In this example we search for a group with displayname or alias that contain the search&lt;/font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;String&lt;/font&gt; filter = &lt;font color="#2b91af"&gt;String&lt;/font&gt;.Format(&lt;font color="#a31515"&gt;&amp;quot;/Group[contains({0}, '{1}') or starts-with({2}, '{1}')]&amp;quot;&lt;/font&gt;,&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;RmResource&lt;/font&gt;.&lt;font color="#2b91af"&gt;AttributeNames&lt;/font&gt;.DisplayName.Name,&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#a31515"&gt;&amp;quot;Sales&amp;quot;&lt;/font&gt;,&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt;.&lt;font color="#2b91af"&gt;AttributeNames&lt;/font&gt;.MailNickname.Name&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; );&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#2b91af"&gt;RmResource&lt;/font&gt; resource &lt;font color="#0000ff"&gt;in&lt;/font&gt; client.Enumerate(filter))&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt; group = resource &lt;font color="#0000ff"&gt;as&lt;/font&gt; &lt;font color="#2b91af"&gt;RmGroup&lt;/font&gt;;&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;Assert&lt;/font&gt;.IsNotNull(group);&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2b91af"&gt;Console&lt;/font&gt;.WriteLine(&lt;font color="#2b91af"&gt;String&lt;/font&gt;.Format(consoleFormat,&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.DisplayName,&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.ObjectID,&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.DisplayedOwner,&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; group.ExplicitMember.Count,&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (group.Type == &lt;font color="#2b91af"&gt;RmGroupType&lt;/font&gt;.Distribution)&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; );&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 115%; margin-top: 0in; padding-left: 0in; padding-right: 0in; margin-bottom: 10pt; font-size: 11pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt; &lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9580692" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/client/">client</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Prototype V2: Overview of the new API</title><link>http://blogs.msdn.com/b/imex/archive/2009/04/23/prototype-v2-overview-of-the-new-api.aspx</link><pubDate>Fri, 24 Apr 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9565462</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9565462</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/04/23/prototype-v2-overview-of-the-new-api.aspx#comments</comments><description>&lt;p&gt;In this post we’ll discuss the new Prototype Public Resource Management client.&amp;#160; I uploaded the &lt;a href="http://code.msdn.microsoft.com/imexsamples/Release/ProjectReleases.aspx?ReleaseId=1824"&gt;MSDN-style documentation&lt;/a&gt; to MSDN Code Gallery.&amp;#160; The purpose of this post is to walk you through the direction I’m thinking about for a supported API.&amp;#160; These ideas are a snapshot of my thinking today and will change in the future.&amp;#160; I welcome feedback about both the high-level approach and specific granular details.&amp;#160; There may be scenarios or features overlooked which should be incorporated into an eventual supported client.&lt;/p&gt;  &lt;h1&gt;Changes from previous prototype&lt;/h1&gt;  &lt;p&gt;Changes since the &lt;a href="http://blogs.msdn.com/imex/archive/2008/11/19/how-to-build-your-custom-client.aspx"&gt;last version&lt;/a&gt; of the public prototype:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;This client is called “rmclient” to clearly differentiate it from the previous one.&lt;/li&gt;    &lt;li&gt;The source code is not yet available.&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;Since the previous source code was meant only as documentation and never would become production code, there were few restrictions on publishing it.&lt;/li&gt;      &lt;li&gt;Elements of this prototype may become production code.&amp;#160; As a result, we are not yet sure what pieces we may release at this time.&lt;/li&gt;      &lt;li&gt;We expect to have either a compiled binary, source code, or supported alternative ready for the RC1 release.&lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;The client and object model are decoupled.&lt;/li&gt;    &lt;li&gt;The client is layered on top of WCF.&lt;/li&gt;    &lt;li&gt;The client uses MEX for metadata.&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;The original client was never intended to be copied into complex environments.&amp;#160; As a result, many of you discovered the silent requirement to have the xsd file present for the previous public client to work.&lt;/li&gt;      &lt;li&gt;We have a factory method that instantiates strongly-typed objects.&amp;#160; It is now possible to use casting to check whether an object is a Person or Group.&lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;There is a “DefaultClient” which provides basic functionality that I’ve seen in POCs. This DefaultClient isn’t the only client, however, unlike the previous prototype.&lt;/li&gt;    &lt;li&gt;There is a pattern of “Promoted Properties” which enable developers to use Intellisense for discovering FIM object schema.&lt;/li&gt; &lt;/ol&gt;  &lt;h1&gt;Architecture&lt;/h1&gt;  &lt;p&gt;The basic architecture of the client has 3 layers: Default Client, WS-* clients, and WCF ClientBase.&amp;#160; All three layers are publically accessible with the intention that your code can call the layer which is most appropriate.&amp;#160; For most customers, the DefaultClient will be sufficient since it enables basic CRUD and Enumeration operations at a high level.&amp;#160; The diagram below summarizes these three layers, with DefaultClient depending on the WS-* clients underneath it, and those clients depending on WCF ClientBase.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/imex/WindowsLiveWriter/PrototypeV2OverviewofthenewAPI_BBE3/rmclient%20architecture_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="rmclient architecture" border="0" alt="rmclient architecture" src="http://blogs.msdn.com/blogfiles/imex/WindowsLiveWriter/PrototypeV2OverviewofthenewAPI_BBE3/rmclient%20architecture_thumb.png" width="404" height="182" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;All of these classes are in the Microsoft.ResourceManagement.Client namespace.&amp;#160; The DefaultClient is expected to be the client you use for 80% of scenarios.&amp;#160; We intend it to be a low barrier to entry and sufficiently abstracted from the actual SOAP messages.&amp;#160; Customers who need to modify the specific SOAP messages will need to use one of the WS-* clients.&amp;#160; Customers who need to modify the WCF channel will have to use their own WCF ClientBase.&amp;#160; Those three options should encompass 99% of all scenarios our customers want:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;DefaultClient for easy, straight-forward use&lt;/li&gt;    &lt;li&gt;WS-* clients for power users needing advanced control&lt;/li&gt;    &lt;li&gt;WCF ClientBase for extreme special cases&lt;/li&gt; &lt;/ul&gt;  &lt;h1&gt;ObjectModel&lt;/h1&gt;  &lt;p&gt;The object model is completely decoupled from the client into the Microsoft.ResourceManagement.ObjectModel namespace.&amp;#160; There are two key points I would like to make.&lt;/p&gt;  &lt;p&gt;First, there is a base class called RmResource which is a Dictionary.&amp;#160; You can always use a key to index any attribute out of RmResource using the Dictionary interface.&amp;#160; RmResource also exposes public properties for some well-known attributes like ObjectId and ObjectType so that developers can use Intellisense and pass those properties as arguments to methods.&lt;/p&gt;  &lt;p&gt;We created derived classes RmPerson and RmGroup.&amp;#160; These classes get the common public properties like ObjectId from the parent class, but they also expose additional attributes specific for their types.&amp;#160; For example, RmPerson exposes FirstName and EmployeeId.&amp;#160; RmGroup exposes ComputedMember and ExplicitMember.&amp;#160; We intend to have a class for each object type in FIM and that each object type has all of the necessary promoted properties.&lt;/p&gt;  &lt;p&gt;Since all of these objects are public, customers can create their own derived classes for custom object types in FIM.&amp;#160; For example, Contoso may create a Contact object with an Email address.&amp;#160; Contoso simply needs to create a new class that derives from RmResource and create a public property for Email.&amp;#160; The class diagram below summarizes the relationships and intended inheritance:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/imex/WindowsLiveWriter/PrototypeV2OverviewofthenewAPI_BBE3/rmclient%20objectmodel_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="rmclient objectmodel" border="0" alt="rmclient objectmodel" src="http://blogs.msdn.com/blogfiles/imex/WindowsLiveWriter/PrototypeV2OverviewofthenewAPI_BBE3/rmclient%20objectmodel_thumb_1.png" width="404" height="209" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Second, RmResource just stores data.&amp;#160; To commit changes back to the web service, we’re musing with the idea of requiring transactions.&amp;#160; The reason is our web service is designed to accept “differences” to objects rather than entire representations.&amp;#160; We are considering calculating these differences with a transaction object rather than inside the RmResource object itself.&amp;#160; At first glance it feels more clean to separate data and operations about the data.&amp;#160; We’ll show how these transactions work in the upcoming examples, and we hope that you agree they are a natural way to program against the FIM web service.&lt;/p&gt;  &lt;p&gt;I hope this was a useful introduction for our direction of the new prototype.&amp;#160; Please contact me with feedback about this direction.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9565462" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/client/">client</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category></item><item><title>Agenda for Remainder of Q2 CY2009</title><link>http://blogs.msdn.com/b/imex/archive/2009/04/23/agenda-for-remainder-of-q2-cy2009.aspx</link><pubDate>Thu, 23 Apr 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9565246</guid><dc:creator>Joe Schulman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/imex/rsscomments.aspx?WeblogPostID=9565246</wfw:commentRss><comments>http://blogs.msdn.com/b/imex/archive/2009/04/23/agenda-for-remainder-of-q2-cy2009.aspx#comments</comments><description>&lt;p&gt;As promised, this week I introduce the new prototype of the Public Resource Management Client and the remaining schedule.&amp;#160; The theme of this quarter is “Yet Another FIM Portal”.&amp;#160; The FIM Portal is a great experience for both Administrators and Information Workers, but I often hear how customers want pieces of FIM functionality integrated into their existing portals.&amp;#160; We will explore how to accomplish some key scenarios using this new client in the context of creating a simple portal.&amp;#160; The intention is that when RC1 is released there will be sufficient examples to demonstrate meaningful POCs to customers.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;April 23: Prototype V2: Overview of the new API &lt;/li&gt;    &lt;li&gt;April 30: Search for Existing Groups &lt;/li&gt;    &lt;li&gt;May 7: Create a Named Group and add Person objects as members&lt;/li&gt;    &lt;li&gt;May 14: Batch create 100 Person objects and then batch create 1 set per unique department&lt;/li&gt;    &lt;li&gt;May 21: Retrieve pending approvals and approve or reject them&lt;/li&gt;    &lt;li&gt;May 28: Sync config: Fundamentals of ma-data and mv-data &lt;/li&gt;    &lt;li&gt;June 4: Sync config: Updating the SQL MA&lt;/li&gt;    &lt;li&gt;June 11: Wrapping rmclient with SQL Reporting Services? &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Note that custom workflows are omitted from this agenda because the content is very well covered by &lt;a href="http://c--shark.blogspot.com/"&gt;Joe Zamora’s blog CShark&lt;/a&gt;.&amp;#160; Also note that June 11 will be the last blog post of the quarter.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9565246" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/imex/archive/tags/fim/">fim</category><category domain="http://blogs.msdn.com/b/imex/archive/tags/agenda/">agenda</category></item></channel></rss>
