<?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>Identity Journey</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/identityjourney/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/identityjourney/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 06:09:28 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>MIM Hybrid Reporting with PowerBI</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/mim-hybrid-reporting-with-powerbi</link>
      <pubDate>Tue, 10 Apr 2018 09:22:47 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/?p=845</guid>
      <description><![CDATA[With the release with MIM 2016, it includes a new feature called hybrid reporting which collects...]]></description>
      <content:encoded><![CDATA[With the release with MIM 2016, it includes a new feature called <a href="https://blogs.technet.microsoft.com/iamsupport/2017/05/02/microsoft-identity-manager-hybrid-reporting-with-audit-activity-reports-in-the-azure-active-directory-portal-now-in-public-preview-refresh/">hybrid reporting </a>which collects identity management activities across different MIM Service systems and provides a unified report in Azure portal. Currently there are only three reports available in Azure Active Directory (Self-Service Password registration/reset and self-service groups activity). In additional, you can also export the data to your security information and event management(SIEM) system for your own custom views. In this blog, I will leverage Microsoft <a href="https://powerbi.microsoft.com/en-us/">PowerBI </a>platform to analyse those requests and generate some essential report.

Firstly, we need download and install <a href="https://www.microsoft.com/en-us/download/details.aspx?id=55112">Microsoft Identity Manager Hybrid Reporting Agent </a> in all MIM Service Servers. Then, the activity data of Identity Manager in <strong>JSON</strong> structure is sent to the Windows Event Log, in a well-defined path: <b>Application and Services Logs, Identity Manager Request Log. </b>Afterwards, we can start exporting those data to your SIEM.

To simply the data collection, I run following PowerShell command to export those data to a CSV file and import the data into <a href="https://powerbi.microsoft.com/en-us/desktop/">PowerBI desktop</a> by selecting "Get Data"--&gt;"text/CSV"

<span style="color: #3366ff"><em>Get-WinEvent -LogName "Identity Manager Request Log" | foreach {"$($_.id)|$($_.message)"|Out-File MIMRequestNew.csv -Append</em></span>

During the import of CSV file, PowerBI allows us to customize the delimiter and load them into separate columns, click "Load" to confirm .

<a href="https://msdnshared.blob.core.windows.net/media/2018/04/load.png"><img width="599" height="527" class="alignnone wp-image-885 " alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/load-1024x901.png" /></a>

Next, we are going to leverage the <a href="https://docs.microsoft.com/en-us/power-bi/desktop-query-overview">"<span>The Query Editor</span>" </a>to t<span>ransform these MIM requests to a table for further reporting. As it is known that the MIM requests are written in JSON format, we shall choose the message column and right click "Transform"--&gt;"JSON".</span>

<img width="469" height="433" class="alignnone wp-image-975" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/json2.png" />

O<span>nce completion, these MIM requests are parsed into the "records" which allows us to navigate the request details.</span>

<img width="319" height="135" class="alignnone wp-image-985" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/records.png" />

<img width="429" height="221" class="alignnone wp-image-955" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/detail.png" />

Then we click the button at the right corner to expand these properties/attributes of the records. please note the attributes of the records vary from different types <span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">(CRUD)</span> of MIM request which you shall compose the query editor accordingly.

<img width="356" height="355" class="alignnone wp-image-995" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/selection.png" />

Finally, all weneed is to publish the dataset into the PowerBI and build the report from there. Below is some basic reports via "Quick insights", enjoy :)

<img width="758" height="443" class="alignnone wp-image-1005" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/insights.png" />

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>How to Create a Web Service Connector for SAP in FIM/MIM(Part 2)</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/how-to-create-a-web-service-connector-for-sap-in-fimmimpart-2</link>
      <pubDate>Mon, 04 Jul 2016 23:39:30 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/?p=836</guid>
      <description><![CDATA[&nbsp;

Continuing with the part1, we will move on to leverage the built-in “Web Service...]]></description>
      <content:encoded><![CDATA[&nbsp;

Continuing with the <a href="https://blogs.technet.microsoft.com/identityjourney/2016/07/04/how-to-create-a-web-service-ma-for-sap-part-1/">part1</a>, we will move on to leverage the built-in “Web Service Configuration Tool” to configure the import and export logic.

1. Launch the tool and click “Add” under discovery

2. Supply the web service URL which is created in part1 and click “Next”

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image167.png"><img width="294" height="298" title="image" style="border: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image_thumb139.png" border="0" /></a>

&nbsp;

3. Choose “Basic” and input the username and password. click “Next”

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image168.png"><img width="292" height="296" title="image" style="border: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image_thumb140.png" border="0" /></a>

4.  It listed the functions exposed by the interface. click “Finish”. (Note: Make sure the web service only exposes one HTTP endpoint)

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image169.png"><img width="302" height="305" title="image" style="border: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image_thumb141.png" border="0" /></a>

5. Add new object Types and its associated attributes including the anchor, which defines the schema of the connector space.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image170.png"><img width="434" height="167" title="image" style="border: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image_thumb142.png" border="0" /></a>

6. Expand the objectType node in the left panel, then it allows you to control the behavior of each run profile by constructing the workflow. While all the available workflows are listed in the right panel. The workflow varies between the different projects, <a href="https://www.microsoft.com/en-au/download/details.aspx?id=29944">a sample config file for SAP</a> is published in the TechNet download center. Once you finish the project, don’t forget to save it under the “Extension” folder in the FIM installation path.

Now we finally come to the step to create a management agent in the synchronization manager. It is actually quite straight forward as all other management agent does, just make sure you specify the correct wsconfig file and credential.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image171.png"><img width="348" height="261" title="image" style="border: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image_thumb143.png" border="0" /></a>]]></content:encoded>
    </item>
    <item>
      <title>How to Create a Web Service Connector for SAP in FIM/MIM(Part 1)</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/how-to-create-a-web-service-ma-for-sap-part-1</link>
      <pubDate>Mon, 04 Jul 2016 09:33:40 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/?p=445</guid>
      <description><![CDATA[&nbsp;

In this blog, I am going to work through the steps to create a web service connector which...]]></description>
      <content:encoded><![CDATA[&nbsp;

In this blog, I am going to work through the steps to create a web service connector which connects with sap ECC6.0

Before creating a web service management agent in the FIM synchronization, exposing a web service from SAP side which allows the connector to retrieve the data is required. Next, i will demo how to generate a web service based on the built-in interface. However, in real project you need cooperate with SAP engineer on designing the interface.

1. Login to the SAP system and type the transaction code "<strong>SE80</strong>" which brings up the object navigator.

2.  Browser to the and type the package name

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image410.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image4_thumb.png" alt="image" width="323" height="122" border="0" /></a>

3. Enter and select "<strong>yes</strong>" to choose the creation.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image1310.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image13_thumb.png" alt="image" width="322" height="134" border="0" /></a>

4. Fill in the information as below and click OK. It will prompt for a transport request. Save it a transport request.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image161.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image16_thumb.png" alt="image" width="338" height="129" border="0" /></a>

5. After successful creation of the package, right click on the package name and choose <strong>Create—&gt;enterprise service</strong>

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image241.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image24_thumb.png" alt="image" width="345" height="276" border="0" /></a>

&nbsp;

&nbsp;

&nbsp;

&nbsp;

6. Choose “<strong>Service Provider”</strong>

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image281.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image28_thumb.png" alt="image" width="322" height="258" border="0" /></a>

7. Choose “<strong>Existing ABAP Objects(Inside Out)”</strong>

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image311.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image31_thumb.png" alt="image" width="332" height="261" border="0" /></a>

8. Name the service and choose “<strong>Function Group”</strong>

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image341.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image34_thumb.png" alt="image" width="333" height="264" border="0" /></a>

9. Type <strong>“SU_USER”</strong> in the endpoint

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image371.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image37_thumb.png" alt="image" width="313" height="246" border="0" /></a>

10. Select Functions you want exposure (for demo purpose, only <strong>BAPI_USER_GETLIST</strong> is required here)

&nbsp;

&nbsp;

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image401.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image40_thumb.png" alt="image" width="314" height="251" border="0" /></a>

11. Choose the default SOAP Application as below.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image461.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image46_thumb.png" alt="image" width="317" height="254" border="0" /></a>

12. Specify the package name and its transport request and click “continue”

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image491.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image49_thumb.png" alt="image" width="331" height="263" border="0" /></a>

13. Click complete.Once the web service is created successfully under the package. Select “configuration” tab and modify the profiler to “<strong>Stateful</strong>”

&nbsp;

&nbsp;

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image521.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image52_thumb.png" alt="image" width="519" height="191" border="0" /></a>

14. Finally choose the web service and right click “<strong>Activate</strong>”

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image561.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image56_thumb.png" alt="image" width="321" height="251" border="0" /></a>

Then we need add an endpoint binding for the web service.

1. Open the Transaction <strong>SOAMANAGER</strong>. Select “<strong>Single Service administration</strong>” under Application and Scenario Communication tab.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image601.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image60_thumb.png" alt="image" width="537" height="186" border="0" /></a>

&nbsp;

2. Provider the WebService created in above step and “apply selection”

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image641.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image64_thumb.png" alt="image" width="493" height="95" border="0" /></a>

3.  Make sure you have below configuration selected.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image701.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image70_thumb.png" alt="image" width="532" height="149" border="0" /></a>

4. Click “Create Endpoint” under configuration tab, make sure “<strong>userID/Password”</strong> is selected as authentication method.

&nbsp;

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image781.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image78_thumb.png" alt="image" width="402" height="253" border="0" /></a>

So far we’ve completed the configuration of sap web service which allows the web service connector to consume. The highlight URL is web service address which we need for the web service config.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image147.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/2016/07/image_thumb123.png" alt="image" width="530" height="141" border="0" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Configure Privileged Access Management(PAM) in an Existing Domain</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/configure-privileged-access-managementpam-in-an-existing-domain</link>
      <pubDate>Sun, 01 May 2016 22:01:32 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/2016/05/01/configure-privileged-access-managementpam-in-an-existing-domain/</guid>
      <description><![CDATA[&nbsp;

With the new release of Microsoft Identity Manager (MIM) 2016, a new feature PAM is added...]]></description>
      <content:encoded><![CDATA[&nbsp;

With the new release of <a href="https://www.microsoft.com/en-au/server-cloud/products/microsoft-identity-manager/">Microsoft Identity Manager (MIM) 2016</a>, a new feature PAM is added to help organizations restrict privileged access to some certain security groups. However, if you read through the <a href="https://technet.microsoft.com/en-us/library/dn903243.aspx">TechNet guide</a>, it is recommended to create a new trusted domain. Then is it a mandatory to have another new domain to leverage the PAM feature? The answer is NO, we can actually just leverage the JIT evaluation which is called <strong>“Priv Only” </strong>Mode.

<strong>Note: As PAM is part of the lateral movement protection controls for securing privileged access, "Priv only" mode is ONLY supported in lab environment not in Production. </strong>

In the lab environment, I deployed the PAM component and MIM Service in the existing CONTOSO domain. Then I run below PowerShell Cmdlets (PAM module) to prepare PAM environments. Please pay attention to the parameter switch <a href="https://technet.microsoft.com/en-us/library/mt604092.aspx"><em>PrivOnly</em></a> allows you to indicate the group already exists in the contoso domain.

<em><span style="font-size: small"><span style="color: #0000a0">New-PAMGroup -SourceDomain contoso -SourceGroupName ITAdmins <u><strong>-PrivOnly</strong></u></span></span></em>

After the successful execution of the cmdlet, you shall be able to query the PAM groups as below screen shows. It is a manually managed security group with <em><strong>msidmPamEnabled </strong>set to<strong> True </strong></em>and some other pam related attributes set

<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_3D114A78.png"><img width="483" height="339" title="image" style="border-width: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_6952F2BE.png" border="0" /></a>

Then it’s time to setup the PAM roles by specifying some parameters including the PAM groups , candidates and other advanced features like Approval and MFA. Here I just keep the default configuration: once any one of the candidates submit the PAM request, he/she will be added to the two security groups:  ITAdmins and HRAdmin together for the next following hour.

<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_4C02BC56.png"><img width="400" height="569" title="image" style="border-width: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_2B7E0D55.png" border="0" /></a>

Finally it’s time to test the privilege access either via Powershell cmdlet or <a href="https://technet.microsoft.com/en-US/library/mt488767.aspx">the sample PAM portal</a>. Once I submit the request via the portal, the access will be activated and the below events will be logged under <strong><u>Applications and Services Logs/Privileged Access Management</u></strong>

<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_0CC9B41B.png"><img width="548" height="222" title="image" style="border-width: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_0C6011D7.png" border="0" /></a>

Then PAM monitor Service will remove them automatically when the access expires and log an event as below under the same event catalog.

<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_164A24A4.png"><img width="551" height="177" title="image" style="border-width: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_04923C2C.png" border="0" /></a>

In a nutshell, following above steps you shall still be able to setup the PAM solution without adding a new privileged domain.]]></content:encoded>
    </item>
    <item>
      <title>Another approach to delete all users from FIM portal</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/another-approach-to-delete-all-users-from-fim-portal</link>
      <pubDate>Mon, 18 Apr 2016 21:42:48 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/2016/04/18/another-approach-to-delete-all-users-from-fim-portal/</guid>
      <description><![CDATA[&nbsp;

When you are in the design or dev phase for a FIM/MIM solution, it is very likely that you...]]></description>
      <content:encoded><![CDATA[&nbsp;

When you are in the design or dev phase for a FIM/MIM solution, it is very likely that you want to purge all the user account (of course, the built-in admin and FIMMA account are excluded) in the FIM portal. You probably already find the <a href="https://social.technet.microsoft.com/wiki/contents/articles/2108.how-to-use-powershell-to-delete-all-users-from-the-fim-portal.aspx">existing delete script</a> in the internet for the purpose, however its performance may not be ideal considering the below two factors.

1. The script composes a single request for each user.

2. Every single request will be evaluated with the existing request-MPRs.

As i mentioned in <a href="https://blogs.technet.com/b/identityjourney/archive/2016/04/14/why-fim-mim-ma-is-slow-part-2.aspx">my previous blog</a>, FIMMA introduces the async and bulk mode during export. So the approach here is to leverage the built-in FIMMA account (note: FIMMA account type is a resource not a user in FIM Service) to delete the users in batch mode.

1. Choose the MA which contributes the metaverse most (we take ADMA as an example here), and modify the object deletion run as below.

<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_1C6E30D0.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_7940C61D.png" alt="image" width="371" height="264" border="0" /></a>

2.  Configure the deprovisioning rule of FIMMA as below

<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_769A9B1D.png"><img style="border: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_2345E5A8.png" alt="image" width="364" height="276" border="0" /></a>

3. Delete the connector space of the ADMA

4.  Run Full import on the ADMA, inside this step it will trigger the metaverse deletion rule and then FIMMA deprovisioning rule. Note: No sync profile is needed here.

5. Run Export on FIMMA, it will then delete all the users in FIM Service .

6. Revert the changes done in step1,2]]></content:encoded>
    </item>
    <item>
      <title>How to enable FIM Powershell MA logging in the eventlog</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/how-to-enable-fim-powershell-ma-logging-in-the-eventlog</link>
      <pubDate>Mon, 18 Apr 2016 21:08:57 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/2016/04/18/how-to-enable-fim-powershell-ma-logging-in-the-eventlog/</guid>
      <description><![CDATA[&nbsp;With the links (Technet and TechNet blog), they only demo how to log the Powershell verbose...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;<p>With the links (Te<a href="https://msdn.microsoft.com/en-us/library/dn640417(v=ws.10).aspx">chnet</a> and <a href="https://social.technet.microsoft.com/wiki/contents/articles/23648.windows-powershell-connector-for-fim-2010-r2-flat-file-sample-connector.aspx">TechNet blog</a>), they only demo how to log the Powershell verbose trace to a file.&nbsp; What if we would like to enable them in the default windows eventlog for further monitor?</p><p>here&rsquo;s the section you shall put in the <em><strong>%ProgramFiles%\Microsoft Forefront Identity Manager\2010\Synchronization Service\bin\miiserver.exe.config</strong></em>, and do not forget to restart the FIMSynchronziationService. After that, we shall be able to have these events with source &ldquo;ConnectorsLog&rdquo; under application. </p><table cellspacing="0" cellpadding="2" width="627" border="1"> <tbody> <tr> <td valign="top" width="625"> <p>&lt;source name="ConnectorsLog" switchValue="Warning"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;listeners&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;add initializeData="ConnectorsLog"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral,&nbsp; PublicKeyToken=b77a5c561934e089"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="ConnectorsLog" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, Callstack"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;filter type="" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/add&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/listeners&gt;<br> &lt;/source&gt; </p></td></tr></tbody></table></p>
]]></content:encoded>
    </item>
    <item>
      <title>Why FIM/MIM MA is slow? Part 2</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/why-fimmim-ma-is-slow-part-2</link>
      <pubDate>Wed, 13 Apr 2016 22:49:00 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/2016/04/13/why-fimmim-ma-is-slow-part-2/</guid>
      <description><![CDATA[&nbsp;Continue with the &ldquo;Why FIM/MIM MA is slow?Part 1&rdquo;, we will discuss the most often...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;<p>Continue with the <a href="/b/identityjourney/archive/2016/04/14/why-fim-mim-ma-is-slow-part-1.aspx">&ldquo;Why FIM/MIM MA is slow?Part 1&rdquo;</a>, we will discuss the most often case &ldquo;the slowness on FIMMA export&rdquo;. Based on my field experience, the average performance for export on FIMMA is around 10 objects/sec.&nbsp; You probably need some investigation if yours is far beyond the average or it can not meet the high-level business requirement.</p><p>You may or may not aware since FIM 2010 R2, it introduces the <a href="https://technet.microsoft.com/en-us/library/hh322883(v=ws.10).aspx#bkmk_Addressing_Bad_Data">Composite Request</a> to allow to export a batch changes to the FIM Service. The FIM MA export is configured by default to use an <strong>asynchronous, batch-request evaluation mode</strong> for requests created by the FIM Synchronization engine account. And we do allow you to control the behavior in the <em><strong>miiserver.exe.config</strong></em> under <strong><em>%FIMInstallDirectory%\2010\Synchronization</em> Service\Bin</strong></p><table style="width:585px;" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td width="133" valign="top">Property</td>
<td width="120" valign="top">Default Value</td>
<td width="330" valign="top">Notes</td>
</tr>
<tr>
<td width="144" valign="top">asynchronous</td>
<td width="127" valign="top">True</td>
<td width="330" valign="top">FIMMA export run under&nbsp; async or sync mode</td>
</tr>
<tr>
<td width="147" valign="top">aggregate</td>
<td width="129" valign="top">True</td>
<td width="330" valign="top">FIMMA export run under batch mode or single mode</td>
</tr>
<tr>
<td width="147" valign="top">aggregationThreshold</td>
<td width="130" valign="top">1000</td>
<td width="330" valign="top">The number of attributes (not resources) that are included in a batch.</td>
</tr>
</tbody>
</table><p>However the perquisite of this mode is all changes in the composite request must succeed in order for the changes to be applied.&nbsp; Let&rsquo;s say under the default config, all the 1000 attribute changes (aggregationThreshold) must succeed otherwise it falls back to the single mode for the batch. Below are the screenshots for the success and failed scenarios separately.</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_5B872042.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_5B872042.png"><img width="578" height="183" title="image" style="display:inline;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_7920AD54.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_thumb_5F00_7920AD54.png" border="0"></a></p><p>So there are below two best practices based on this mechanism which may help you improve the FIMMA export performance.</p><p>1. Try to fix these errors/bad data happened during export.</p><p>2. Tune the batch size (aggregationThreshold) to reduce the chance of failed batches.</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Why FIM/MIM MA is slow? Part 1</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/why-fimmim-ma-is-slow-part-1</link>
      <pubDate>Wed, 13 Apr 2016 21:43:00 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/2016/04/13/why-fimmim-ma-is-slow-part-1/</guid>
      <description><![CDATA[&nbsp;&ldquo;Why FIM/MIM MA is slow&rdquo; is one of the most frequent questions we&rsquo;ve got...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;<p>&ldquo;Why FIM/MIM MA is slow&rdquo; is one of the most frequent questions we&rsquo;ve got from our customers. It&rsquo;s actually a board topics which has various causes. Before we dig into to the details, it is quite necessary for us to clarify below two checkpoints.</p><p>1. Which particular run profile is slow?</p><p>&nbsp;&nbsp;&nbsp;&nbsp; As we all know, there are <a href="https://social.technet.microsoft.com/wiki/contents/articles/1147.ilmfim-run-profile-definitions.aspx">three type run profiles</a> for every Management Agent and so does FIMMA. Every run profile type involves different components. And pay attention to the different interfaces leveraged by import and export profile.</p><table style="width:577px;" cellspacing="0" cellpadding="2" border="1"> <tbody> <tr> <td valign="top" width="129">Run Profile Type</td> <td valign="top" width="446">Action</td></tr> <tr> <td valign="top" width="129">Full/Delta Import</td> <td valign="top" width="446">Import objects from FIM Service to FIMMA connector space<strong> via SQL interface</strong></td></tr> <tr> <td valign="top" width="129">Full/Delta Sync</td> <td valign="top" width="446">Apply the sync rules between FIMMA connector space and metaverse</td></tr> <tr> <td valign="top" width="129">Export</td> <td valign="top" width="446">Export objects from FIMMA connector space to FIM Service <strong>via web service<br>(<a href="https://%fimservicehost%:5725">https://%fimservicehost%:5725</a>)</strong></td></tr></tbody></table><p>&nbsp;</p><p>2. How we define slow?</p><p>&nbsp;&nbsp;&nbsp; When we mention &ldquo;slow&rdquo;, it could be general or slower. So it&rsquo;s important to have a baseline of the FIMMA&rsquo;s performance by collecting the perf counters under <a href="https://technet.microsoft.com/en-us/library/jj590247(v=ws.10).aspx">FIM 2010</a> Namespace.</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_774D0921.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_774D0921.png"><img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_1DB17D1E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_thumb_5F00_1DB17D1E.png" width="405" height="253"></a></p><p>Then you probably ask what kind of performance is expected? The answer is it depends on several elements like the typology, the scale, server config and sql instance config. That&rsquo;s why you need setup your own baseline , the more frequent you inspect on this, the more accurate is your FIM solution&rsquo;s baseline. And Microsoft Product team do publish a testing result on <a href="https://technet.microsoft.com/en-us/library/ff934581(v=ws.10).aspx">small profile</a> and <a href="https://technet.microsoft.com/en-us/library/ff934589(v=ws.10).aspx">medium profile</a> separately as a reference.</p><p>So next time, instead of saying &ldquo;FIMMA is slow&rdquo;, you shall more specific about &ldquo;Which run profile of FIMMA is slow to what extend&rdquo;.</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>How to talk to FIM/MIM Service Pogrammatically</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/how-to-talk-to-fimmim-service-pogrammatically</link>
      <pubDate>Sun, 10 Apr 2016 23:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/2016/04/10/how-to-talk-to-fimmim-service-pogrammatically/</guid>
      <description><![CDATA[&nbsp;You've probably told more than once that FIM/MIM Service is a WCF Service which exposures...]]></description>
      <content:encoded><![CDATA[<div class="code">&nbsp;<div class="code">You've probably told more than once that FIM/MIM Service is a WCF Service which exposures several <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ee652401(v=vs.100).aspx">endpoints </a>. Then how can we connect to the WCF service programmatically? In this blog, i will take the <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ee652390(v=vs.100).aspx">Resource Endpoint </a>as a starting point and demo how to invoke Get method.</div><p>Firstly, we create a Visual C# console Application and add a service reference to the create a proxy for the running FIMService. After clicking "OK", there are five default endpoints added to the configuration file App.config.</p><p>Note: you shall modify the URI according to your fim service host name.</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/Capture1.PNG" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72/Capture1.PNG"><img style="height:360px;width:442px;" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/Capture1.PNG" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72/Capture1.PNG" border="0"></a></p><p><span style="font-size:small;font-family:consolas;color:#0000ff;"><span style="font-size:small;font-family:consolas;color:#0000ff;"><span style="font-size:small;font-family:consolas;color:#0000ff;">&nbsp;</span></span></span></p><p><span style="font-size:small;font-family:consolas;color:#0000ff;"><span style="font-size:small;font-family:consolas;color:#0000ff;"><span style="font-size:small;font-family:consolas;color:#0000ff;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/Capture2.PNG" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72/Capture2.PNG"><img style="height:249px;width:512px;" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/Capture2.PNG" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72/Capture2.PNG" border="0"></a></span></span></span></p><p></p><p>Next, we need compose a request message by specifying the parameter. As described in the Developer reference page , a <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ee652390(v=vs.100).aspx">Get Request</a> is to retrieve the object by supplying the objectID . Below is the copy of the code snippet.</p><div class="code"><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">System</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">System.Collections.Generic</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">System.Linq</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">System.Text</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">System.Threading.Tasks</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">System.ServiceModel</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">System.ServiceModel.Channels</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">GetResourceDemo.FIMServiceReference</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">Microsoft.ResourceManagement</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">Microsoft.ResourceManagement.WebServices</span><span style="color:blue;">;</span><span style="color:#808080;"><br></span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">System.Xml</span><span style="color:blue;">;</span><span style="color:#808080;"><br><br></span><span style="color:blue;">namespace</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">GetResourceDemo</span><span style="color:#808080;"><br></span><span style="color:black;">{</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp; </span><span style="color:blue;">class</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">Program</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp; </span><span style="color:black;">{</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:blue;">static</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">void</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">Main(</span><span style="color:blue;">string</span><span style="color:black;">[]</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">args)</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">{</span><span style="color:#808080;"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:darkgreen;">//GetAction<br></span><span style="color:#808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:blue;">const</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">string</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">GetRCAction</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;"> "https://schemas.xmlsoap.org/ws/2004/09/transfer/Get"</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:blue;">const</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">string</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">RMNameSpace</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;"> "https://schemas.microsoft.com/2006/11/ResourceManagement"</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:darkgreen;">//create a WCF resourceClient by referring the config file<br></span><span style="color:#808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">ResourceClient</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">rc</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">new</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">ResourceClient(</span><span style="color:#808080;">"ServiceMultipleTokenBinding_Resource"</span><span style="color:black;">)</span><span style="color:blue;">;</span><span style="color:#808080;">&nbsp; <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:darkgreen;">//compose the request message<br></span><span style="color:#808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">Message</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">request</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">request</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">Message.CreateMessage(MessageVersion.Default,GetRCAction</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">)</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:darkgreen;">// the built-in FIM administrator's account, shared across all the systems<br></span><span style="color:#808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">UniqueIdentifier</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">id</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">new</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">UniqueIdentifier(</span><span style="color:#808080;">"7fb2b853-24f0-4498-9534-4e10589723c4"</span><span style="color:black;">)</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">request.Headers.Add(MessageHeader.CreateHeader(</span><span style="color:#808080;">"ResourceReferenceProperty"</span><span style="color:black;">,RMNameSpace,</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">id.ToString(),</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">false</span><span style="color:black;">))</span><span style="color:blue;">;</span><span style="color:#808080;">&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:darkgreen;">//invoke the get method<br></span><span style="color:#808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:blue;">using</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">(Message</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">responseMessage</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">rc.Get(request))</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">{</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:darkgreen;">//Parse the reponse messgae<br></span><span style="color:#808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">XmlDictionaryReader</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">fullObject</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">responseMessage.GetReaderAtBodyContents()</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:#2b91af;">XmlDocument</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">Xdoc</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">new</span><span style="color:#808080;">&nbsp;</span><span style="color:#2b91af;">XmlDocument</span><span style="color:black;">()</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">Xdoc.Load(fullObject)</span><span style="color:blue;">;</span><span style="color:#808080;"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">XmlNamespaceManager</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">xmlNamespace</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">new</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">XmlNamespaceManager(Xdoc.NameTable)</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">xmlNamespace.AddNamespace(</span><span style="color:#808080;">"rm"</span><span style="color:black;">,</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">RMNameSpace)</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:#2b91af;">XmlNodeList</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">nodes</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">=</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">Xdoc.SelectSingleNode(</span><span style="color:#808080;">"//rm:Person"</span><span style="color:black;">,</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">xmlNamespace).ChildNodes</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:blue;">foreach</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">(</span><span style="color:#2b91af;">XmlNode</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">node</span><span style="color:#808080;">&nbsp;</span><span style="color:blue;">in</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">nodes)</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">{</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:#2b91af;">Console</span><span style="color:black;">.WriteLine(</span><span style="color:#808080;">"{0} : {1}"</span><span style="color:black;">,</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">node.Name.ToString().Replace(</span><span style="color:#808080;">"rm:"</span><span style="color:black;">,</span><span style="color:#808080;"> ""</span><span style="color:black;">),</span><span style="color:#808080;">&nbsp;</span><span style="color:black;">node.InnerText.ToString())</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">}</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">}</span><span style="color:#808080;"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:#2b91af;">Console</span><span style="color:black;">.ReadKey()</span><span style="color:blue;">;</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color:black;">}</span><span style="color:#808080;"><br>&nbsp;&nbsp;&nbsp; </span><span style="color:black;">}</span><span style="color:#808080;"><br></span><span style="color:black;">}</span></div><p></p><p></p><p></p><p></p><p></p><p>Finally, build the project and run it, you&rsquo;ll have all the information for the default FIM administrator. :)</p><p>Further if you don't want to build the FIM client library from scratch, I would recommend the <a href="https://lithnetrmc.codeplex.com/">lithnet FIM client</a> which simplifies the interactive with FIM Service.</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/Capture_104D79A1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/Capture_5F00_104D79A1.png"><img width="520" height="225" title="Capture" style="display:inline;border-width:0px;" alt="Capture" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/Capture_thumb_356FE56F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/Capture_5F00_thumb_5F00_356FE56F.png" border="0"></a></p></div><!-- code formatted by https://manoli.net/csharpformat/ -->
]]></content:encoded>
    </item>
    <item>
      <title>The Ultimate Tools to work with RCDC in FIM</title>
      <link>https://docs.microsoft.com/archive/blogs/identityjourney/the-ultimate-tools-to-work-with-rcdc-in-fim</link>
      <pubDate>Sun, 15 Mar 2015 03:57:00 GMT</pubDate>
      <dc:creator><![CDATA[Tracy Yu-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/identityjourney/2015/03/15/the-ultimate-tools-to-work-with-rcdc-in-fim/</guid>
      <description><![CDATA[&nbsp;
Resource Control Display Configuration (RCDC) is the concept you can&#39;t get rid of when...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p><a href="https://technet.microsoft.com/en-us/library/ee534918(v=ws.10).aspx">Resource Control Display Configuration</a> (RCDC) is the concept you can&#39;t get rid of when you start to do some UI customization in the FIM portal.&nbsp; However, we don&rsquo;t provide a friendly UI to view and edit these XML configuration files&nbsp; and when something goes wrong we don&rsquo;t have any hints besides a red line on the page <span style="color:#ff0000;">&ldquo;There is an error in the person displaying configuration, please contact your system administrator &rdquo;.</span></p>
<p>In this blog I would like to share two favorite tools I normally use, they can solve up to 99% RCDC issues according to the field experiences. Then how about the remaining 1%, you may need to build from the scratch :)</p>
<p>It is known that each RCDC resource contains an XML configuration file which follows a specific set of predefined schemas. Then an XML editor is quite necessary to avoid some typo or syntax errors. Here I would like to take the visual studio as an example, you may leverage other similar tools as well.</p>
<p>1. Copy the default XSD Schema from the <a href="https://technet.microsoft.com/en-us/library/ee534918(v=ws.10).aspx"><strong>Appendix A</strong></a> and save it to the a file such as <em><strong>RCDC.xsd</strong></em></p>
<p>2. Copy the file to the visual studio default schema folders <strong>C:\Program Files (x86)\Microsoft Visual Studio 12.0\Xml\Schemas </strong>(note: it may vary from different visual studio versions)</p>
<p>3. Open the RCDC with visual studio and click <strong>XML--&gt;</strong> <strong>schemas</strong>, making sure the RCDC.xsd is selected.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_5C4937A1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_5C4937A1.png"><img width="701" height="225" title="image" style="display:inline;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_26D596DE.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_thumb_5F00_26D596DE.png" border="0" /></a></p>
<p>4. Then for anything which doesn&rsquo;t comply with the schema , you will have a wave line beneath with detail explanation.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_59CA48A7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_59CA48A7.png"><img width="642" height="65" title="image" style="display:inline;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_61E405AD.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_thumb_5F00_61E405AD.png" border="0" /></a></p>
<p>However in some scenarios like migrating RCDC configuration files from one environment to another, the UI complains the wrong configuration even it passes the schema validation. Then we have to rely on the FIM portal verbose trace (please note the trace is client trace instead of FIMService) to provide us with more hints.&nbsp;</p>
<p>1.&nbsp; Follow the instructions below to enable the verbose trace and make sure you run an IISRESET after to make it take effect.</p>
<p><a title="https://social.technet.microsoft.com/wiki/contents/articles/2260.how-to-configure-fim-portal-tracing.aspx" href="https://social.technet.microsoft.com/wiki/contents/articles/2260.how-to-configure-fim-portal-tracing.aspx">https://social.technet.microsoft.com/wiki/contents/articles/2260.how-to-configure-fim-portal-tracing.aspx</a></p>
<p>2.&nbsp; Repro the issue as shortly as you could otherwise you will have a large trace generated.</p>
<p>3.&nbsp; Open the log file with the SDK tool <strong><a href="https://msdn.microsoft.com/en-us/library/aa751795.aspx"><em>Service Trace Viewer Tool</em></a>&nbsp;</strong>, normally the failures in red will guide you the root cause. (In my case, there&rsquo;s undefined attribute name in my FIM Service Schema.)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_59EEF3FC.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_59EEF3FC.png"><img width="630" height="385" title="image" style="display:inline;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/03/72/metablogapi/image_thumb_218DA099.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-03-72-metablogapi/image_5F00_thumb_5F00_218DA099.png" border="0" /></a></p>
<p>Hope this blog can help your FIM RCDC deployment :)</p>]]></content:encoded>
    </item>
  </channel>
</rss>