<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Keith Fleming - IdM Consultant</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/keithf/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/keithf/feed.xml</link>
    <description>Adventures in Identity Management</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:36:21 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>CSExport and PowerShell</title>
      <link>https://docs.microsoft.com/archive/blogs/keithf/csexport-and-powershell</link>
      <pubDate>Wed, 12 Feb 2014 20:26:00 GMT</pubDate>
      <dc:creator><![CDATA[Keith Fleming]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/keithf/2014/02/12/csexport-and-powershell/</guid>
      <description><![CDATA[One of the really useful tools that is often overlooked with FIM is the CSExport utility.&nbsp;...]]></description>
      <content:encoded><![CDATA[<p>One of the really useful tools that is often overlooked with FIM is the CSExport utility.&nbsp; CSExport has been around for a long time and allows you to dump connector space object into an XML file.&nbsp; Often times you might need to grab some piece of information from an export (or import)&nbsp;and consume the data to use for something else.&nbsp; I ran into such a case today while at a customer location and wanted to share how you can make take advantage of this utility.</p>
<p>So let me give you an example of how I was able to put this to use in my environment.</p>
<p>As I was troubleshooting some provisioning issues in a lab environment today, I determined that I need to delete the objects from Active Directory so the provisioning code could be executed again.&nbsp; From a PowerShell perspective all I really needed was the DN of the user object to pipe to the Remove-ADUser cmdlet.&nbsp; Since all of the information is available in the error data, you just need to have a method for getting to it (this is where CSExport comes in).</p>
<p>CSExport will allow you to get to all of this data and dump it to an XML where you can then consume it with PowerShell in a pretty quick fashion!</p>
<p>For more info on the usage for the utility see the link below.</p>
<p>https://technet.microsoft.com/en-us/library/jj590346(v=ws.10).aspx</p>
<p>In my case, I had all of the export errors and just need to dump the data to an XML.&nbsp; So I started by opening a command prompt (or PowerShell prompt) and navigating to the C:\Program Files\Microsoft Forefront Identity Manager\2010\Synchronization\Bin folder and launching the CSExport utility.</p>
<p>To dump the data I used the command below.</p>
<p><em>.<strong>\CSExport.exe &quot;ADMA&quot; errorList.xml /fe</strong></em></p>
<p>This actually gives an output XML file with all of the connector space information needed to feed to the AD cmdlet.</p>
<p>From here I was able to read the content of the file in using the following PowerShell command.</p>
<p><strong><em>[xml]$CSErrorObjects = get-content .\errorList.xml</em></strong></p>
<p>Now I have all of the information I need to work with, the next step is to select the XML nodes for consumption by PowerShell.</p>
<p><strong><em>$csObjects = $CSErrorObjects.SelectNodes(&quot;/cs-objects/cs-object&quot;)</em></strong></p>
<p>At this point all I need to do is loop through the collection and execute the command!</p>
<p><strong><em>$csObjects | foreach-object {remove-aduser $_.&#39;cs-dn&#39; -confirm:$false}</em></strong></p>
<p><em><br /></em>As you can see this simple utility gives a great deal of flexibility for pulling information out of the connector spaces to take action on especially if you are running into errors that can be remediate in bulk.</p>
<p>Enjoy!</p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>New FIM 2010 Connectors GA</title>
      <link>https://docs.microsoft.com/archive/blogs/keithf/new-fim-2010-connectors-ga</link>
      <pubDate>Thu, 21 Nov 2013 18:38:22 GMT</pubDate>
      <dc:creator><![CDATA[Keith Fleming]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/keithf/2013/11/21/new-fim-2010-connectors-ga/</guid>
      <description><![CDATA[It has been an incredibly long time since I've gotten a chance to post anything, unfortunately this...]]></description>
      <content:encoded><![CDATA[<p>It has been an incredibly long time since I've gotten a chance to post anything, unfortunately this one will be pretty short!</p>
<p>The product group at Microsoft released 3 new connectors for FIM, I would definitely recommend taking a look.</p>
<p><strong>Windows Azure Active Directory</strong><br />Connector can be used in scenarios not supported by DirSync, for example multi-forest or non-AD. We still recommend to use DirSync as the primary solution to synchronize AD to AAD and use it whenever possible. The Connector comes with sample code and configuration for a resource/account-forest scenario. For more information, please refer to the TechNet documentation: <a href="https://go.microsoft.com/fwlink/?LinkID=330371">https://go.microsoft.com/fwlink/?LinkID=330371</a>.</p>
<p><strong>Generic LDAP</strong><br />Connector will allow you to connect to an LDAPv3 compliant directory. It currently supports the same LDAP directories (IBM, Novell, and Oracle) we ship with FIM2010R2 and will over time replace the built-in LDAP Management Agents. For more information, please refer to the TechNet documentation: <a href="https://go.microsoft.com/fwlink/?LinkID=270179">https://go.microsoft.com/fwlink/?LinkID=270179</a>.</p>
<p><strong>SharePoint User Profile Store</strong><br />Connector will connect to the SharePoint User Profile Store and can be used as a replacement for the built-in synchronization engine which comes with SharePoint, for example in mulit-forest or non-AD scenarios. For more information, please refer to the TechNet documentation: <a href="https://go.microsoft.com/fwlink/?LinkID=331344">https://go.microsoft.com/fwlink/?LinkID=331344</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Multiple Password Reset Workflows</title>
      <link>https://docs.microsoft.com/archive/blogs/keithf/multiple-password-reset-workflows</link>
      <pubDate>Wed, 26 Jun 2013 10:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Keith Fleming]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/keithf/2013/06/26/multiple-password-reset-workflows/</guid>
      <description><![CDATA[Have you ever needed to have multi-path workflows for SSPR when using FIM? If you have, you'll know...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: verdana,geneva; font-size: x-small;">Have you ever needed to have multi-path workflows for SSPR when using FIM? If you have, you'll know that this can be a bit of a pain to configure.&nbsp; Especially if you are not familiar with the inner workings of password reset. I ran across such an issue today and wanted to share the situation and the resolution.</span></p>
<p><span style="font-family: verdana,geneva; font-size: x-small;">The challenge in my case was allowing users which are required to login using SmartCards to register for SSPR. The benefit of SSPR in this case is not really the ability to reset a password, but the ability to unlock an account that has been locked out.&nbsp; In addition, I also had to allow users which did not require SmartCards to register and use SSPR to reset their forgotten password.</span></p>
<p><span style="font-family: verdana,geneva; font-size: x-small;">At&nbsp;a quick glance you wouldn't really think of this as a problem but it is.&nbsp; This is because of the way that AD handles setting the <strong class="uiterm">Smart card is required for interactive logon&nbsp;</strong>flag. When the flag is set, a random password is generated (that the user doesn't know) and the password is flagged to never expire. This prevents a user who must use a smart card for interactive logon from completing the first password challenge gate during registration. While the challenge gate can be removed, it's there for a reason and that's security.&nbsp; As an example an end user walks away from&nbsp;his or her&nbsp;desk and leaves their computer unlocked.&nbsp; Without a password gate, a malicious user could easily register new challenge/answers then reset the password somewhere else.&nbsp; At this point they could have access to a whole trove of information they should not.</span></p>
<p><span style="font-family: verdana,geneva; font-size: x-small;">As you can see, it's a catch either way that requires a bit of customization to make both scenarios work.</span></p>
<p style="padding-left: 30px;"><span style="font-family: verdana,geneva; font-size: x-small;">So the first part of this dilemma is being able to identify the users in FIM via a set. Declarative sync rules really make this a very simple task since it can be&nbsp;done with a custom expression on the inbound flow from userAccountControl.</span></p>
<p style="padding-left: 30px;"><span style="font-family: verdana,geneva; font-size: x-small;">To start with, a few custom attributes and bindings are required. First create a new attribute in FIMService (SmartCardRequired) and bind it to the person object.&nbsp; Second a new metaverse attribute will be required to move the data from AD into fim (smartCardRequired).</span></p>
<p style="padding-left: 30px;"><span style="font-family: verdana,geneva; font-size: x-small;">Once the attributes have been created; the custom expression&nbsp;below will give a Boolean value that can be used for the sets. Keep in mind this also must be exported back to the FIMMA to make it available to the FIMService.</span></p>
<p style="padding-left: 30px;"><span style="font-family: verdana,geneva; font-size: x-small;"><span style="color: black; line-height: 115%; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">CustomExpression(IIF(Eq(BitAnd(</span><span style="color: black; line-height: 115%; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">262144,userAccountControl),262144),"true","false")) --&gt; smartCardRequired (MV attribute).</span></span></p>
<p style="padding-left: 30px;"><span style="font-family: verdana,geneva; font-size: x-small;">Now that</span> the attributes are available the next step is to build the appropriate sets. In this step we are essentially replacing the built-in "password reset users set" with our two custom sets.&nbsp; The first set will define users that require SmartCards for interactive logon, and the second set will define standard users authenticating with a username and password.</p>
<p style="padding-left: 30px;">As the next step I chose to define two new custom Password Reset AuthN workflows.&nbsp; One that included the challenge for password gate (regular users) and another that did not include the password challenge (smart card users).&nbsp;However, both workflows included the same Q/A gates to provide some standardization between the two.</p>
<p style="padding-left: 30px;">Since sets and workflows have now been defined the new MPR's can be created. These can be mirrored after the existing policy "anonymous users can reset passwords". The difference here is that each policy will need to have the appropriate AuthN workflow assigned (with or without password gate) and the target set must specify the appropriate set (smartcard required or not). Finally, the Password Reset Action workflow should also be attached to both policies.</p>
<p style="padding-left: 30px;">The last piece that needs to happen to tie everything together is to have all of the items that were created added to the Password Reset Objects Set. This includes both new sets, both new workflows, and both new policies. After this is done, I am ready for multi-path SSPR! As a final clean up action, if the existing policy "anonymous users can reset their password" is enabled it must be disabled so FIM will know which workflow to call.</p>
<p>I hope this rather lengthy post might be of help to someone else out there.&nbsp;</p>
<p>Happy FIM'ing!</p>]]></content:encoded>
    </item>
    <item>
      <title>FIM 2010 Reporting - Management Packs Fail to Deploy</title>
      <link>https://docs.microsoft.com/archive/blogs/keithf/fim-2010-reporting-management-packs-fail-to-deploy</link>
      <pubDate>Wed, 19 Jun 2013 19:07:00 GMT</pubDate>
      <dc:creator><![CDATA[Keith Fleming]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/keithf/2013/06/19/fim-2010-reporting-management-packs-fail-to-deploy/</guid>
      <description><![CDATA[I was working through an issue for a few hours yesterday and today and wanted to share my finding...]]></description>
      <content:encoded><![CDATA[<p>I was working through an issue for a few hours yesterday and today and wanted to share my finding and solution.</p>
<p>In short,&nbsp;I was running a change install on the FIMService/Portal&nbsp;as we needed to add reporting. The installer would make it to the piece where it was deploying management packs, and would then perform a rollback.</p>
<p>In order to do this,&nbsp;I had to run msiexec with the appropriate switches and provide a location for the logfile.</p>
<p><em>msiexec /I "Service and Portal.msi" /l*v InstallLog.log (this creates a log in the same directory as the installer).</em></p>
<p>The log files can get very large (especially for FIMService and with a verbose switch usually run around 2MB).&nbsp; 2MB worth of text is a tremendous amount and can be very tedious to wade through.&nbsp; What I've found with FIM is that searching for "InstallFinalize" is a good way get started looking for the failure</p>
<p>The log file eventually led to the error below:</p>
<p><span style="color: #ff0000;">CustomAction ImportRequestHistoryReportManagementPackBundle returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox).</span></p>
<p>Essentially, the failure was occurring due to a timeout when trying to import the Management Packs to the SCSM 2012 server.</p>
<p>The solution in this case was to manually import the management packs and re-run the install change.&nbsp;</p>
<p>I won't&nbsp;go into the details on how to import management packs in this article.&nbsp;&nbsp;A reference is available at <a href="https://technet.microsoft.com/en-us/library/hh524269.aspx">https://technet.microsoft.com/en-us/library/hh524269.aspx.</a></p>
<p>One piece that&nbsp;I needed was the location of the management pack bundles.&nbsp; These can be found in the FIM installation media in the following directory <em>Portal and Service/Program Files/Forefront Identity Manager/2010/Reporting/Reports</em>. The management pack bundles will have a .MPB extension which can be loaded manually into Service Manager.</p>
<p>In my specific case, I found this bypassed the timeout error in the installation and allowed me to successfully install reporting.</p>
<p>Hopefully it can help someone else too!</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Exchange Provisioning Failure - Unresponsive Sync UI</title>
      <link>https://docs.microsoft.com/archive/blogs/keithf/exchange-provisioning-failure-unresponsive-sync-ui</link>
      <pubDate>Mon, 10 Jun 2013 20:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Keith Fleming]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/keithf/2013/06/10/exchange-provisioning-failure-unresponsive-sync-ui/</guid>
      <description><![CDATA[I recently encountered an issue that had me baffled for several days.
This issue centered around...]]></description>
      <content:encoded><![CDATA[<p>I recently encountered an issue that had me baffled for several days.</p>
<p>This issue centered around Exchange provisioning via FIM and occurred with both 2007 and 2010. The short of the problem is that I was able to run completely through a synchronization cycle (DI,DS,EX) on both FIMMA and ADMA with provisioning turned off.&nbsp; When Exchange provisioning was turned on the first export was run against the ADMA the Sync UI&nbsp;became totally unresponsive and locked up.&nbsp; The only way to remedy the situation was to kill the miisserver.exe process and try again.</p>
<p>My first thought was to upgrade to the latest and greatest <a href="https://support.microsoft.com/kb/2849119">4.1.3451.0</a>.&nbsp;The latest hotfix also&nbsp;included a cumulative update introduced in <a href="https://support.microsoft.com/kb/2832389">4.1.3441.0</a>&nbsp;which allowed the sync server to continue in the event of an Exchange provisioning failure. After patching all of the components in the lab up to the new version I found the issue was still present.</p>
<p>The really unusual part was that there were no failures in the event log of the sync server. Additionally, after looking at the log on the Exchange CAS server I was finding the command was executing without any failures!</p>
<p>While staring at add/remove programs contemplating rolling everything back to a previous version I noticed the WMF 3.0 framework (beta) and a light bulb went off. I immediately uninstalled WMF 3.0 beta and rebooted the server, as soon as it came back up provisioning was working.</p>
<p>Since I am huge fan of the new PowerShell 3.0 ISE, I had to go immediately download the WMF 3.0 RTM which did not cause any problems with Exchange provisioning.</p>
<p>As I have found many times, issues often jump out at you when you look somewhere completely different!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>New Hotfix Available - 4.1.3451.0</title>
      <link>https://docs.microsoft.com/archive/blogs/keithf/new-hotfix-available-4-1-3451-0</link>
      <pubDate>Mon, 10 Jun 2013 20:54:34 GMT</pubDate>
      <dc:creator><![CDATA[Keith Fleming]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/keithf/2013/06/10/new-hotfix-available-4-1-3451-0/</guid>
      <description><![CDATA[A new hotfix is available that corrects the installation issues with FIM 2010 R2 SP1 and SCSM 2012...]]></description>
      <content:encoded><![CDATA[<p>A new hotfix is available that corrects the installation issues with FIM 2010 R2 SP1 and SCSM 2012 SP1.</p>
<p><a href="https://support.microsoft.com/kb/2849119">https://support.microsoft.com/kb/2849119</a></p>]]></content:encoded>
    </item>
    <item>
      <title>FIM Portal Tracing</title>
      <link>https://docs.microsoft.com/archive/blogs/keithf/fim-portal-tracing</link>
      <pubDate>Sun, 02 Jun 2013 20:05:00 GMT</pubDate>
      <dc:creator><![CDATA[Keith Fleming]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/keithf/2013/06/02/fim-portal-tracing/</guid>
      <description><![CDATA[One of the more frustrating parts of FIM 2010 is troubleshooting RCDC failures.&nbsp; Since most of...]]></description>
      <content:encoded><![CDATA[<p>One of the more frustrating parts of FIM 2010 is troubleshooting RCDC failures.&nbsp; Since most of the edits are done in XML they can be very prone to error. On more than one occasion, I have spent many hours running IISRESET and staring at blocks of XML.</p>
<p>A very good way to get back some time is to enable FIM portal tracing.&nbsp; This will allow you to get exactly to the error and give you an idea of what needs to happen in order to resolve the issue.</p>
<p>You can find instructions on how to enable this at <a href="https://social.technet.microsoft.com/wiki/contents/articles/how-to-configure-fim-portal-tracing.aspx">https://social.technet.microsoft.com/wiki/contents/articles/how-to-configure-fim-portal-tracing.aspx</a>.</p>
<p>In short, you just need to edit the SharePoint web.config and add the system.diagnostics node (followed by an IISRESET of course).</p>
<p>Below is an example of the svc trace produced from the logging. As you can see, knowing exactly which line and position the error occurred is very useful and helps to save a ton of time.&nbsp;Instead of wading through 2000+ lines of XML, I go straight to line 2039 at character position 78. Voila, root cause found we can now fix it and move on.</p>
<p>&nbsp;Just remember to reset the configuration file because a trace can consume a tremendous amount of disk space in a short time and it also has a performance cost associated with it as well.<span style="font-family: 'Calibri','sans-serif'; font-size: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;"><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/00/7875.ServiceTrace.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-00/7875.ServiceTrace.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/99/00/7875.ServiceTrace.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-99-00/7875.ServiceTrace.png" alt="" border="0" /></a><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Happy troubleshooting!<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br /><br /> <br /></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>FIM 2010 R2 SP1 Reporting and System Center 2012 Service Manager</title>
      <link>https://docs.microsoft.com/archive/blogs/keithf/fim-2010-r2-sp1-reporting-and-system-center-2012-service-manager</link>
      <pubDate>Tue, 23 Apr 2013 13:58:00 GMT</pubDate>
      <dc:creator><![CDATA[Keith Fleming]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/keithf/2013/04/23/fim-2010-r2-sp1-reporting-and-system-center-2012-service-manager/</guid>
      <description><![CDATA[The recent release of FIM 2010 R2 SP1 added support for several new platforms. 

Server 2012
SQL...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: arial,helvetica,sans-serif; background-color: #ffffff;">The recent release of FIM 2010 R2 SP1 added support for several new platforms. </span></p>
<ul>
<li><span style="font-family: arial,helvetica,sans-serif; background-color: #ffffff;">Server 2012</span></li>
<li><span style="font-family: arial,helvetica,sans-serif; background-color: #ffffff;">SQL 2012</span></li>
<li><span style="font-family: arial,helvetica,sans-serif; background-color: #ffffff;">SharePoint Foundation 2013</span></li>
<li><span style="font-family: arial,helvetica,sans-serif; background-color: #ffffff;">System Center 2012</span></li>
</ul>
<p><span style="font-family: arial,helvetica,sans-serif; background-color: #ffffff;">Full details can be found at <a href="https://technet.microsoft.com/en-us/library/jj863245(v=ws.10).aspx">https://technet.microsoft.com/en-us/library/jj863245(v=ws.10).aspx</a></span></p>
<p><span style="font-family: arial,helvetica,sans-serif; background-color: #ffffff;">The inclusion of System Center 2012 has been great, but there are certainly some "gotchas".</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;">If you have upgraded and were previously using System Center 2010 things likely went very smooth until you try to install FIM reporting on System Center 2012 with SP1 (which was a large rev in itself).</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;">Or if you are like me and are trying to implement on a clean install of System Center 2012 then you have no doubt run into issues. Have no fear, there are some workarounds out there that I will be sharing with you. Over a few implementations, I have noticed 2 very specific problems. The first is a bug in the Portal and Service.msi that will repeatedly tell you that you are missing a patch KB2561430, however, this is actually a hotfix that is only applicable to SCSM 2010. The second problem is a missing SQL function (that is present&nbsp;if you upgrade from SCSM 2010), hence why it possibly went smoothly for some folks above.</span></p>
<p><strong><span style="font-family: arial,helvetica,sans-serif; text-decoration: underline;">Continuous prompt for patch...</span></strong></p>
<p><span style="font-family: arial,helvetica,sans-serif;">I've actually found two separate workarounds for this one.&nbsp; My preference if you have the luxury of doing a clean install of Service Manager, is to install SM/DW 2012 (non-SP1), then install FIM reporting on top of it.&nbsp; Once the Datawarehouse&nbsp; has been registered (all the MP's have been deployed), you can run a change install on FIM to add reporting. Just make sure to read the next section before running the datawarehouse script install :)</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;">Now if you have an existing SM 2012 installation that is already at SP1, it's not necessarily feasible to just wipe it out and start all over of course. In this case, you will need to do an unattended installation of FIM in order to deploy reporting. This also must be on an install and not a change, a fact I spent several hours learning today. The good part is that you will still be able to use an existing FIMService DB, that is neither here nor there if you do not have one to start with.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;">The following is an example of&nbsp;a command line to do just that,&nbsp;and more info on unattended installations&nbsp;are available here&nbsp;<a href="https://technet.microsoft.com/en-us/library/hh322863(v=WS.10).aspx">https://technet.microsoft.com/en-us/library/hh322863(v=WS.10).aspx</a></span></p>
<p><span style="font-family: arial,helvetica,sans-serif;">C:\Windows\SysWOW64\msiexec.exe /i "C:\FIM\Service and Portal\Service and Portal.msi" /quiet ACCEPT_EULA=1 ADDLOCAL=CommonServices,WebPortals,FIMReporting SQMOPTINSETTING=0 SQLSERVER_SERVER=FIMDBSQL SQLSERVER_DATABASE=FIMService EXISTINGDATABASE=1 MAIL_SERVER=exchange.yourdomain.com MAIL_SERVER_USE_SSL=1 MAIL_SERVER_IS_EXCHANGE=1 POLL_EXCHANGE_ENABLED=1 CERTIFICATE_NAME=ForefrontIdentityManager SERVICE_ACCOUNT_NAME=FIMServiceAccount SERVICE_ACCOUNT_PASSWORD=******* SERVICE_ACCOUNT_DOMAIN=yourdomain SERVICE_ACCOUNT_EMAIL=svc-fimservice@yourdoman.com SERVICE_MANAGER_SERVER=SMMGMTSRV SYNCHRONIZATION_SERVER=FIMSYNCSRV SYNCHRONIZATION_SERVER_ACCOUNT=Domain\fimma SERVICEADDRESS=FIMService.yourdomain.com REGISTRATION_PORTAL_URL=https://passwordregistration.yourdomain.com FIREWALL_CONF=1 SHAREPOINTUSERS_CONF=1 REQUIRE_REGISTRATION_INFO=1 REGISTRATION_ACCOUNT_NAME=fimSSPR REGISTRATION_ACCOUNT_DOMAIN=YOURDOMAIN REQUIRE_RESET_INFO=1 RESET_ACCOUNT_NAME=fimSSPR RESET_ACCOUNT_DOMAIN=YOURDOMAIN&nbsp; /L*v "C:\FIM\Service and Portal\fimservicelog.txt"</span></p>
<p><strong><span style="font-family: arial,helvetica,sans-serif; text-decoration: underline;">Missing function...</span></strong></p>
<p>The second issue I've run into is with the missing function this becomes a problem since&nbsp;two of the FIM Reporting SQL stored procedures have a dependency on it, and if it's not there you will continually see errors like the ones below.</p>
<p>Module name: TransformEntityRelatesToEntityFact</p>
<p>&nbsp;Message: Cannot<br />find either column "ETL" or the user-defined function or aggregate<br />"ETL.CanContinueExecution", or the name is ambiguous.</p>
<p>These errors manifest themselves during the transform phase of the ETL process and I have not seen SM recover on it's own even after adding the function. With that said, it's very important to make sure that all of the management packs are deployed to the DW and that the function is present before installing the DW scripts.</p>
<p>The SQL query below can be used to create the function ETL.CanExecutionContinue which will allow you to start enjoying the benefits of FIM reporting!</p>
<pre class="scroll"><code class="mysql">USE [DWRepository] <br /> GO <br /> <br /> SET ANSI_NULLS ON <br /> GO <br /> <br /> SET QUOTED_IDENTIFIER ON <br /> GO <br /> <br /> CREATE FUNCTION [etl].[CanContinueExecution] ( <br /> @transformName VARCHAR(256), <br /> @executionStartTime DATETIME <br /> ) <br /> RETURNS BIT <br /> AS BEGIN <br /> DECLARE @canContinue BIT = 1, <br /> @executionTimeLimit INT = 30 -- minutes <br /> <br /> -- do not continue if the time we have consumed is <br /> -- more or equal to the amount of time that we are <br /> -- allowed to take for this batch <br /> IF(ABS(DATEDIFF(mi, @executionStartTime, GETUTCDATE())) &gt;= @executionTimeLimit) <br /> BEGIN <br /> SET @canContinue = 0 <br /> END <br /> <br /> RETURN @canContinue; <br /> END <br /> <br /> GO <br /> </code></pre>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>FIMMA no-start-bad-ma-configuration</title>
      <link>https://docs.microsoft.com/archive/blogs/keithf/fimma-no-start-bad-ma-configuration</link>
      <pubDate>Wed, 17 Apr 2013 16:29:00 GMT</pubDate>
      <dc:creator><![CDATA[Keith Fleming]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/keithf/2013/04/17/fimma-no-start-bad-ma-configuration/</guid>
      <description><![CDATA[I've been dealing with a new issue the past few days that I thought would be good to share with the...]]></description>
      <content:encoded><![CDATA[<p>I've been dealing with a new issue the past few days that I thought would be good to share with the community.</p>
<p>Over the past few years I have seen a variety of different issues related to FIM, however, this was the first time I have run into this specific error.&nbsp;When running a full import on the FIMService MA, the import would get to&nbsp;"completing obsoletion" then fail. Certainly frustrating to say the least since it would always fail at the end of a full import, a delta import would always run successfully though.&nbsp;After trying some of the standard things (deleting the connector space, deleting the MA and recreating) I found that the issue persisted and I couldn't seem to resolve it.</p>
<p>A very telling item in this case, was that the DB's (FIMService and FIMSync) had been moved from a virtual server to a physical host. Additionally, they had also been patched to the latest hotfix and I'm not sure what order that happened in since it was like that when I got here.&nbsp; Anyone who has spent quality time with FIM knows that randomly upgrading and moving things around can be a recipe for disaster! As I dug in a little deeper, I found the stack trace below on the sync server which lead me to look into the DB role permissions.</p>
<p>&nbsp;</p>
<p>As it turns out, during the DB moves execute and alter permissions had been removed from the roles which was the root cause of my errors.&nbsp; After mirroring the permissions from a known good copy of the FIMService DB I was finally able to complete full imports.</p>
<p>&nbsp;Planning is a step that cannot be overlooked or hurried through when dealing with FIM databases.</p>
<p>&nbsp;__________________________________________________________________________________________________________________________________</p>
<p>Stack Trace:</p>
<p>___________________________________________________________________________________________________________________________________</p>
<p>&nbsp;</p>
<p>Net SqlClient Data Provider: System.Data.SqlClient.SqlException (0x80131904): The EXECUTE permission was denied on the object 'AssertTransactionalContext',<br /> database 'FIMService', schema 'fim'.</p>
<p>The SELECT permission was denied on the object 'RequestLog', database 'FIMService', schema 'fim'.</p>
<p>The SELECT permission was denied on the object 'RequestLog', database 'FIMService', schema 'fim'.</p>
<p>The SELECT permission was denied on the object 'RequestLog', database 'FIMService', schema 'fim'.</p>
<p>Cannot find the object "#truncateRequestLogBuffer" because it does not exist or you do not have permissions.</p>
<p>&nbsp;&nbsp; at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)</p>
<p>&nbsp;&nbsp; at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()</p>
<p>&nbsp;&nbsp; at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,<br /> TdsParserStateObject stateObj)</p>
<p>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)</p>
<p>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean<br /> async)</p>
<p>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,<br /> DbAsyncResult result)</p>
<p>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)</p>
<p>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()</p>
<p>&nbsp;&nbsp; at Microsoft.ResourceManagement.Data.Sync.TruncateRequestLog(Int64 requestLogTruncationKey</p>]]></content:encoded>
    </item>
  </channel>
</rss>