<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Yet another identity management blog</title>
	<atom:link href="http://blog.msresource.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.msresource.net</link>
	<description>Thoughts and opinions on and around Microsoft Identity Management</description>
	<lastBuildDate>Wed, 22 May 2013 07:32:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.msresource.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Yet another identity management blog</title>
		<link>http://blog.msresource.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.msresource.net/osd.xml" title="Yet another identity management blog" />
	<atom:link rel='hub' href='http://blog.msresource.net/?pushpress=hub'/>
		<item>
		<title>Editing the FIM Portal web.config in a farm topology</title>
		<link>http://blog.msresource.net/2013/05/16/editing-the-fim-portal-web-config-in-a-farm-topology/</link>
		<comments>http://blog.msresource.net/2013/05/16/editing-the-fim-portal-web-config-in-a-farm-topology/#comments</comments>
		<pubDate>Thu, 16 May 2013 08:33:18 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[FIM]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Farm]]></category>
		<category><![CDATA[FIM 2010]]></category>
		<category><![CDATA[FIM 2010 R2]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=699</guid>
		<description><![CDATA[Hit an interesting issue this week.  One of the projects I’m working on was patching pre-production with 4.1.3419.0 and at the end of the process two of the four portals were down.  Properly down.  HTTP 500 error.  The issue was &#8230; <a href="http://blog.msresource.net/2013/05/16/editing-the-fim-portal-web-config-in-a-farm-topology/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=699&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Hit an interesting issue this week.  One of the projects I’m working on was patching pre-production with 4.1.3419.0 and at the end of the process two of the four portals were down.  Properly down.  HTTP 500 error.  The issue was in the web.config.  I won’t bore you with the detail, as there’s too much background, suffice to say that during backup and restore of the web.config the order of some custom elements got messed up which caused IIS to fail to load the web application.</p>
<p>Ultimately this isn’t of much relevance to the readers of this blog but it made me notice something else.  Each time we patch we loose the <em>requireKerberos</em> property of the <em>resourceManagementClient </em>element, i.e. before the patch:</p>
<blockquote><p>&lt;resourceManagementClient resourceManagementServiceBaseAddress=<a href="http://idmgmt.contoso.com:5725">http://idmgmt.contoso.com:5725</a> timeoutInMilliseconds=&#8221;60000&#8243; requireKerberos=&#8221;true&#8221; /&gt;</p></blockquote>
<p>After the patch:</p>
<blockquote><p>&lt;resourceManagementClient resourceManagementServiceBaseAddress=<a href="http://idmgmt.contoso.com:5725">http://idmgmt.contoso.com:5725</a> timeoutInMilliseconds=&#8221;60000&#8243; /&gt;</p></blockquote>
<p>Chatting with one of the project team who knows a lot more about SharePoint than me and I realise that there’s more to the web.config in a farm than I’d previously considered.  It’s stored in the SharePoint configuration database for one.  Each farm member updates the local file with the persisted object data in the database.  Which means there’s a programmatic process managing that file, so what happens to manually added changes?  Right, they can get lost.  Or maybe they don’t get consumed by all nodes.  In fact, there’s an health analyser rule that checks this for you:</p>
<ul>
<li><a href="http://technet.microsoft.com/en-us/library/hh564109(v=office.14).aspx" target="_blank">Web.config files are not identical on all machines in the farm (SharePoint Foundation 2010)</a></li>
</ul>
<p>But who manages FIM’s SharePoint infrastructure?  Are you on top of all the alerts?</p>
<p>The FIM Portal patch process triggers a backup of the web.config.  A programmatic backup.  The requireKerberos property was added out-of-band, i.e. via NOTEPAD.  So that isn’t in the database and is lost.  Which brings us to the real question – how do we edit the file then?  How do we define requireKerberos in an SP farm?</p>
<h3>PowerShell</h3>
<p>Here’s an example.</p>
<pre class="brush: powershell; pad-line-numbers: true; title: ; notranslate">
## modify the $fIMPortalURL variable with the FIM portal URL
[String]$fIMPortalURL = &quot;https://idweb.contoso.com/identitymanagement&quot;;
## do not modify anything else

Write-Host &quot;`nUpdateFimPortalFarmWebConfig.ps1 v1.0 Paul Williams May 2013`n&quot;;

[System.Reflection.Assembly]$loaded = [System.Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SharePoint&quot;);
if(!$loaded)
{
    Write-Error &quot;Couldn't load required assembly.&quot;;
    Exit;
}

[String]$sPPortalURL = $fIMPortalURL.Substring(0, $fIMPortalURL.IndexOf(&quot;/&quot;, 9));

# get the site
[Microsoft.SharePoint.SPSite]$sPSite = `
    New-Object Microsoft.SharePoint.SPSite($sPPortalURL);

# get the web app from the site
[Microsoft.SharePoint.Administration.SPWebApplication]$sPWebApp = $sPSite.WebApplication;

# get the web service from the web app
[Microsoft.SharePoint.Administration.SPWebService]$sPFarmService = `
    $sPWebApp.Farm.Services | ? {
        $_.TypeName -eq 'Microsoft SharePoint Foundation Web Application'
    }

# get the web.config rmclient element from the web app
[Microsoft.SharePoint.Administration.SPWebConfigModification]$rMClientConfigElement = `
    $sPWebApp.WebConfigModifications | ? {
        $_.Owner -eq '7c43ce5b-a59b-44f5-9e8a-50bd1b696145' -and
        $_.Name -eq 'resourceManagementClient'
    }

if($rMClientConfigElement)
{ # the element exists
    [Xml]$element = $rMClientConfigElement.Value;
    [String]$requireKerberos = $element.resourceManagementClient.requireKerberos;

    Write-Host &quot;Current value:&quot;;
    Write-Host &quot;$($rMClientConfigElement.Value)`n&quot; -ForegroundColor Yellow;

    if($requireKerberos)
    { # we have a value that might need to be modified
        if($requireKerberos.ToLower().Equals(&quot;true&quot;))
        { # nothing to do
            Write-Host &quot;Require Kerberos property already set to TRUE.&quot;;
            Write-Host &quot;No changes required.  Script complete.`n`n&quot;;
            $sPSite.Dispose();
            return;
        }
        else
        {
            Write-Host &quot;Require Kerberos property not set to TRUE.  Setting to TRUE.&quot;;
            $rMClientConfigElement.Value = `
                $rMClientConfigElement.Value.Replace('requireKerberos=&quot;false&quot;', 'requireKerberos=&quot;true&quot;');
        }
    }
    else
    { # we need to add it
        Write-Host &quot;Require Kerberos property not defined (default value is FALSE).  Setting to TRUE.&quot;;
        [String]$val = $rMClientConfigElement.Value;
        [String]$newVal = $val.Replace(&quot;/&gt;&quot;, 'requireKerberos=&quot;true&quot; /&gt;');
        $rMClientConfigElement.Value = $newVal;
    }
}

Write-Host &quot;New value:&quot;;
Write-Host &quot;$($rMClientConfigElement.Value)`n&quot; -ForegroundColor Yellow;
Write-Host &quot;Committing update.&quot;;
$sPWebApp.Update();
$sPFarmService.ApplyWebConfigModifications();
$sPSite.Dispose();

Write-Host &quot;Script complete.`n`n&quot;;
</pre>
<p>The above script is quite simple and can undoubtedly be improved.  It does provide a supported mechanism to configure this setting in a SharePoint farm however.</p>
<p>Some more reading:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ms460914(v=office.14).aspx" target="_blank">Working with Web.config Files</a>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/bb861909(v=office.14).aspx" target="_blank">How to: Add and Remove Web.config Settings Programmatically</a></li>
</ul>
</li>
</ul>
<p>And the guys who provided what I needed to write the above script:</p>
<ul>
<li><a href="http://blog.karstein-consulting.com/2010/09/02/add-web-config-modification-with-powershell-spwebconfigmodification/" target="_blank">Add web.config Modification with PowerShell (SPWebConfigModification)</a></li>
<li><a href="http://rnowik.com/SharePoint-Powershell-SPWebConfigModification.aspx" target="_blank">SharePoint: Powershell SPWebConfigModification</a></li>
</ul>
<p>I hope that this has been interesting and helpful.</p>
<p>I alluded to this <a href="http://blog.msresource.net/2013/05/15/fim-portal-in-a-sharepoint-farmwhy-you-should-not-do-this/" target="_blank">previously</a>.  And I’ll be complaining about the complexity or pain of a SharePoint farm again when I get a better understanding of what patching does to FIM Reporting too…</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/699/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/699/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=699&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/05/16/editing-the-fim-portal-web-config-in-a-farm-topology/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>
	</item>
		<item>
		<title>FIM Portal in a SharePoint farm&#8211;why you should not do this</title>
		<link>http://blog.msresource.net/2013/05/15/fim-portal-in-a-sharepoint-farmwhy-you-should-not-do-this/</link>
		<comments>http://blog.msresource.net/2013/05/15/fim-portal-in-a-sharepoint-farmwhy-you-should-not-do-this/#comments</comments>
		<pubDate>Wed, 15 May 2013 06:49:10 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[FIM]]></category>
		<category><![CDATA[Farm]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[FIM 2010 R2]]></category>
		<category><![CDATA[Forefront Identity Manager]]></category>
		<category><![CDATA[Forefront Identity Manager 2010 R2]]></category>
		<category><![CDATA[Forefront Identity Manager 2010]]></category>
		<category><![CDATA[Portal]]></category>
		<category><![CDATA[FIM 2010]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=696</guid>
		<description><![CDATA[That is correct.&#160; You read the title of this post correctly.&#160; I am, officially, on a mission to save you from making one of the biggest FIM Portal deployment mistakes you can make.&#160; Do not, I repeat, do not use &#8230; <a href="http://blog.msresource.net/2013/05/15/fim-portal-in-a-sharepoint-farmwhy-you-should-not-do-this/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=696&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>That is correct.&nbsp; You read the title of this post correctly.&nbsp; I am, officially, on a mission to save you from making one of the biggest FIM Portal deployment mistakes you can make.&nbsp; Do not, I repeat, do not use a SharePoint farm!&nbsp; Even if you have multiple nodes.&nbsp; Use multiple standalone SharePoint instances and load balance the requests using your preferred mechanism.</p>
<p>Why?</p>
<p>Well ask yourself this – what does a SharePoint farm actually give you?&nbsp; Other than a serious headache when patching and more operational maintenance in the form of SQL databases and more complexity around backup and restore (or rebuild) and patching SharePoint itself (and modifying web.config).</p>
<p>I have deployed two multiple node <em>farms</em> – once on WSS 3 and once on SharePoint 2010.&nbsp; I regret it.&nbsp; Why did I do it?&nbsp; Because I didn’t have a compelling argument either way and was talked into it by the customers.&nbsp; One argument – WID isn’t for enterprises; the other – the simplification of deploying customisations.&nbsp; I bet the former complicated their AD FS 2.0 deployment using the same argument too.&nbsp; But I digress.&nbsp; I’m not bitter.&nbsp; I’m just wiser; a little older, a little more experienced and now, thanks to this topology, showing the first signs of grey hair!&nbsp; <img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" alt="Smile" src="http://msresource.files.wordpress.com/2013/05/wlemoticon-smile.png?w=640"></p>
<p>I now have a somewhat compelling argument (although until you’ve sat in hours of meetings regarding patching you can’t really appreciate some of my sentiments):</p>
<p>I have to patch my four nodes sequentially, and the process takes quite a bit longer than a standalone node.&nbsp; The reason?&nbsp; Each time we patch we retract the solution pack and deploy the new one.&nbsp; The benefit of using a farm is that you deploy the solution pack once.&nbsp; Right.&nbsp; But the FIM installer isn’t optimised for a farm – there isn’t a portal installer and a service installer, there’s one patch for both.&nbsp; So you have to patch the portal for each node even though you don’t have to.&nbsp; And this causes downtime.&nbsp; Each time you retract and deploy a solution pack in SharePoint all application pools related to SharePoint are recycled.&nbsp; Each time you patch FIM the service must be stopped.&nbsp; Is it easy to run with fewer nodes and patch sequentially – no, you need to get all nodes on the same build ASAP and the more nodes there are the longer the SharePoint retraction is.&nbsp; And the retraction and redeployment is global (to SharePoint) so that downtime affects all nodes in the farm – you can’t drop one out of the NLB array, patch, add back, drop the next, etc.</p>
<p>I have to patch all four nodes when patching language packs.&nbsp; This is where it gets really nasty.&nbsp; The language packs comprise some file system files for the FIM Service and SharePoint solution packs.&nbsp; Again, one installer.&nbsp; Nice!&nbsp; It actually takes us ~6 hours to patch the LP on one node, and I have to sequentially apply four patches.&nbsp; Yep, that’s a full day or at least two working days if there aren’t shift-staff.&nbsp; And, all the time the application pools are being recycled.&nbsp; So you need scheduled downtime.</p>
<p>I also have three or four database in my SQL instance that now require more management than the optimised WID files that are totally expendable.</p>
<p>And again, what benefit am I getting?&nbsp; It’s a little easier to redeploy my CSS changes.&nbsp; True, but scripting that copy operation on all nodes is not exactly hard.&nbsp; We’re certainly not getting the benefit of a deploy once for many node solution pack.&nbsp; Also, it’s harder to modify the web.config file of the portal – technically you now have to do this via PowerShell (or .NET) otherwise processes that actually manage the web.config can loose your changes or cause indirect breaking changes.</p>
<p>I have been involved in quite a few FIM Service and Portal design and deployment projects now – various levels of involvement, from owning and authoring the design and deployment documentation and synchronisation and WF code including actually doing the installation to writing the design and running for the hills, including being called in to save a failing project and migration/upgrade planning and technical documentation review.&nbsp; In all of these cases I can’t think of a single compelling argument for a farm.&nbsp; True, there were arguments on one of my most recent projects that meant I was in agreement at the time but hindsight has only strengthened my position – truly bolstered it actually.</p>
<p>Humbly happy to understand arguments for a farm via comments, forum or group posts or e-mail.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/696/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/696/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=696&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/05/15/fim-portal-in-a-sharepoint-farmwhy-you-should-not-do-this/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/05/wlemoticon-smile.png" medium="image">
			<media:title type="html">Smile</media:title>
		</media:content>
	</item>
		<item>
		<title>FIM Reporting Extract, Transform and Load (ETL) process</title>
		<link>http://blog.msresource.net/2013/05/09/fim-reporting-extract-transform-and-load-etl-process/</link>
		<comments>http://blog.msresource.net/2013/05/09/fim-reporting-extract-transform-and-load-etl-process/#comments</comments>
		<pubDate>Thu, 09 May 2013 11:39:21 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[FIM]]></category>
		<category><![CDATA[FIM 2010 R2]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[Extract Transform Load]]></category>
		<category><![CDATA[Reporting]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=692</guid>
		<description><![CDATA[Forefront Identity Manager (FIM) Reporting and System Center Service Manager (SCSM) Data Warehouse Extract, Transform and Load (ETL) process Or…How data moves from the FIM Service to the data warehouse (otherwise known as what on earth is all that disk &#8230; <a href="http://blog.msresource.net/2013/05/09/fim-reporting-extract-transform-and-load-etl-process/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=692&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3><em>Forefront Identity Manager (FIM) Reporting and System Center Service Manager (SCSM) Data Warehouse Extract, Transform and Load (ETL) process</em></h3>
<h3>Or…How data moves from the FIM Service to the data warehouse (otherwise known as what on earth is all that disk activity and why is the Service Manager transaction log that size!!)</h3>
<h2>FIM Reporting</h2>
<p>FIM Reporting adds a number of changes to the FIM Service.  It introduces new tables and schema, and a SQL Server agent job.  It also updates the SCSM configuration with a set of pre-defined management packs which describe FIM schema and reports to the Data Warehouse.</p>
<p>FIM Reporting flows data from the FIM Service to SCSM using one of three ETL processes (arguably they are not ETL processes but rather <em>Extract </em>processes).  Once the data resides in SCSM the System Center Data Warehouse ETL processes archive the data for long term storage and reporting.</p>
<h3>FIM Reporting ETL</h3>
<p>The FIM Reporting ETL process is processed by the FIM Reporting Service &#8211; a thread within the FIM Service.  <em>msidmReportingJob</em> resources created in the FIM Service invoke the ETL.  An <em>msidmReportingJob</em> resource can be one of three types: <em>Initial</em>, <em>Initial-Partial</em>, or <em>Incremental</em>.  Initial and Initial-Partial are deployment processes, whereas Incremental is a continual process that runs throughout the normal operating conditions of the FIM Service.</p>
<ul>
<li><strong>Initial</strong>.  The initial process reads data directly from the FIM Service database and stages it to SCSM.  Initial synchronisation is the step performed during deployment after Reporting has been successfully installed.  This process must complete in order for the other processes to be viable.  This process provides SCSM with a baseline and defines the watermark for the subsequent incremental runs.</li>
<li><strong>Initial-Partial</strong>.  This process moves new schema and bindings into SCSM.  Every time the FIM Service schema is changed and the changes need to be reflected in FIM Reporting (the changes don’t necessarily need to be defined in FIM Reporting so this is optional depending on whether you wish to report on this data or not[1]) this process must be run to add the new schema to the Data Warehouse configuration.</li>
<li><strong>Incremental</strong>.  This process reads data from the FIM Reporting export log.  The export log maintains all deltas since the last successful run.  The changes are staged to SCSM.  The process runs every eight hours by default, starting at 1200 local time.  The schedule can be modified.  Generally the timeline of eight hours remains, but the start times are modified to better fit with other scheduled processes.</li>
</ul>
<p>All of the FIM Reporting processes stage data in SCSM via the Data Access Layer &#8211; the interface into SCSM (basically the API).  The actual data is written into the ServiceManager database.  Once the data is staged the FIM Reporting work is complete until the next incremental process.  The System Center Data Warehouse (SCDW) jobs perform the rest of the process.</p>
<p>Figure 1 illustrates the flow of data from FIM to SCSM.</p>
<p><a href="http://msresource.files.wordpress.com/2013/05/image.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://msresource.files.wordpress.com/2013/05/image_thumb.png?w=545&#038;h=447" width="545" height="447" border="0" /></a></p>
<p><span style="color:#0000ff;"><em>Figure 1: FIM Reporting ETL process</em></span></p>
<h2>System Center Data Warehouse</h2>
<p>SCDW has an ETL process that results in the FIM Service data staged to SCSM being added to the SCDW for long term archival and reporting.  SCDW has three physical databases, one for each phase of the ETL.</p>
<h3>SCDW jobs</h3>
<p>The data warehouse deploys with six jobs, two of which are administrative jobs, the other four are ETL jobs.  The jobs are:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="179"><b>Name</b></td>
<td valign="top" width="165"><b>Type</b></td>
<td valign="top" width="126"><b>Default schedule</b></td>
</tr>
<tr>
<td valign="top" width="179">DWMaintenance</td>
<td valign="top" width="165">ADMIN:Maintenance</td>
<td valign="top" width="126">Hourly</td>
</tr>
<tr>
<td valign="top" width="179">Extract_DW_FIMReporting</td>
<td valign="top" width="165">ETL: Extract</td>
<td valign="top" width="126">5 minutes</td>
</tr>
<tr>
<td valign="top" width="179">Extract_FIMReporting</td>
<td valign="top" width="165">ETL: Extract</td>
<td valign="top" width="126">5 minutes</td>
</tr>
<tr>
<td valign="top" width="179">Load.Common</td>
<td valign="top" width="165">ETL: Load</td>
<td valign="top" width="126">Hourly</td>
</tr>
<tr>
<td valign="top" width="179">MPSyncJob</td>
<td valign="top" width="165">ADMIN: Synchronisation</td>
<td valign="top" width="126">Hourly</td>
</tr>
<tr>
<td valign="top" width="179">Transform.Common</td>
<td valign="top" width="165">ETL:Transform</td>
<td valign="top" width="126">30 minutes</td>
</tr>
</tbody>
</table>
<p><em><span style="color:#0000ff;">Table 1: SCDW jobs and their schedules</span></em></p>
<p>The administrative jobs should be left in their default state.  The jobs are vital to the successful functioning of the DW.  The <strong>Extract_DW_FIMReporting</strong> extract job can be disabled.  This job is only required for FIM Reporting topologies that integrate with an existing SCSM deployment.  If SCSM is deployed purely for FIM Reporting this job is irrelevant and should be disabled.  The remaining jobs <strong>Extract_FIMReporting</strong>, <strong>Transform.Common</strong> and <strong>Load.Common</strong> are the ETL process.</p>
<h3>Extract, Transform and Load</h3>
<p>The ETL process first processes the extract job.  The relevant data (all changes since last run) is extracted from the SCSM (ServiceManager) database and written to the SCDW staging (DWStagingAndConfig) database.  The basic format is the same in the staging database.</p>
<p>Next the Transform.Common job runs.  This job takes the raw data from the staging (DWStagingAndConfig) database and performs the necessary aggregation, cleansing, and reformatting required for reporting and writes the data to the transformed (DWRepository) database.</p>
<p>Finally the Load.Common job runs.  The transformed data (DWRepository) is written to the reporting (DWDatamart) database.</p>
<p>When the Load.Common job completes new data is available to reporting.  SQL Server Reporting Services (SSRS) targets the reporting (DWDatamart) database.</p>
<p>Figure 2 illustrates the process (this is a re-drawing of the image in the Service Manager blog post in the references section).  Green arrows are extract; orange transform; blue load.</p>
<p><a href="http://msresource.files.wordpress.com/2013/05/image1.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://msresource.files.wordpress.com/2013/05/image_thumb1.png?w=619&#038;h=503" width="619" height="503" border="0" /></a></p>
<p><span style="color:#0000ff;"><em>Figure 2: SCDW ETL process</em></span></p>
<h2>Viewing reports</h2>
<p>Once the data is loaded into the DWDatamart database it is available to any permitted consumer.  In the case of FIM Reporting this is SQL Server Reporting Services.  Illustrated simply, Figure 3 depicts this.</p>
<p><a href="http://msresource.files.wordpress.com/2013/05/image2.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://msresource.files.wordpress.com/2013/05/image_thumb2.png?w=644&#038;h=113" width="644" height="113" border="0" /></a></p>
<p><span style="color:#0000ff;"><em>Figure 3: SSRS data access</em></span></p>
<p>Technically SQL Server Analysis Services (SSAS) surfaces the data via an online analytical processing (OLAP) cube, however I don&#8217;t think that is wholly relevant to this discussion and is managed by the SCDW.</p>
<h2>Summary</h2>
<p>Figure 4 depicts the overall FIM Reporting and SCDW ETL architecture.</p>
<p><a href="http://msresource.files.wordpress.com/2013/05/image3.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://msresource.files.wordpress.com/2013/05/image_thumb3.png?w=685&#038;h=539" width="685" height="539" border="0" /></a></p>
<p><span style="color:#0000ff;"><em>Figure 4: Overall ETL process</em></span></p>
<h2>References</h2>
<p>In addition to nosing at configuration and sending a couple of e-mails the principal sources of information for this post were:</p>
<ul>
<li><a href="http://blogs.technet.com/b/servicemanager/archive/2009/06/04/data-warehouse-anatomy-of-extract-transform-load-etl.aspx" target="_blank">System Center: Service Manager Engineering Blog &#8211; Data Warehouse – Anatomy of Extract, Transform, Load (ETL)</a></li>
<li><a href="http://technet.microsoft.com/en-us/library/jj133858(v=ws.10).aspx" target="_blank">Deployment Guide for Forefront Identity Manager 2010 R2 – Reporting</a></li>
</ul>
<p>Any mistakes are my own, and I’m grateful for comments and feedback.</p>
<p>I hope this is useful!</p>
<p>&#8212;</p>
<p>[1] You only define new schema in the data warehouse if you wish to report on that data.  This does not include historical reporting.  By default the request report handles modifications to both the FIM Service schema and attribute changes in FIM, regardless of whether or not you have pushed this schema into Reporting.  The reason you define new schema and bindings is to report on current values, e.g. instead of trawling through the request history and ascertaining current values you extend the schema and move current values into the data warehouse.  This is an important point, hopefully I have explained it properly.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/692/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/692/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=692&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/05/09/fim-reporting-extract-transform-and-load-etl-process/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/05/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/05/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/05/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/05/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>How can I logon to my ADAM or AD LDS Management Agent (MA)?</title>
		<link>http://blog.msresource.net/2013/04/25/how-can-i-logon-to-my-adam-or-ad-lds-management-agent-ma/</link>
		<comments>http://blog.msresource.net/2013/04/25/how-can-i-logon-to-my-adam-or-ad-lds-management-agent-ma/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 18:14:35 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[FIM]]></category>
		<category><![CDATA[AD]]></category>
		<category><![CDATA[AD LDS]]></category>
		<category><![CDATA[ADAM]]></category>
		<category><![CDATA[Help]]></category>
		<category><![CDATA[MA]]></category>
		<category><![CDATA[Management Agent]]></category>
		<category><![CDATA[Tip]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=682</guid>
		<description><![CDATA[What credentials can I use for the Active Directory Application Mode (ADAM) or Active Directory Lightweight Directory Services (AD LDS) Management Agent (MA) in Forefront Identity Manager (FIM) 2010 or R2? Bit basic this post but I had to install &#8230; <a href="http://blog.msresource.net/2013/04/25/how-can-i-logon-to-my-adam-or-ad-lds-management-agent-ma/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=682&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>What credentials can I use for the Active Directory Application Mode (ADAM) or Active Directory Lightweight Directory Services (AD LDS) Management Agent (MA) in Forefront Identity Manager (FIM) 2010 or R2?</p>
<p>Bit basic this post but I had to install FIM Synchronization Service and an AD LDS instance during a meeting to get this answer so figured I might as well post the information here for posterity.&nbsp; <img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" alt="Smile" src="http://msresource.files.wordpress.com/2013/04/wlemoticon-smile.png?w=640"></p>
<h2>Binding to ADAM/AD LDS</h2>
<p>For the rest of this post I’m going to use the term ADAM however everything I say applies to AD LDS (in fact my testing was using AD LDS on Windows Server 2008 R2).&nbsp; And when I say bind I mean logon.&nbsp; </p>
<p>OK, with that out of the way.&nbsp; You can bind to ADAM using an ADAM principal (some user-defined object type in the ADAM instance that “implements” the <em>msDS-BindableObject</em> class, i.e. an ADAM user); a Windows principal (a local user object on the Windows computer running ADAM, i.e. a user in the Local Security Authority or LSA, or in Active Directory Domain Services or AD DS, e.g. a user or inetOrgPerson object); a user proxy (a special type of user object in the ADAM instance that is linked, via objectSid, to an AD DS user); and lastly anonymous binds.</p>
<p>ADAM only authenticates “ADAM principals”.&nbsp; “Windows Principals” and user proxy objects are authenticated by Windows, i.e. the local LSA or AD DS.</p>
<p>ADAM supports the following credential formats:</p>
<ul>
<li>Windows principals:
<ul>
<li>User Principal Name (UPN).&nbsp; Domain-based Windows Principals only, e.g. <a href="mailto:paulw@msresource.net">paulw@msresource.net</a>.
<li>Account Name (sAMAccountName).&nbsp; The account name, e.g. computer\paulw or domain\paulw, e.g. msresource\paulw.
<li>Distinguished Name (DN).&nbsp; Domain-based Windows Principals only, e.g. CN=Paul Williams,OU=People,DC=msresource,DC=net. </li>
</ul>
<li>ADAM principals: </li>
<ul>
<li>Display Name.
<li>Distinguished Name.
<li>UPN.</li>
</ul>
</ul>
<p>There’s some obvious caveats for ADAM principals.&nbsp; UPN or displayName must be unique across all objects (irrespective of type, so if you have OU=paulw,O=msresource,c=GB you cannot logon with a displayName or UPN of paulw).</p>
<p>I heard you can logon with canonical name too, but limited testing did not prove that theory.</p>
<h2>Specifying credentials for the ADAM MA</h2>
<p>With enough background on the subject of binding to ADAM let’s look at what we can do with the ADAM MA.</p>
<p>By default, the MA is configured to support a Windows Principal, i.e. a Simple Authentication and Security Layer (SASL) authentication – this means SPNEGO a.k.a. Integrated Windows Authentication (IWA).</p>
<p>This means, by default, you are limited to NETBIOS_DOMAIN_NAME\username (or COMPUTER_NAME\username) and <a href="mailto:username@some-domain-name.tld">username@some-domain-name.tld</a>.&nbsp; Although when I say DOMAIN\username you don’t actually write it like that – there’s an input box for username, password and domain.&nbsp; When you introduce an @ into the username the domain box is no longer required although not greyed out.</p>
<p>Fine.&nbsp; Good.</p>
<p>Now, stick a DN in and you’ll get an error:</p>
<p><a href="http://msresource.files.wordpress.com/2013/04/image.png"><img title="image" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="image" src="http://msresource.files.wordpress.com/2013/04/image_thumb.png?w=487&#038;h=185" width="487" height="185"></a></p>
<p>That picture says:</p>
<blockquote><p>The user name cannot contain any of the following characters,</p>
<p>‘&lt;’, ‘&gt;’, ‘&amp;’, ‘”’, ‘/’, ‘\’, ‘[‘, ‘]’, ‘:’, ‘;’, ‘|’, ‘=’, ‘,’, ‘+’, ‘*’, ‘?’</p>
</blockquote>
<p>Try a basic username and password (no domain, e.g. displayname and password) and you’ll get a validation error:</p>
<p><a href="http://msresource.files.wordpress.com/2013/04/image1.png"><img title="image" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="image" src="http://msresource.files.wordpress.com/2013/04/image_thumb1.png?w=342&#038;h=195" width="342" height="195"></a></p>
<p>That picture says:</p>
<blockquote><p>Please complete the credentials.</p>
</blockquote>
<p>The reason for this is because we’re in SPNEGO mode.&nbsp; We need to change to SIMPLE BIND to unlock the ability to specify a DN or a username and password (could be UPN or displayName) with no DOMAIN/COMPUTER requirement.&nbsp; That’s done via the options button (adjacent to “Configure Connection Security”):</p>
<p><a href="http://msresource.files.wordpress.com/2013/04/clip_image002.jpg"><img title="clip_image002" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="clip_image002" src="http://msresource.files.wordpress.com/2013/04/clip_image002_thumb.jpg?w=466&#038;h=235" width="466" height="235"></a></p>
<p>So the default is to not only bind using SASL but use SASL to sign and seal (encrypt) all communications thereafter.&nbsp; When you “Enable Simple Bind” you can choose to use SSL with or without Certificate Revocation List (CRL) Checking or (dev lab only please people) no SSL, i.e. clear text credentials.</p>
<p>After turning on simple bind you can use a DN to bind (as many LDAP folk expect):</p>
<p><a href="http://msresource.files.wordpress.com/2013/04/clip_image0027.jpg"><img title="clip_image002[7]" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="clip_image002[7]" src="http://msresource.files.wordpress.com/2013/04/clip_image0027_thumb.jpg?w=651&#038;h=480" width="651" height="480"></a></p>
<p>Hopefully someone will find this helpful.&nbsp; <img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" alt="Smile" src="http://msresource.files.wordpress.com/2013/04/wlemoticon-smile.png?w=640"></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/682/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/682/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=682&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/04/25/how-can-i-logon-to-my-adam-or-ad-lds-management-agent-ma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/04/wlemoticon-smile.png" medium="image">
			<media:title type="html">Smile</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/04/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/04/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/04/clip_image002_thumb.jpg" medium="image">
			<media:title type="html">clip_image002</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/04/clip_image0027_thumb.jpg" medium="image">
			<media:title type="html">clip_image002[7]</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/04/wlemoticon-smile.png" medium="image">
			<media:title type="html">Smile</media:title>
		</media:content>
	</item>
		<item>
		<title>Forefront Identity Manager 2010 R2 build 4.1.3441.0 released</title>
		<link>http://blog.msresource.net/2013/04/22/forefront-identity-manager-2010-r2-build-4-1-3441-0-released/</link>
		<comments>http://blog.msresource.net/2013/04/22/forefront-identity-manager-2010-r2-build-4-1-3441-0-released/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 13:31:59 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[FIM]]></category>
		<category><![CDATA[FIM 2010 R2]]></category>
		<category><![CDATA[Hotfix]]></category>
		<category><![CDATA[Forefront Identity Manager]]></category>
		<category><![CDATA[Forefront Identity Manager 2010 R2]]></category>
		<category><![CDATA[hotfix rollup]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=671</guid>
		<description><![CDATA[April 22nd saw Microsoft release a new hotfix rollup package (build 4.1.3441.0) for Forefront Identity Manager (FIM) 2010 R2.&#160; The official documentation for this build can be found on the Microsoft support website under KB article kb2832389.&#160; Download link is &#8230; <a href="http://blog.msresource.net/2013/04/22/forefront-identity-manager-2010-r2-build-4-1-3441-0-released/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=671&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>April 22nd saw Microsoft release a new hotfix rollup package (build 4.1.3441.0) for Forefront Identity Manager (FIM) 2010 R2.&nbsp; The official documentation for this build can be found on the Microsoft support website under KB article <a href="http://support.microsoft.com/?id=2832389" target="_blank">kb2832389</a>.&nbsp; Download link is <a href="http://hotfixv4.microsoft.com/Forefront%20Identity%20Manager%202010%20R2/sp1/KB2832389/4.1.3441.0/free/462499_intl_x64_zip.exe" target="_blank">here</a>.
<p>There’s quite a few issues fixed in this build, that I won’t reiterate here (although the change in behaviour to how failures in Update-Recipient were handled has reverted back).&nbsp; There are also some important new features in FIM Synchronization Service – namely ECMA 2.2:
<ol>
<li>MetadirectoryServicesEx.dll is no longer dependent on FIM Synchronization Service, therefore you can load an ECMA2 connector independently of the FIM Synchronization Service which makes various testing scenarios much easier.&nbsp; This is a big deal and is here in advance of the PowerShell connector now available on connect.microsoft.com being generally available – it makes writing and debugging the PS scripts manageable.</li>
<li>New capabilities page makes it possible to ask the user for information and connect to the target directory and use that information for the Connector&#8217;s capabilities.</li>
<li>No longer need to provide the object type for update and delete operations in delta import.</li>
<li>Support is added for DN as an anchor for LDAP based directories.</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/671/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=671&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/04/22/forefront-identity-manager-2010-r2-build-4-1-3441-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>
	</item>
		<item>
		<title>FIM, System.DirectoryServices and a memory leak</title>
		<link>http://blog.msresource.net/2013/04/19/fim-system-directoryservices-and-a-memory-leak/</link>
		<comments>http://blog.msresource.net/2013/04/19/fim-system-directoryservices-and-a-memory-leak/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 12:09:59 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[FIM]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Forefront Identity Manager]]></category>
		<category><![CDATA[Help]]></category>
		<category><![CDATA[Rules Extension]]></category>
		<category><![CDATA[S.DS]]></category>
		<category><![CDATA[System.DirectoryServices]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=669</guid>
		<description><![CDATA[It all started with a slow synchronisation.&#160; Further inspection yielded several elements to the solution that strayed from recommended practice.&#160; One aspect that was definitely playing a part in the slow synchronisation was several uniqueness checks against Active Directory Domain &#8230; <a href="http://blog.msresource.net/2013/04/19/fim-system-directoryservices-and-a-memory-leak/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=669&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>It all started with a slow synchronisation.&nbsp; Further inspection yielded several elements to the solution that strayed from recommended practice.&nbsp; One aspect that was definitely playing a part in the slow synchronisation was several uniqueness checks against Active Directory Domain Services (AD DS) within the rules extension(s).&nbsp; The check was required – to call-out or not to call-out is an argument for another time – but some of the locations were wrong.&nbsp; My initial recommendation was to pull the uniqueness attributes, e.g. the <em>sAMAccountName</em> attribute, of all users into a <em>Dictionary&lt;String,String&gt;</em> within <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.metadirectoryservices.imvsynchronization.initialize(v=vs.100).aspx" target="_blank">IMVSynchronization.Initialize</a> and then use this local dictionary object for uniqueness checks (adding unique values as they are consumed).&nbsp; There were some other recommendations as well but I won’t bore you with those.</p>
<p>Jump forward two or three months and we’ve got a critical situation – a severity A Premier Support case.&nbsp; Over the course of a full synchronisation the FIM Synchronization Service exhausts available RAM and (gracefully, I might add) exits.&nbsp; The host in question is a VM; 8GB RAM, 60GB HDD, 12GB page file.&nbsp; Customer takes some traces and dumps and provides them to CSS and <a href="http://social.technet.microsoft.com/profile/david%20d-l/" target="_blank">David</a> quickly identifies that wldap32 is using all the RAM – 7GB in the data we’re looking at (while everything is still running).&nbsp; The data shows ~65,000 125KB allocations.&nbsp; Of 8.12GB of outstanding allocations 7.54GB from this stack alone!&nbsp; FIM is doing this.&nbsp; We prove it’s the rules extension and not FIM itself by running it in it’s own process and now mmsscrpt.exe (the process that runs rules extension code marked as “run out of process”) is using the RAM and not miiserver.exe (FIM Synchronization Service).</p>
<p>wldap32 is the <a href="http://msdn.microsoft.com/en-us/library/aa367008(v=VS.85).aspx" target="_blank">Windows LDAP API</a>.&nbsp; <a href="http://msdn.microsoft.com/en-us/library/aa772170(v=VS.85).aspx" target="_blank">Active Directory Services Interfaces (ADSI)</a> sits on top of this.&nbsp; And <a href="http://msdn.microsoft.com/en-us/library/9t2667d1.aspx" target="_blank">System.DirectoryServices (S.DS)</a> sits on top of ADSI.&nbsp; What is the rules extension using?&nbsp; Right.&nbsp; We have a memory leak coming from S.DS.</p>
<p>If we whip out the <a href="http://www.amazon.co.uk/Developer-Directory-Programming-Microsoft-Development/dp/0321350170" target="_blank">bible</a> the issue is obvious.&nbsp; Several of the classes within S.DS have to be explicitly disposed.&nbsp; Let’s look at some documented remarks:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/zy311hcc.aspx" target="_blank">SearchResultCollection Class</a></p>
<blockquote><p>Due to implementation restrictions, the SearchResultCollection class cannot release all of its unmanaged resources when it is garbage collected. To prevent a memory leak, you must call the <a href="http://msdn.microsoft.com/en-us/library/system.directoryservices.searchresultcollection.dispose.aspx" target="_blank">Dispose</a> method when the SearchResultCollection object is no longer needed.</p>
</blockquote>
<p>Furthermore, Joe and Ryan have a sidebar in the <a href="http://www.amazon.co.uk/Developer-Directory-Programming-Microsoft-Development/dp/0321350170" target="_blank">bible</a> that discusses Close() and Dispose().&nbsp; Let me quote some of the text:</p>
<blockquote><p>Both Close and Dispose are intended to be used to clean up the underlying COM object.&nbsp; The primary difference between the two is that Dispose also suppresses .NET finalization, and Close does not.&nbsp; Supressing finalization means that the garbage collector will not bother to run the Finalize method on the object because we have signalled that we have already cleaned up the underlying resource that the finalizer needed to take care of.&nbsp; Objects that need to be finalized are automatically promoted one garbage collection generation, so the tend to hang around in memory longer, which is something we probably want to avoid if possible.</p>
</blockquote>
<p>And:</p>
<blockquote><p>In summary, use Dispose.&nbsp; It does everything that Close does, and it takes care of the finalization.</p>
<p>Better yet, use the built-in language features to ensure that objects are Disposed properly.&nbsp; In C# always use the using construct:</p>
</blockquote>
<p>Later in the book they call out the SearchResultCollection class too:</p>
<blockquote><p>This collection of SearchResult instances represents the result set as accumulated by the server for a specific query.&nbsp; This class internally holds references to unmanaged resources, and as such should always explicitly be disposed using the Dispose method, just like DirectoryEntry and DirectorySearcher.</p>
</blockquote>
<p>The crux of the matter here is this: when using S.DS in a process that runs in a loop it is imperative that the objects are disposed.&nbsp; In the case of FIM the loop is synchronisation, i.e. calling the rules extension code over and over again (per managed object).</p>
<p>The customer quickly fixed the utility class that was using <em>DirectorySearcher</em> to return a <em>SearchResultCollection</em> to another method that was consuming it by properly calling <em>Dispose</em> in a couple of places and deployed the code.&nbsp; The result was different but the same.&nbsp; Different allocation sizes but still a leak.&nbsp; Bring in the heavy artillery and the ninjas identify the actual method, in the customer rules extension, that is making the call(s).&nbsp; A look at the revised code quickly identifies the issue.&nbsp; The S.DS.DE and S.DS.DS objects are being disposed but the SearchResultCollection isn’t – probably because of the way it is being used, i.e. the object is returned by a method.&nbsp; A second flaw is also identified –not the root of the problem but something worth fixing– all attributes are being returned.&nbsp; We provide some recommendations around rejigging the method and properly disposing and also favouring a using statement in many places.</p>
<p>The next result was…problem solved.&nbsp; While we see increased memory usage during synchronisation five minutes after synchronisation and it’s freed up (expected, as in-process rules extensions are unloaded after five minutes of inactivity).</p>
<p>Before I finish this post I’ll state some observations.&nbsp; Many of us know these values but I cannot see that they’re actually publically documented.</p>
<ul>
<li>A rules extension that runs <u>in-process</u> is unloaded <u>after five minutes of inactivity</u>.&nbsp; You should expect to see all memory used by your rules extension DLLs returned to the OS five minutes after synchronisation completes.
<li>A rules extension that runs <u>out-of-process</u> is unloaded <u>after fifteen minutes of inactivity</u>.
<li>Unmanaged memory and/or memory that is leaked is not returned to the host after <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.metadirectoryservices.imvsynchronization.terminate(v=vs.100).aspx" target="_blank">IMVSynchronization.Terminate</a> and/or <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.metadirectoryservices.imasynchronization.terminate(v=vs.100).aspx" target="_blank">IMASynchronization.Terminate</a> is called.&nbsp; The leaked memory is only cleaned up when the hosting or parent process is recycled.&nbsp; For out-of-process rules extensions this means the memory is returned after fifteen minutes when FIM kills mmsscrpt.exe.&nbsp; For in-process rules extensions the memory won’t be returned until the FIM Synchronization Service (miiserver.exe) is recycled.</li>
</ul>
<p>It was an interesting case and I learned some very valuable information.&nbsp; Hopefully you’ll find this interesting and helpful too.</p>
<p>p.s. Kudos to <a href="http://social.technet.microsoft.com/profile/david%20d-l/" target="_blank">David</a>, <a href="http://social.microsoft.com/profile/steve%20klem/" target="_blank">Steve</a> and Rob Lane, without these clever folk we would not have got to the bottom of the problem!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/669/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=669&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/04/19/fim-system-directoryservices-and-a-memory-leak/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>
	</item>
		<item>
		<title>FIM and Azure Infrastructure as a Service (IaaS)</title>
		<link>http://blog.msresource.net/2013/04/16/fim-and-azure-infrastructure-as-a-service-iaas/</link>
		<comments>http://blog.msresource.net/2013/04/16/fim-and-azure-infrastructure-as-a-service-iaas/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 14:49:02 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[AD FS]]></category>
		<category><![CDATA[FIM]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[VM]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=667</guid>
		<description><![CDATA[You may or may not know that Windows Azure Infrastructure as a Service (IaaS) – officially called Windows Azure Infrastructure Services – is now live and available.&#160; Microsoft announced the General Availability (GA) today, here.&#160; Microsoft have a knowledgebase article &#8230; <a href="http://blog.msresource.net/2013/04/16/fim-and-azure-infrastructure-as-a-service-iaas/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=667&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>You may or may not know that Windows Azure Infrastructure as a Service (IaaS) – officially called Windows Azure Infrastructure Services – is now live and available.&nbsp; Microsoft announced the General Availability (GA) today, <a href="http://blogs.msdn.com/b/windowsazure/archive/2013/04/16/the-power-of-and.aspx" target="_blank">here</a>.&nbsp; </p>
<p>Microsoft have a knowledgebase article that lists what Microsoft products are officially supported running on Windows Azure Virtual Machines &#8211; <a href="http://support.microsoft.com/?id=2721672" target="_blank">kb2721672: Microsoft server software support for Windows Azure Virtual Machines</a> – and <font style="background-color:#ffff00;"></font><font>both <font style="background-color:#ffff00;">Active Directory Federation Services (AD FS)</font>, running on Windows Server 2008 R2 or later, and </font><a href="http://blog.msresource.net/2013/02/19/forefront-identity-manager-2010-r2-build-4-1-3419-0-released/" target="_blank"><font style="background-color:#ffff00;">Forefront Identity Manager (FIM) 2010 R2 Service Pack 1 (SP1)</font></a><font> are now <font style="background-color:#ffff00;">supported on Azure IaaS VMs</font>.</font><font style="background-color:#ffff00;"></font></p>
<p>Some more info.:</p>
<ul>
<li>SQL Azure won’t work as a database backend for FIM and a remote SQL VM has not been, and will not be, tested – you need to use an on-box SQL instance.</li>
<li>Not all workloads make sense running in IaaS.&nbsp; Smaller workloads, probably FIM SYNC only, and DIRSYNC or multi-forest DIRSYNC using FIM and the Azure Active Directory (AAD) connector are probably going to make up the bulk of users.</li>
<li>You really need to consider having a DC running in IaaS too.&nbsp; This will probably be recommended by Microsoft in the future.</li>
<li>You really need to look at the cost benefit of hosting FIM in the cloud.&nbsp; There’s a bunch of costs that need to be considered – the cost of the VM, the processor usage, the storage, the network traffic and the VPN tunnel.</li>
<li>Lastly, support is via CSS FIM resources and not Azure support.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/667/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=667&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/04/16/fim-and-azure-infrastructure-as-a-service-iaas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>
	</item>
		<item>
		<title>Forefront Identity Manager 2010 build 4.0.3684.2 released</title>
		<link>http://blog.msresource.net/2013/03/19/forefront-identity-manager-2010-build-4-0-3684-2-released/</link>
		<comments>http://blog.msresource.net/2013/03/19/forefront-identity-manager-2010-build-4-0-3684-2-released/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 08:20:30 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[FIM]]></category>
		<category><![CDATA[Hotfix]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[FIM 2010]]></category>
		<category><![CDATA[Forefront Identity Manager]]></category>
		<category><![CDATA[Forefront Identity Manager 2010]]></category>
		<category><![CDATA[hotfix rollup]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[Update Rollup]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=664</guid>
		<description><![CDATA[March 19th saw Microsoft release a new hotfix rollup package (build 4.0.3684.2) for Forefront Identity Manager (FIM) 2010.&#160; The official documentation for this build can be found on the Microsoft support website under KB article kb2819338.&#160; Download link is here. &#8230; <a href="http://blog.msresource.net/2013/03/19/forefront-identity-manager-2010-build-4-0-3684-2-released/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=664&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>March 19th saw Microsoft release a new hotfix rollup package (build 4.0.3684.2) for Forefront Identity Manager (FIM) 2010.&nbsp; The official documentation for this build can be found on the Microsoft support website under KB article <a href="http://support.microsoft.com/?id=2819338" target="_blank">kb2819338</a>.&nbsp; Download link is <a href="http://hotfixv4.microsoft.com/Forefront%20Identity%20Manager%202010/latest/KB2819338/4.0.3684.2/free/459892_intl_x64_zip.exe" target="_blank">here</a>.</p>
<p>This update supersedes <a href="http://blog.msresource.net/2012/11/12/forefront-identity-manager-2010-build-4-0-3644-2-released/" target="_blank">kb2750673</a> (<a href="http://blog.msresource.net/2012/11/12/forefront-identity-manager-2010-build-4-0-3644-2-released/" target="_blank">4.0.3644.2</a>).&nbsp; The update contains a new version of Microsoft.MetadirectoryServicesEx.dll (4.0.2.0) and also sees the Exchange Provisioning fix introduced in <a href="http://blog.msresource.net/2013/02/19/forefront-identity-manager-2010-r2-build-4-1-3419-0-released/" target="_blank">FIM R2 build 4.1.3419.0</a> back ported to FIM 2010.</p>
<p>As with the previous updates to both FIM and FIM R2 please pay particular attention to the known issues in this update section that describes adding the required binding redirect statements to the configuration files that could not be patched (the installer won’t update the configuration files if you have modified them, which is ascertained by a comparison of the modified timestamp).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/664/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/664/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=664&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/03/19/forefront-identity-manager-2010-build-4-0-3684-2-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>
	</item>
		<item>
		<title>MSIS7613: The signing certificate of the relying party trust is not unique across all relying party trusts in AD FS 2.0 configuration</title>
		<link>http://blog.msresource.net/2013/03/05/msis7613-the-signing-certificate-of-the-relying-party-trust-is-not-unique-across-all-relying-party-trusts-in-ad-fs-2-0-configuration/</link>
		<comments>http://blog.msresource.net/2013/03/05/msis7613-the-signing-certificate-of-the-relying-party-trust-is-not-unique-across-all-relying-party-trusts-in-ad-fs-2-0-configuration/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 21:42:58 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[AD FS]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Active Directory Federation Services 2.0]]></category>
		<category><![CDATA[AD FS 2.0]]></category>
		<category><![CDATA[Help]]></category>
		<category><![CDATA[MSIS7613]]></category>
		<category><![CDATA[Tip]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=659</guid>
		<description><![CDATA[Scenario You are attempting to add a relying party (RP) trust to your Active Directory Federation Services (AD FS) 2.0 federation service (FS) and you get the following error: Textually: An error occurred during an attempt to access the AD &#8230; <a href="http://blog.msresource.net/2013/03/05/msis7613-the-signing-certificate-of-the-relying-party-trust-is-not-unique-across-all-relying-party-trusts-in-ad-fs-2-0-configuration/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=659&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h2>Scenario</h2>
<p>You are attempting to add a relying party (RP) trust to your Active Directory Federation Services (AD FS) 2.0 federation service (FS) and you get the following error:</p>
<p><a href="http://msresource.files.wordpress.com/2013/03/image.png"><img title="image" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="image" src="http://msresource.files.wordpress.com/2013/03/image_thumb.png?w=628&#038;h=126" width="628" height="126"></a></p>
<p>Textually:</p>
<blockquote><p>An error occurred during an attempt to access the AD FS configuration database.</p>
<p>MSIS7613: The signing certificate of the relying party trust is not unique across all relying party trusts in AD FS 2.0 configuration.</p>
</blockquote>
<h2>Issue</h2>
<p>The token signing certificate is already used in one of the other RP trusts.</p>
<p>AD FS expects and requires that each RP application utilise a unique token signing certificate.</p>
<p>Other FS do not however, and this is a bit of a common issue.&nbsp; The workaround of removing the signing certificate is not a great solution and often the push back to get two certificates won’t be implemented (for good reason as there’s likely a whole raft of systems using it without issue).</p>
<h2>Resolution</h2>
<p><a href="http://blog.msresource.net/2013/02/16/update-rollup-3-for-active-directory-federation-services-ad-fs-2-0/" target="_blank">AD FS Update Rollup #3 (issue #3).</a>&nbsp; Here’s some verbiage from the <a href="http://support.microsoft.com/?id=2790338" target="_blank">KB</a>:</p>
<blockquote><p>Issue 3</p>
</blockquote>
<blockquote><p>Some relying parties require that signature certificates are applied to the relying party for SAML requests, as signature certificates provide a critical security validation function and are defined in the SAML 2.0 specification. AD FS 2.0 is capable of allowing unique signature certificates to be applied to a relying party trust, but it only allows the same certificate to be applied to one relying party trust per AD FS 2.0 farm. This restriction may allow multiple relying parties to use the same signing certificate for SAML requests. AD FS 2.0 update rollup 3 removes this restriction and allows multiple relying parties to use the same signing certificate for SAML request.</p>
</blockquote>
<h3>Post-update configuration</h3>
<p>Note however that simply applying the update rollup doesn’t allow you to implement multiple relying party trusts with the same certificate.&nbsp; After applying the update you have to run the script <strong>PostReleaseSchemaChanges.ps1</strong>.</p>
<p>The script is located under the AD FS binaries directory:</p>
<blockquote><p>C:\Program Files\Active Directory Federation Services 2.0\SQL</p>
</blockquote>
<p>If you have a WID backend you need to run the script on the primary FS.&nbsp; You can run it on any FS if you have a SQL backend.&nbsp; Before running the script load the AD FS PowerShell snapin, e.g.:</p>
<pre>cd "$env:programfiles\active directory federation services 2.0\sql"
Add-PSSnapin microsoft.adfs.powershell
.\PostReleaseSchemaChanges.ps1
</pre>
<p>After running the script – which runs SQL scripts and outputs a lot of text to the shell – you can create RP trusts with the same signing certificate.</p>
<p>Here I create two RP trusts to Oracle Taleo with the same certificate, as evidenced from the highlighted thumbprint.</p>
<p><a href="http://msresource.files.wordpress.com/2013/03/image1.png"><img title="image" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="image" src="http://msresource.files.wordpress.com/2013/03/image_thumb1.png?w=776&#038;h=485" width="776" height="485"></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/659/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=659&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/03/05/msis7613-the-signing-certificate-of-the-relying-party-trust-is-not-unique-across-all-relying-party-trusts-in-ad-fs-2-0-configuration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/03/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://msresource.files.wordpress.com/2013/03/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Forefront Identity Manager 2010 R2 build 4.1.3419.0 released</title>
		<link>http://blog.msresource.net/2013/02/19/forefront-identity-manager-2010-r2-build-4-1-3419-0-released/</link>
		<comments>http://blog.msresource.net/2013/02/19/forefront-identity-manager-2010-r2-build-4-1-3419-0-released/#comments</comments>
		<pubDate>Tue, 19 Feb 2013 07:16:00 +0000</pubDate>
		<dc:creator>Paul Williams</dc:creator>
				<category><![CDATA[FIM]]></category>
		<category><![CDATA[Hotfix]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[FIM 2010 R2]]></category>
		<category><![CDATA[Forefront Identity Manager]]></category>
		<category><![CDATA[Forefront Identity Manager 2010 R2]]></category>
		<category><![CDATA[hotfix rollup]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[Update Rollup]]></category>

		<guid isPermaLink="false">https://msresource.wordpress.com/?p=653</guid>
		<description><![CDATA[February 18th saw Microsoft release a new hotfix rollup package (build 4.1.3419.0) for Forefront Identity Manager 2010 R2.  The official documentation for this build can be found on the Microsoft support website under KB article kb2814853.  Download link is here. &#8230; <a href="http://blog.msresource.net/2013/02/19/forefront-identity-manager-2010-r2-build-4-1-3419-0-released/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=653&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>February 18th saw Microsoft release a new hotfix rollup package (build 4.1.3419.0) for Forefront Identity Manager 2010 R2.  The official documentation for this build can be found on the Microsoft support website under KB article <a href="http://support.microsoft.com/?id=2814853" target="_blank">kb2814853</a>.  Download link is <a href="http://hotfixv4.microsoft.com/Forefront%20Identity%20Manager%202010%20R2/sp1/KB2814853/4.1.3419.0/free/459408_intl_x64_zip.exe" target="_blank">here</a>.</p>
<p>This update can be applied to any build of FIM 2010 R2 equal to or later than RTM (4.1.2273.0).  This update can be applied to SP1.</p>
<p>The rollup provides mainly FIM Synchronization Service updates – five in total, and one FIM Service and Portal update.</p>
<p>Biggest fix for me is the change to the Active Directory Management Agent (ADMA) that always has the Exchange provisioning option visible on the Extensions tab irrespective of the schema discovery process.  The underlying issue that caused this change hit me a couple of times – it was the issue whereby the Exchange provisioning tab wasn’t available even though it used to be and/or Exchange was available in the environment.</p>
<p>I won’t list the other updates.  Check out <a href="http://support.microsoft.com/?id=2814853" target="_blank">kb2814853</a> for the full details.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msresource.wordpress.com/653/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msresource.wordpress.com/653/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.msresource.net&#038;blog=22278516&#038;post=653&#038;subd=msresource&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.msresource.net/2013/02/19/forefront-identity-manager-2010-r2-build-4-1-3419-0-released/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbbbebce35e638a60c0c5fab7b8a4d1a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">msresource</media:title>
		</media:content>
	</item>
	</channel>
</rss>
