<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://jeftek.spaces.live.com/mmm2008-05-17_13.22/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fjeftek.spaces.live.com%2fcategory%2fMIIS%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>This has blog has moved to a new home!  Please update links.: MIIS</title><description /><link>http://JefTek.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catMIIS</link><language>en-US</language><pubDate>Thu, 24 Jul 2008 06:19:14 GMT</pubDate><lastBuildDate>Thu, 24 Jul 2008 06:19:14 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://JefTek.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>1089944622624440050</live:id><live:alias>JefTek</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Welcome to the MetaVerse</title><link>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!846.entry</link><description>&lt;br&gt;&lt;br&gt;
&lt;p&gt;&lt;a href="http://jeftek.com/iam/ilm/welcome-to-the-metaverse/"&gt;Welcome to the MetaVerse for MIIS/ILM&lt;/a&gt; has moved to its new location on &lt;a href="http://www.jeftek.com/"&gt;JefTek.com&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1089944622624440050&amp;page=RSS%3a+Welcome+to+the+MetaVerse&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=jeftek.spaces.live.com&amp;amp;GT1=JefTek"&gt;</description><comments>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!846.entry#comment</comments><guid isPermaLink="true">http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!846.entry</guid><pubDate>Thu, 14 Dec 2006 16:33:43 GMT</pubDate><slash:comments>5</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://JefTek.spaces.live.com/blog/cns!F2042DC08607EF2!846/comments/feed.rss</wfw:commentRss><wfw:comment>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!846.entry#comment</wfw:comment><dcterms:modified>2008-04-06T18:10:06Z</dcterms:modified></item><item><title>ILM/MIIS: FlowRuleName naming conventions</title><link>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!680.entry</link><description>&lt;br&gt;&lt;br&gt;
&lt;p&gt;&lt;a href="http://jeftek.com/iam/ilm/miis-flowrulename-naming-conventions/"&gt;ILM/MIIS: FlowRuleName naming conventions&lt;/a&gt; has moved to the new location on &lt;a href="http://jeftek.com/"&gt;JefTek.com&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1089944622624440050&amp;page=RSS%3a+ILM%2fMIIS%3a+FlowRuleName+naming+conventions&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=jeftek.spaces.live.com&amp;amp;GT1=JefTek"&gt;</description><comments>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!680.entry#comment</comments><guid isPermaLink="true">http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!680.entry</guid><pubDate>Sun, 10 Sep 2006 17:01:36 GMT</pubDate><slash:comments>11</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://JefTek.spaces.live.com/blog/cns!F2042DC08607EF2!680/comments/feed.rss</wfw:commentRss><wfw:comment>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!680.entry#comment</wfw:comment><dcterms:modified>2008-04-06T18:37:37Z</dcterms:modified></item><item><title>MIIS: MapAttributeForJoin Video and format example</title><link>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!675.entry</link><description>&lt;p&gt;I was catching up on my RSS feeds today, and I stumbled upon &lt;a href="http://blogs.msdn.com/alextch/default.aspx"&gt;Alex Tcherniakhovski's&lt;/a&gt; video on &lt;a href="http://blogs.msdn.com/alextch/archive/2006/07/14/mapAttribForJoin.aspx"&gt;Very practical example of using MapAttributesForJoin Method&lt;/a&gt;.  It's an excellent video tutorial on using the MAFJ function. &lt;p&gt;In summary it goes into converting the data type's to a common data type to map them for a join rule. &lt;p&gt;I tend to use MAFJ quite heavily because I seem to deal with data systems that store the common data value in various formats. &lt;p&gt;I would say the most common one that I use, is the normalizing the format for storing the US-SSN identifier between the DS and the MV.   Since often you will not be able to have the DataSource be formatted to what you have in the MV, this is a simple way to control that via extensions.&lt;pre&gt;&lt;span style="color:#0000ff"&gt;case&lt;/span&gt; &amp;quot;&lt;span style="color:#8b0000"&gt;MAFJ_SSN&lt;/span&gt;&amp;quot;:
{
	&lt;span style="color:#008000"&gt;// MVentry.SSN = &amp;quot;123456789&amp;quot;&lt;/span&gt;
	&lt;span style="color:#008000"&gt;// CSentry.SSN = &amp;quot;123-45-6789&amp;quot;&lt;/span&gt;
	&lt;span style="color:#008000"&gt;// In order to make them &amp;quot;match&amp;quot; for join they need to&lt;/span&gt;
	&lt;span style="color:#008000"&gt;// be equalized in format&lt;/span&gt;

	&lt;span style="color:#008000"&gt;// using RegularExpressions replace the - in the SSN string&lt;/span&gt;
	&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; mySSN = regex.Replace(csentry[&amp;quot;&lt;span style="color:#8b0000"&gt;SSN&lt;/span&gt;&amp;quot;].V&lt;span style="color:#0000ff"&gt;alue&lt;/span&gt;,&amp;quot;&lt;span style="color:#8b0000"&gt;-&lt;/span&gt;&amp;quot;,&amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;).toString();	
		
	&lt;span style="color:#008000"&gt;// mySSN = &amp;quot;123456789&amp;quot;&lt;/span&gt;

	&lt;span style="color:#008000"&gt;// Add the formatted string to the Values collection to&lt;/span&gt;
	&lt;span style="color:#008000"&gt;// be compared for JOIN.&lt;/span&gt;

	values.Add(mySSN);
}
&lt;span style="color:#0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;It should be noted that &amp;quot;values&amp;quot; is a ValueCollection so you could fill it with multiple formats of the value you wish to join upon.  I suppose this could be used to map a persons name who might be &amp;quot;Joe&amp;quot;, &amp;quot;Joey&amp;quot;, &amp;quot;Josef&amp;quot;, or &amp;quot;Joseph&amp;quot;, so that it correctly joins the &amp;quot;Joe Smith&amp;quot; in the metaverse.  I could see where you would want to join on a common name vs legal format of a name in some systems, but I have never had reason to do this myself.&lt;br&gt;&lt;pre&gt;&lt;p&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre&gt;tags: &lt;a href="http://technorati.com/tag/Microsoft+Identity+Integration+Server" rel=tag&gt;Microsoft+Identity+Integration+Server&lt;/a&gt;, &lt;a href="http://technorati.com/tag/MIIS" rel=tag&gt;MIIS&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Extension" rel=tag&gt;Extension&lt;/a&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1089944622624440050&amp;page=RSS%3a+MIIS%3a+MapAttributeForJoin+Video+and+format+example&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=jeftek.spaces.live.com&amp;amp;GT1=JefTek"&gt;</description><comments>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!675.entry#comment</comments><guid isPermaLink="true">http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!675.entry</guid><pubDate>Sun, 10 Sep 2006 16:21:28 GMT</pubDate><slash:comments>12</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://JefTek.spaces.live.com/blog/cns!F2042DC08607EF2!675/comments/feed.rss</wfw:commentRss><wfw:comment>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!675.entry#comment</wfw:comment><dcterms:modified>2006-09-10T17:13:05Z</dcterms:modified></item><item><title>ILM/MIIS: Import Resolution rules for multiple CS AD objects to a single MV object: Tagging</title><link>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!672.entry</link><description>&lt;br&gt;&lt;br&gt;
&lt;p&gt;&lt;a href="http://jeftek.com/iam/ilm/miis-import-resolution-rules-for-multiple-cs-ad-objects-to-a-single-mv-object-tagging/"&gt;ILM/MIIS: Import Resolution rules for multiple CS AD objects to a single MV object: Tagging&lt;/a&gt; has moved to my new blog at &lt;a href="http://jeftek.com/"&gt;JefTek.com&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1089944622624440050&amp;page=RSS%3a+ILM%2fMIIS%3a+Import+Resolution+rules+for+multiple+CS+AD+objects+to+a+single+MV+object%3a+Tagging&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=jeftek.spaces.live.com&amp;amp;GT1=JefTek"&gt;</description><comments>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!672.entry#comment</comments><guid isPermaLink="true">http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!672.entry</guid><pubDate>Fri, 08 Sep 2006 06:09:05 GMT</pubDate><slash:comments>5</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://JefTek.spaces.live.com/blog/cns!F2042DC08607EF2!672/comments/feed.rss</wfw:commentRss><wfw:comment>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!672.entry#comment</wfw:comment><dcterms:modified>2008-04-06T18:39:57Z</dcterms:modified></item><item><title>MIIS: Provisioning New Object into a DB Management Agent</title><link>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!635.entry</link><description>&lt;p&gt;I saw the question of how to provision a new object into a SQL MA using MIIS, so I thought I'd just post a simple method I use often.
&lt;p&gt;It's called ProvDB and can be added to the Metaverse Extension to be called based upon business logic.
&lt;p&gt;I have a standard Correlation ID (CID) that ties data objects together, so this is what is used to provision the object into the DataSource.  Once the Object is provisioned with this CID, the MA join logic will handle all other data flows.  This makes its simplistic since the CID is the anchor for the MA as well.
&lt;p&gt;Here is the standard method of ProvDB:&lt;pre&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ProvDB(MVEntry mventry, &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; DBMA)
        {
            ConnectedMA ManagementAgent;    &lt;span style="color:#008000"&gt;// Management agent object&lt;/span&gt;
            &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Connectors;                 &lt;span style="color:#008000"&gt;// Management agent connectors&lt;/span&gt;
            CSEntry csentry;                &lt;span style="color:#008000"&gt;// Connector space entry objectt agent connectors&lt;/span&gt;
            &lt;/pre&gt;&lt;pre&gt;            &lt;span style="color:#008000"&gt;// Get the management agent connectors&lt;/span&gt;

            ManagementAgent = mventry.ConnectedMAs[DBMA];

            &lt;span style="color:#008000"&gt;// Get the management agent connectors.&lt;/span&gt;
            Connectors = ManagementAgent.Connectors.Count;

            &lt;span style="color:#008000"&gt;// determine if this object may have a connector with this MA already.&lt;/span&gt;
            &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (Connectors == 0)
            {


                &lt;span style="color:#0000ff"&gt;try&lt;/span&gt;
                {

                   
                    csentry = ManagementAgent.Connectors.StartNewConnector(&amp;quot;&lt;span style="color:#8b0000"&gt;Person&lt;/span&gt;&amp;quot;);
                    csentry[&amp;quot;&lt;span style="color:#8b0000"&gt;CID&lt;/span&gt;&amp;quot;].Value = mventry[&amp;quot;&lt;span style="color:#8b0000"&gt;CID&lt;/span&gt;&amp;quot;].Value;
                    
                    csentry.CommitNewConnector();

                }
                &lt;span style="color:#0000ff"&gt;catch&lt;/span&gt; (ObjectAlreadyExistsException exAlreadyExists)
                {
                    &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; ExceptionMessage = &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;;
                    &lt;/pre&gt;&lt;pre&gt;		&lt;span style="color:#008000"&gt;// throw exception if you want to alert on duplicates, or just catch to let join rules resolve&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;		ExceptionMessage = &amp;quot;&lt;span style="color:#8b0000"&gt;Duplicate User - in &lt;/span&gt;&amp;quot; + DBMA;
                  &lt;span style="color:#0000ff"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; UnexpectedDataException(ExceptionMessage);


                }

                &lt;span style="color:#0000ff"&gt;catch&lt;/span&gt; (NullReferenceException exNull)
                {
                    &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; ExceptionMessage = &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;;
                    ExceptionMessage = &amp;quot;&lt;span style="color:#8b0000"&gt;Null Reference Exception in &lt;/span&gt;&amp;quot; + DBMA;
                    &lt;span style="color:#0000ff"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; UnexpectedDataException(ExceptionMessage);

                }

            }
            &lt;span style="color:#0000ff"&gt;else&lt;/span&gt;
            {
                &lt;span style="color:#008000"&gt;// Do nothing.  Object may already have a connection.&lt;/span&gt;
            }
        }&lt;/pre&gt;
&lt;p&gt;So you could use a simple routine to determine if the object should be provisioned into the correct MA-CS.&lt;pre&gt;If (mventry[&amp;quot;&lt;span style="color:#8b0000"&gt;employeeType&lt;/span&gt;&amp;quot;).IsPresent &amp;amp;&amp;amp; mventry[&amp;quot;&lt;span style="color:#8b0000"&gt;employeeType&lt;/span&gt;&amp;quot;].Value == &amp;quot;&lt;span style="color:#8b0000"&gt;CONTRACTOR&lt;/span&gt;&amp;quot;) 
{ 
	&lt;span style="color:#008000"&gt;// Provision into Contractor system&lt;/span&gt;
	ProvDB(mventry, &amp;quot;&lt;span style="color:#8b0000"&gt;ContractorDB&lt;/span&gt;&amp;quot;)
}&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;So you can reuse this to provision objects based on the CID into different DBs since the provision ADD is handled by the MA interface.
&lt;p&gt; 
&lt;p&gt;[Edit: I had left in code referencing DN concatination for a DB.   I removed this, since it is confusing.  It was from an assumption I had that later turned out to be wrong. ]&lt;/blockquote&gt;
&lt;p&gt; tags: &lt;a href="http://technorati.com/tag/MIIS" rel=tag&gt;MIIS&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Microsoft+Identity+Integration+Server" rel=tag&gt;Microsoft+Identity+Integration+Server&lt;/a&gt;, &lt;a href="http://technorati.com/tag/SQL" rel=tag&gt;SQL&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1089944622624440050&amp;page=RSS%3a+MIIS%3a+Provisioning+New+Object+into+a+DB+Management+Agent&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=jeftek.spaces.live.com&amp;amp;GT1=JefTek"&gt;</description><comments>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!635.entry#comment</comments><guid isPermaLink="true">http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!635.entry</guid><pubDate>Thu, 17 Aug 2006 23:09:46 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://JefTek.spaces.live.com/blog/cns!F2042DC08607EF2!635/comments/feed.rss</wfw:commentRss><wfw:comment>http://JefTek.spaces.live.com/Blog/cns!F2042DC08607EF2!635.entry#comment</wfw:comment><dcterms:modified>2007-01-03T23:47:52Z</dcterms:modified></item></channel></rss>