<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Mike Kostersitz's WebLog</title><subtitle type="html">Provisioning Microsoft Products for Service Providers and other stuff</subtitle><id>http://blogs.msdn.com/mkostersitz/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/mkostersitz/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2004-10-28T21:37:00Z</updated><entry><title>Hotfix for HMC 4.0 and HMC 4.5 released to avoid that Mail gets sent to unintended mail recipients because legacyExchangeDN strings get re-used in the system</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2009/10/28/hotfix-for-hmc-4-0-and-hmc-4-5-released-to-avoid-that-mail-gets-sent-to-unintended-mail-recipients-because-legacyexchangedn-strings-get-re-used-in-the-system.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2009/10/28/hotfix-for-hmc-4-0-and-hmc-4-5-released-to-avoid-that-mail-gets-sent-to-unintended-mail-recipients-because-legacyexchangedn-strings-get-re-used-in-the-system.aspx</id><published>2009-10-29T06:38:47Z</published><updated>2009-10-29T06:38:47Z</updated><content type="html">This is a short note that the HMC product group has released a critical hotfix for both HMC 4.0 and HMC 4.5. The issue is as follows HMC 4.x uses the Exchange 2007 default mechanism to stamp the legacyExchangeDN. As a result, it uses just the alias to stamp it. Hence, there are possibilities where alias get re-used when one has been deleted. When the legacyExchangeDN has been re-used, replying some of the old mail or sometimes, selecting the recipient through the Outlook nickname cache will result...(&lt;a href="http://blogs.msdn.com/mkostersitz/archive/2009/10/28/hotfix-for-hmc-4-0-and-hmc-4-5-released-to-avoid-that-mail-gets-sent-to-unintended-mail-recipients-because-legacyexchangedn-strings-get-re-used-in-the-system.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9914543" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>How to Call a Namespace procedure without using ProvTest.Exe</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2009/06/17/how-to-call-a-namespace-procedure-without-using-provtest-exe.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2009/06/17/how-to-call-a-namespace-procedure-without-using-provtest-exe.aspx</id><published>2009-06-18T01:45:00Z</published><updated>2009-06-18T01:45:00Z</updated><content type="html">&lt;P&gt;Well, here is another one of my "How To" topics. &lt;/P&gt;
&lt;P&gt;I get asked quite a bit: "How do we interact with MPS so we do not have to use Notepad and Provtest.exe." &lt;/P&gt;
&lt;P&gt;So I would call this principle "Calling MPS programatically". &lt;/P&gt;
&lt;P&gt;OK. So the good news first:&lt;BR&gt;The MPS Client is a good old fashioned COM Object with a couple of interfaces we can use from almost any programming language. If you keep a basic rule in mind things should turn out pretty well &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;J&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Rule #1: Do Not Break MPS Loadbalancing. &lt;BR&gt;&lt;/STRONG&gt;Load balancing in MPS is handled by the MPS Client. &lt;BR&gt;When you submit a request to the client, the client will connect to the MPFConfig Database and ask for a list of available MPS Engine servers and then start submitting the requests to each engine in the list in a round robin fashion. So imagine your code does something like this &lt;BR&gt;&lt;SPAN style="COLOR: red; FONT-SIZE: 9pt"&gt;Disclaimer: Pseudo code ahead! For illustration purposes only. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;For i=1 to 10 &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myResult= submitMPSRequest strXML(i),strNamespace,strProcedure &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;next &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;function submit MPSRequest(string XMLRequest, strNSName, strProcName) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myMPSClient = CreateObject("MPSClientCOMObject") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return myMPSClient.SubmitTrustedRequest(strXML,strNSName,strProcName) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;end function &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;So what will happen when we run this? &lt;/P&gt;
&lt;P&gt;Correct: Every time a request is submitted a new MPSClient Object is created and that instance will always submit the request to the first engine in the list of results. So no load balancing will occur.&lt;BR&gt;So the correct way to structure this would be &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: red; FONT-SIZE: 10pt"&gt;Disclaimer: Pseudo code ahead! For illustration purposes only. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;Global myMPSClient = CreateObject("MPSClientCOMObject") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;For i=1 to 10 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;myResult= submitMPSRequest strXML(i),strNamespace,strProcedure &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;next &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;function submit MPSRequest(string XMLRequest, strNSName, strProcName) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;return myMPSClient.SubmitTrustedRequest(strXML,strNSName,strProcName) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;end function &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;So what will happen when we run this code? &lt;/P&gt;
&lt;P&gt;Every time a request is submitted the same MPSClient Object is used and since it is only instantiated once it will do the correct load balancing between all available engines. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;OK now off to real code &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Let's say we want to create a bunch of organizations in HMC for the sake of this sample. The first thing we need is a template XML file we can use to fill in our properties before we submit it to MPS. &lt;/P&gt;
&lt;P&gt;Sample CreateOrganization.xml file ( I used one from the samples folder on the MPS Engine and cleaned it up a bit ) &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;lt;?&lt;SPAN style="COLOR: #a31515"&gt;xml&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;version&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;encoding&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;utf-8&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; ?&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;request&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;data&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;name&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;policyName&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;container&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;description&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;preferredDomainController&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;SPAN style="COLOR: #a31515"&gt;data&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;procedure&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;execute&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;namespace&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Managed Active Directory&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;procedure&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;CreateOrganization&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;before&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;source&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;data&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;destination&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;executeData&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;mode&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;merge&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style="COLOR: #a31515"&gt;after&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;source&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;executeData&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;sourcePath&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;org&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;destination&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;data&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;SPAN style="COLOR: red"&gt;mode&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;insert&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;SPAN style="COLOR: #a31515"&gt;execute&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;SPAN style="COLOR: #a31515"&gt;procedure&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 10pt"&gt;&amp;lt;/&lt;SPAN style="COLOR: #a31515"&gt;request&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Since VBScript is so old school I will keep this one short and not spend much time with it. &lt;/P&gt;
&lt;P&gt;--------------- Script starts here -------- &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;'INSTANTIATE THE MPF CLIENT OBJECT &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;Set objMPFClient = CreateObject("Provisioning.ProvEngineClient") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;For i=1 to 10&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wscript.echo "Created OU: " &amp;amp; CreateOrganization("MyTestOrg" &amp;amp; i, "Customer", "Test Org", "OU=ConsolidatedMessenger,OU=Hosting,DC=Fabrikam,DC=Com") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;next &lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;Function CreateOrganization(xi_OrgName, xi_PolicyType,xi_Description, xi_strContPath) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;'LOAD THE XML OBJECT &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;Set objXML = CreateObject("MSXML2.DOMDocument") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&lt;BR&gt;'LOAD XML TEMPLATE&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strXmlFile = "CreateOrganization.xml"&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objXml.Load (strXmlFile)&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'SET THE ORG NAME &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;Set objOrg = objXml.selectSingleNode("/request/data/name") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;objOrg.Text = CStr(xi_OrgName) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'SET THE POLICY TYPE &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;Set objOrg = objXml.selectSingleNode("//*/data/policyName") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;objOrg.Text = CStr(xi_PolicyType) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;'SET THE CONTAINER &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;Set objOrg = objXml.selectSingleNode("//*/data/container") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;objOrg.Text = xi_strContPath &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'SET THE DESCRIPTION &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;Set objOrg = objXml.selectSingleNode("//*/data/description") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;objOrg.Text = CStr(xi_Description) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'SET THE PREFERRED DOMAIN CONTROLLER &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;Set objOrg = objXml.selectSingleNode("//*/data/preferredDomainController") &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;objOrg.Text = CStr(prefDC) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'SUBMIT THE REQUEST&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strXMLResponse = objMPFClient.SubmitRequest(objXML.xml, "Managed Active Directory", _&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"CreateOrganization")&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'GET LDAP PATH FROM RESPONSE&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objXml.LoadXML(strXMLResponse)&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set objOrg = objXml.selectSingleNode("//*/data/org") &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;CreateOrganization = objOrg.getAttribute("path") &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 9pt"&gt;End Function&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 7pt"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Now to something more up to date – Windows Powershell&lt;BR&gt;Note that we need to use a MSXML2.DOMDocument instead of a System.XML Object this is because MPS does not "understand" System.XML Objects., &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: purple; FONT-SIZE: 8pt"&gt;$mpsclient&lt;SPAN style="COLOR: black"&gt;=&lt;SPAN style="COLOR: cadetblue"&gt;&lt;STRONG&gt;New-Object&lt;/STRONG&gt;&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: cadetblue"&gt;&lt;EM&gt;-ComObject&lt;/EM&gt;&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: maroon"&gt;"Provisioning.ProvEngineClient"&lt;SPAN style="COLOR: black"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 8pt"&gt;function&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: cadetblue"&gt;CreateOrganization&lt;SPAN style="COLOR: black"&gt;([&lt;SPAN style="COLOR: teal"&gt;string&lt;SPAN style="COLOR: black"&gt;]&lt;SPAN style="COLOR: purple"&gt;$strOrgName&lt;SPAN style="COLOR: black"&gt;,[&lt;SPAN style="COLOR: teal"&gt;string&lt;SPAN style="COLOR: black"&gt;]&lt;SPAN style="COLOR: purple"&gt;$strPolicyName&lt;SPAN style="COLOR: black"&gt;,[&lt;SPAN style="COLOR: teal"&gt;string&lt;SPAN style="COLOR: black"&gt;]&lt;SPAN style="COLOR: purple"&gt;$strDescription&lt;SPAN style="COLOR: black"&gt;,[&lt;SPAN style="COLOR: teal"&gt;string&lt;SPAN style="COLOR: black"&gt;]&lt;SPAN style="COLOR: purple"&gt;$strPath&lt;SPAN style="COLOR: black"&gt;,[&lt;SPAN style="COLOR: teal"&gt;string&lt;SPAN style="COLOR: black"&gt;]&lt;SPAN style="COLOR: purple"&gt;$strDC&lt;SPAN style="COLOR: black"&gt;) &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;{&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: purple"&gt;$xmlRequest&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: red"&gt;=&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: cadetblue"&gt;&lt;STRONG&gt;New-Object&lt;/STRONG&gt;&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: cadetblue"&gt;&lt;EM&gt;-ComObject&lt;/EM&gt;&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: maroon"&gt;"MSXML2.DOMDocument"&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: purple"&gt;$xmlRequest&lt;SPAN style="COLOR: black"&gt;.load(&lt;SPAN style="COLOR: maroon"&gt;"CreateOrganization.xml"&lt;SPAN style="COLOR: black"&gt;)&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: purple"&gt;$xmlRequest&lt;SPAN style="COLOR: black"&gt;.SelectSingleNode(&lt;SPAN style="COLOR: maroon"&gt;"//*/data/name"&lt;SPAN style="COLOR: black"&gt;).Text&lt;SPAN style="COLOR: red"&gt;=&lt;SPAN style="COLOR: purple"&gt;$strOrgName&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: purple"&gt;$xmlRequest&lt;SPAN style="COLOR: black"&gt;.SelectSingleNode(&lt;SPAN style="COLOR: maroon"&gt;"//*/data/policyName"&lt;SPAN style="COLOR: black"&gt;).Text&lt;SPAN style="COLOR: red"&gt;=&lt;SPAN style="COLOR: purple"&gt;$strPolicyName&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: purple"&gt;$xmlRequest&lt;SPAN style="COLOR: black"&gt;.SelectSingleNode(&lt;SPAN style="COLOR: maroon"&gt;"//*/data/container"&lt;SPAN style="COLOR: black"&gt;).Text&lt;SPAN style="COLOR: red"&gt;=&lt;SPAN style="COLOR: purple"&gt;$strPath&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: purple"&gt;$xmlRequest&lt;SPAN style="COLOR: black"&gt;.SelectSingleNode(&lt;SPAN style="COLOR: maroon"&gt;"//*/data/description"&lt;SPAN style="COLOR: black"&gt;).Text&lt;SPAN style="COLOR: red"&gt;=&lt;SPAN style="COLOR: purple"&gt;$strDescription&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: purple"&gt;$xmlRequest&lt;SPAN style="COLOR: black"&gt;.SelectSingleNode(&lt;SPAN style="COLOR: maroon"&gt;"//*/data/preferredDomainController"&lt;SPAN style="COLOR: black"&gt;).Text&lt;SPAN style="COLOR: red"&gt;=&lt;SPAN style="COLOR: purple"&gt;$strDC&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;return&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: purple"&gt;$mpsclient&lt;SPAN style="COLOR: black"&gt;.SubmitRequest(&lt;SPAN style="COLOR: purple"&gt;$xmlRequest&lt;SPAN style="COLOR: black"&gt;.xml,&lt;SPAN style="COLOR: maroon"&gt;"Managed Active Directory"&lt;SPAN style="COLOR: black"&gt;,&lt;SPAN style="COLOR: maroon"&gt;"CreateOrganization"&lt;SPAN style="COLOR: black"&gt;) &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 8pt"&gt;for&lt;SPAN style="COLOR: black"&gt;(&lt;SPAN style="COLOR: purple"&gt;$i&lt;SPAN style="COLOR: red"&gt;=&lt;SPAN style="COLOR: black"&gt;1;&lt;SPAN style="COLOR: purple"&gt;$i&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: red"&gt;-le&lt;SPAN style="COLOR: black"&gt; 10;&lt;SPAN style="COLOR: purple"&gt;$i&lt;SPAN style="COLOR: black"&gt;++) &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;{&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: cadetblue"&gt;CreateOrganization&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: maroon"&gt;"MyTestOrg_$i"&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: maroon"&gt;"customer"&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: maroon"&gt;"Test Org"&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: maroon"&gt;"LDAP://OU=ConsolidatedMessenger,OU=Hosting,DC=Fabrikam,DC=Com"&lt;SPAN style="COLOR: black"&gt; &lt;SPAN style="COLOR: maroon"&gt;"AD01"&lt;SPAN style="COLOR: black"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 8pt"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Soon to follow something even more interesting – Calling the MPS WebServices (HMC 4.5) from C# and&lt;BR&gt;Calling the MPS Client from C# and VB.NET &lt;/P&gt;
&lt;P&gt;Have fun coding &lt;/P&gt;
&lt;P&gt;Till next time &lt;/P&gt;
&lt;P&gt;Mike &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9770891" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>MPS and concurrency</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2009/05/27/mps-and-concurrency.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2009/05/27/mps-and-concurrency.aspx</id><published>2009-05-27T11:49:00Z</published><updated>2009-05-27T11:49:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;One question that comes up quite often is whether HMC Provisioning is "thread safe" i.e.. does it support multiple simultaneous provisioning actions. The answer to this question can be complicated, the simple answer&amp;nbsp;is "yes, but there are caveats." &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;To understand the caveats better we have to understand the basic architecture of HMC Provisioning. For this discussion we will break the architecture into 3 blocks.&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style="BORDER-COLLAPSE: collapse" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 146px"&gt;
&lt;COL style="WIDTH: 485px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR style="HEIGHT: 20px"&gt;
&lt;TD style="BORDER-BOTTOM: #c4c4c4 0.75pt solid; BORDER-LEFT: #c4c4c4 0.75pt solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #c4c4c4 0.75pt solid; BORDER-RIGHT: #c4c4c4 0.75pt solid; PADDING-TOP: 2px" colSpan=2&gt;
&lt;P&gt;&lt;STRONG&gt;HMC and MPF Namespaces&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #c4c4c4 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #c4c4c4 0.75pt solid; BORDER-RIGHT: #c4c4c4 0.75pt solid; PADDING-TOP: 2px"&gt;
&lt;P&gt;Layered business/service logic defined as XML workflow descriptions.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 41px"&gt;
&lt;TD style="BORDER-BOTTOM: #c4c4c4 0.75pt solid; BORDER-LEFT: #c4c4c4 0.75pt solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: medium none; BORDER-RIGHT: #c4c4c4 0.75pt solid; PADDING-TOP: 2px" colSpan=2&gt;
&lt;P&gt;&lt;STRONG&gt;MPF Engine&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #c4c4c4 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: medium none; BORDER-RIGHT: #c4c4c4 0.75pt solid; PADDING-TOP: 2px"&gt;
&lt;P&gt;COM service that executes requests based on workflows defined in the namespaces. This is the component that provides transaction based compensation/rollback support.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 23px"&gt;
&lt;TD style="BORDER-BOTTOM: #c4c4c4 0.75pt solid; BORDER-LEFT: #c4c4c4 0.75pt solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: medium none; BORDER-RIGHT: #c4c4c4 0.75pt solid; PADDING-TOP: 2px" colSpan=2&gt;
&lt;P&gt;&lt;STRONG&gt;Providers and Underlying Product APIs&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #c4c4c4 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: medium none; BORDER-RIGHT: #c4c4c4 0.75pt solid; PADDING-TOP: 2px"&gt;
&lt;P&gt;DLLs that run under the context of the MPF Engine, these DLLs wrap the Product specific APIs that are used to perform provisioning actions. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;Now to understand the impact each of these&amp;nbsp;components can have on the HMC Concurrency story we will start from the bottom and work our way up the stack. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;&lt;STRONG&gt;Providers and Underlying Product&amp;nbsp;APIs&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;The core provisioning capabilities of HMC are generally defined at, and limited by the underlying Product APIs, and specifically the way in which the Provider DLLs expose the product APIs. This is particularly true when it comes to the concurrency characteristics of HMC. The easiest way to explain this is to look at two core Providers and their concurrency characteristics. &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Times New Roman; FONT-SIZE: 12pt"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;&lt;STRONG&gt;SQL Provider:&lt;/STRONG&gt; This provider supports execution of SQL Stored Procedures and ad-hoc requests within the context of a DTC transaction that can be bound to executing thread inside of the MPF Engine (more on MPF Engine Process Controller threads below). This allows for transaction&amp;nbsp;scoping all the way down to the underlying System in this case SQL, leaving the responsibility for compensation in the case of a failure to DTC and SQL. This is a very powerful feature of the SQL Provider though one must consider that this also implies that any locks on a table or row in SQL are scoped to the entirety of the transaction. This must be taken into consideration when designing named procedures for Namespaces which orchestrate multiple SQL Provider requests. The SQL Provider is used mostly by the ManagedPlans Namespace for almost every single Plan related operation &lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;&lt;STRONG&gt;Active Directory Provider: &lt;/STRONG&gt;This provider uses standard directory services interfaces, so while the API exposed by this provider is fully thread safe there is no transactional scoping beyond the MPF Engine. Therefore, actions taken on one thread can directly impact other threads, ie. if thread A deletes an object before&amp;nbsp;thread B&amp;nbsp;tries to retrieve it, thread B will be impacted by the change made by&amp;nbsp;thread A. This also must be taken into account when designing highly concurrent systems particularly when dealing with procedures that act on global, or organization wide objects. &lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;These kinds of variations in concurrency characteristics exist across most of the MPF providers, though the SQL provider is unique in that it is the only provider that supports transactional scoping all the way down to the underlying system. It is&amp;nbsp;generally these variations that result in&amp;nbsp;currency related failures&amp;nbsp;within in HMC. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;&lt;STRONG&gt;MPF Engine&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;The MPF Engine was actually designed for high levels of concurrency. Each incoming request is processed on a separate "process controller" thread. Each process controller thread is fully isolated from other process controllers within the context of the MPF engine.&amp;nbsp;&amp;nbsp;Each process controller thread is also an MPF transaction; all actions performed within the context of a transaction are persisted and if a failure occurs, these actions will be rolled back. So while this component in and of itself enables high concurrency request processing, as a developer you must take into account that other components in the system specifically the other two blocks in the architecture Providers and&amp;nbsp;Underlying Product APIs (discussed above), and HMC and MPF namespaces (discussed below) have a significant impact on the concurrency behavior of the overall system. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;&lt;STRONG&gt;HMC and MPF Namespaces&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;This is where the majority of the business or service logic is defined. Namespace logic is defined as multiple layers of&amp;nbsp;named procedures that either call other named procedures or&amp;nbsp;execute&amp;nbsp;provider methods. The layering and orchestration capabilities of MPF are extensive and&amp;nbsp;very powerful.&amp;nbsp;Unfortunately, this&amp;nbsp;is also the root&amp;nbsp;of almost all concurrency related failures in HMC, some are easily avoided others require careful design consideration or in some cases external throttling and/or retry mechanisms.&amp;nbsp;The following are&amp;nbsp;some high level examples&amp;nbsp;of concurrency related failures in HMC and MPF&amp;nbsp;Namespaces. &lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style="WIDTH: 1139px; BORDER-COLLAPSE: collapse; HEIGHT: 389px" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 631px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM: #c4c4c4 0.75pt solid; BORDER-LEFT: #c4c4c4 0.75pt solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #c4c4c4 0.75pt solid; BORDER-RIGHT: #c4c4c4 0.75pt solid; PADDING-TOP: 2px"&gt;
&lt;P&gt;&lt;STRONG&gt;MPF&amp;nbsp;Requests that operate&amp;nbsp;on&amp;nbsp;global, or&amp;nbsp;organization&amp;nbsp;wide objects can cause failures under high concurrency &lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;While this may seem fairly straight forward there are some corner scenarios where this can cause concurrency related problems. &lt;BR&gt;Let's take for example the scenario where a SharePoint site is being created at the exact same time as a separate SharePoint site belonging to the same organization is being deleted. One might not expect these two requests to have any impact on each other however both rely on the organization wide SharePointSites service pointer for tracking purposes. If the request to delete a SharePoint site removes one of the site pointers at the same time that request to create a SharePoint site is enumerating the list of SharePoint sites the request to create a SharePoint site might fail because the Servicepointer is overwritten by the delete operation. This issue was alluded to above in the discussion about the Active Directory Provider, it is important to note though that any provider that interacts with Active Directory or other similar systems, Resource Manager has similar characteristics, is susceptible to this kind of failure. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM: #c4c4c4 0.75pt solid; BORDER-LEFT: #c4c4c4 0.75pt solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: medium none; BORDER-RIGHT: #c4c4c4 0.75pt solid; PADDING-TOP: 2px"&gt;
&lt;P&gt;&lt;STRONG&gt;MPF Requests that bundle multiple "locking" SQL Provider requests&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This issue typically occurs when an MPF Named Procedure bundles two or more HMC Named Procedures, from the Hosted Namespace layer, that write to or read from the&amp;nbsp;PlanManager Database. The root of this issue is that the Managed Plans Namesapce API utilizes the SQL Provider to manipulate the PlanManager Database. Since the SQL Provider establishes and holds locks for the duration of a transaction, transactions or requests&amp;nbsp;that bundle multiple Managed Plans named procedures introduce an increased risk of SQL Deadlocks. SQL Deadlocks result in one or more of the MPF Requests failing. &lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Steps have been taken within the PlanManager database to try and prevent these deadlock scenarios under the most common scenarios where a customer might want to bundle requests for efficiency. However there are still some scenarios where bundling of requests will result in this failure. For example a transaction that attempts to add or modify a&amp;nbsp;customer plan then subsequently assign the plan to a customer will fail under concurrency.&lt;BR&gt;As a general rule one must take into account the cost of SQL transactions when designing highly orchestrated MPF named procedures, this goes along with considering the cost of rollback when bundling large numbers of procedure calls into a transaction. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;OK now on to how do you design a custom namespace or process to facilitate successful bulk import or creation of organizations and users/mailboxes &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;As a general rule the HMC Provisioning System was designed to operate under high levels of concurrency. However, in a high scale, high volume&amp;nbsp;HMC environment it&amp;nbsp;may not be possible to avoid&amp;nbsp;concurrency related issues completely.&amp;nbsp;There are cases where a simple retry is the best solution to the problem. There are also cases however, where&amp;nbsp;there are known failure scenarios and in these cases we strongly suggest that you take steps or put mechanisms in place to avoid concurrency, The most common of these cases&amp;nbsp;are listed below &lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-LEFT: 72pt"&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;Bulk creation of Mailboxes within an organization. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;It is best to avoid creation of a user, the mailbox and other mailbox features like UM in the same transaction. It is recommended to avoid these because of AD replication induced delays and PlanManager related concurrency failures. &lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;Bulk creation and/or deletion of SharePoint sites within an organization. &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;Avoid deleting and creating the same site in the same transaction. Split the calls apart and put logic into the calling code to retry certain failed operations. &lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;Bulk enablement of OCS users within an organization. &lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;Avoid creating a user and immediately OCS enabling it. OCS Admin API does not have a preferredDomainController concept thus AD replication delay has to be taken into account. &lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;Requests that bundle the creation/modification of a plan with assignment of a plan to an organization and or a user in the same organization &lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;In general it is OK to bulk load multiple&amp;nbsp;organizations in parallel however you should avoid the bulk provisioning of objects within a single&amp;nbsp;organization in parallel.&amp;nbsp;In other words&amp;nbsp;requests to&amp;nbsp;bulk load objects within a single organization boundary should be serialized. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;&lt;STRONG&gt;Finally &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #333333; FONT-SIZE: 8pt"&gt;While this covers some of the most common scenarios we see in support there are many others out there I am sure. Do you have a scenario not covered above which you are not sure if it is impacted by this discussion. Post a comment and I will be happy to expand the discussion&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Until next time (I promise it will not be 2 ½ years) &lt;/P&gt;
&lt;P&gt;Mike &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9644050" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>Finally an update</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2009/05/27/finally-an-update.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2009/05/27/finally-an-update.aspx</id><published>2009-05-27T11:14:00Z</published><updated>2009-05-27T11:14:00Z</updated><content type="html">&lt;P&gt;Well it has been a while, well a long while since I posted here. &lt;/P&gt;
&lt;P&gt;It is a shame how simple things fall off the cliff between work and family. &lt;/P&gt;
&lt;P&gt;I do promise though to be better from now on. &lt;/P&gt;
&lt;P&gt;First a quick update on where I am at these days. &lt;/P&gt;
&lt;P&gt;My family and I moved back to Austria last year and I am no longer a Program Manager for MPS. &lt;/P&gt;
&lt;P&gt;Funny how things go I went full circle in Microsoft from Sales to Consulting to Development in Redmond and I ended up in Solution Support as a Principal Premier Field Engineer supporting what I designed over the last six years. &lt;/P&gt;
&lt;P&gt;But enough about me and more about the Microsoft Provisioning System right away.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9643953" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>MPS SDK 2.0 release to the Web on 10/17/2006</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2006/11/28/mps-sdk-2-0-release-to-the-web-on-10-17-2006.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2006/11/28/mps-sdk-2-0-release-to-the-web-on-10-17-2006.aspx</id><published>2006-11-29T09:14:00Z</published><updated>2006-11-29T09:14:00Z</updated><content type="html">OK OK I understand this is not the newest of news, and it seems it took us forever to get this out the door. But thanks to patient users, testers and last but not least our UA folks the MPS SDK 2.0 has finally been released to the web about a month and a half ago.&lt;br&gt;&lt;br&gt;So far for the good news now for the details on what is in it and how to use it.&lt;br&gt;&lt;br&gt;First there are three MSI Packages in the ZIP you get to download from this URL &lt;br&gt;&lt;br&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ce3fc537-86ae-4802-9a05-43e2a27a4b45&amp;amp;DisplayLang=en" title="MPS SDK 2.0 RTM Download" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ce3fc537-86ae-4802-9a05-43e2a27a4b45&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=ce3fc537-86ae-4802-9a05-43e2a27a4b45&amp;amp;DisplayLang=en&lt;br&gt;&lt;/a&gt;&lt;br&gt;There is also a README.htm file in the ZIP, which you definitely should read, it tells all about how to best prepare a MPS Development environment and how to install and configure the SDK Tools for Visual Studio 2005.&lt;br&gt;&lt;br&gt;The two MSI files in the Documents Folder are the Visual Studio integrated documentation sets for Visual Studio 2003 and Visual Studio 2005 respectively. Install the one that applies to your Visual Studio version only.&lt;br&gt;&lt;br&gt;The Microsoft Provisioning System SDK.MSI installs the Add In for the Visual Studio 2005 IDE, Sample code and Provider project templates for both Visual Studio Versions if present.&lt;br&gt;&lt;br&gt;I strongly recommend using Visual Studio 2005 to take full advantage of all SDK features and functionalities as well as .NET 2.0 for your provider code.&lt;br&gt;&lt;br&gt;One known issue we found recently is that for providers developed in with .NET 2.0 it is necessary to register the DLL in the GAC in addition to RegAsm.Exe /Codebase registration. This seems to be an effect of a .NET 2.0 fix deployed through Windows Update.&lt;br&gt;&lt;br&gt;What's in store for the next version?&lt;br&gt;&lt;br&gt;The next version will be released after the release of the Hosted Messaging and Collaboration 4.0 and Windows Based Hosting 4.5 Solutions. No fixed date has been set yet, once it has I will post it here.&lt;br&gt;&lt;br&gt;Currently we are considering the following updates:&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;API documentation for the Terminal Services Provider and Namespace shipped in the Windows Based Hosting for Applications 1.0 Solution&lt;/li&gt;&lt;li&gt;API Documentation updates for changes introduced in Hosted Messaging and Collaboration 4.0 and Windows Based Hosting 4.5 Solutions&lt;/li&gt;&lt;li&gt;MPS Profiler/TraceView integration into the Visual Studio 2005 IDE&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;My next post will talk a about the changes to the development model and architecture in the Hosted Messaging and Collaboration 4.0 solution.&lt;br&gt;&lt;br&gt;Stay tuned and keep the feedback coming&lt;br&gt;&lt;br&gt;Mike&lt;br&gt;&lt;br&gt;

&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1169803" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>MPS SDK Beta 1 released for download </title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2006/05/25/607296.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2006/05/25/607296.aspx</id><published>2006-05-25T21:26:00Z</published><updated>2006-05-25T21:26:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Arial&gt;OK we finally got the SDK out the door and it will be available for download within the next 24 - 48 hours at the Microsoft Download Center at this Link&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Arial&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;A href="http://download.microsoft.com/download/f/b/9/fb905eb4-d992-40e3-b0bc-cdb1996a1a10/Microsoft%20Provisioning%20System%20SDK-%20Beta%201.zip"&gt;&lt;FONT color=#0000ff&gt;MPS SDK Beta 1 Direct Download Link&lt;/FONT&gt;&lt;/A&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;After you download the SDK unzip the Package to a location on the Harddrive. You will find two documents and an installer (msi) package.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;You will have to have a MPS Development environment with Visual Studio 2005 set up and ready to go (check one of my other blog posts for how to get started on this)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;The rest should be self explanitory.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Let me know what you think and provide loads of feedback :-)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Mike&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=607296" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>MPS SDK Update</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2006/04/18/578506.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2006/04/18/578506.aspx</id><published>2006-04-18T23:14:00Z</published><updated>2006-04-18T23:14:00Z</updated><content type="html">&lt;P&gt;This is going to be a short one :-)&lt;/P&gt;
&lt;P&gt;The MPS SDK for Visual Studio 2005 is going to be in Beta by the end of next week. If you want to get a early preview of the SDK tools and Docs please drop me a short note. You will need a completed NDA on File with Microsoft! Please work with your main Microsoft Contact if you need one to be set up. I will not be able to set up NDAs myself.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;thanks&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Mike&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=578506" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>Developing a Provider for MPS Part 3: the SMTP Mail Sender Provider</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2006/03/28/developing-a-provider-for-mps-part-3-the-smtp-mail-sender-provider.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2006/03/28/developing-a-provider-for-mps-part-3-the-smtp-mail-sender-provider.aspx</id><published>2006-03-28T22:49:00Z</published><updated>2006-03-28T22:49:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face="Arial" color="#000000" size="2"&gt;Hello fellow coders. Here is part 3 of the how to develop a MPS Provider article.&lt;BR&gt;Today I am going to focus on writing a provider which actually does something relatively useful.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;The SMTPMailProvider (as I will call it from now on) will enable a MPS Named Procedure to send e-mail to a specified user.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;The Project will consist of 3 parts. &lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;The Provider&lt;/FONT&gt; 
&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;The Provider Namespace&lt;/FONT&gt; 
&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;A Namespace which will create a user, mailbox enable that user and then send e-mail to the user. (this will require some sort of Mail system. For our purposes I will use the POP3 Mail service shipping in Windows Server 2003)&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;OK here we go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;&lt;B&gt;Setting up the environment&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;You will need to use add/remove Windows Component Wizard on one of the servers in your development environment and add the "E-mail Services" Component.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT face="Arial" size="2"&gt;Part1: Writing the SMTPMailProvider&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;The SMTPMailProvider will use the System.Web.Mail Namespace to create and submit the Mail message it will have one public method called SendMail, the Method will take a couple of mandatory and a few optional parameters.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;Mandatory Properties&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;sendTo&lt;/FONT&gt; 
&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;mailFrom&lt;/FONT&gt; 
&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;subject&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;Optional Properties&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;messageText&lt;/FONT&gt; 
&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;attachementPath&lt;/FONT&gt; 
&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;smtpServerName&lt;/FONT&gt; 
&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="Arial" size="2"&gt;messageFormat&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;How do we implement it:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;Open Visual Studio 2003 and Create a new MPF Provider Project and Name it SMTPMailProvider&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;Add the System.Web.Mail Namespace to the references and insert &lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;using&lt;FONT size="2"&gt; System.Web.Mail;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;Create the public sendMail Method by adding the Provider Method Atributes &lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;[ProviderMethodAttribute("sendMail",&lt;BR&gt;ProviderHandlerType.process,&lt;BR&gt;Description="Sends an Email to one or more recipients",&lt;BR&gt;AccessType=ProviderAccessType.publicAccess)]&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt; &lt;/P&gt;
&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;&lt;FONT face="Arial"&gt;Now create the method&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;public&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;void&lt;/FONT&gt;&lt;FONT size="2"&gt; sendMail(IXMLDOMNode node)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;{&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;Now it is time to grab the mandatory properties from the incoming XML Request&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#008000" size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;// get the executeData node from the incoming XML request&lt;BR&gt;&lt;FONT size="2"&gt;IXMLDOMNode executeDataNode = node.selectSingleNode("/executeXml/executeData");&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#808080" size="2"&gt;
&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;remarks&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; get the required elements from the incoming XML request&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;/remarks&amp;gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;param name="sendTo"&amp;gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; is required, delimit multiple receipients with semicolons(we are not checking for email address syntax&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;param name="mailFrom"&amp;gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; is the required (must be a valid email address the smtp server can relay)&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;param name="subject"&amp;gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; is required and gets inserted into the message subject&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;string&lt;/FONT&gt;&lt;FONT size="2"&gt; sendTo = &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;this&lt;/FONT&gt;&lt;FONT size="2"&gt;.GetRequiredElementValue(executeDataNode, "sendTo");&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;string&lt;/FONT&gt;&lt;FONT size="2"&gt; mailFrom = &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;this&lt;/FONT&gt;&lt;FONT size="2"&gt;.GetRequiredElementValue(executeDataNode, "mailFrom");&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;string&lt;/FONT&gt;&lt;FONT size="2"&gt; subject = &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;this&lt;/FONT&gt;&lt;FONT size="2"&gt;.GetRequiredElementValue(executeDataNode, "subject");&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;FONT size="2"&gt;
&lt;P dir="ltr"&gt;&lt;FONT size="2"&gt;&lt;FONT face="Arial"&gt;Now look if we have any optional parameters in the request&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#808080" size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;///&amp;lt;remarks&amp;gt;&lt;BR&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;get the optional elements from the incoming XML request&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&amp;lt;/remarks&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&amp;lt;param name="messageText"&amp;gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;string or HTML Blob that forms the message body&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&amp;lt;param name="attachmentPath"&amp;gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;the physical path to a fileattachment to be added to the message&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; there can only be one attachment in this implementation&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; if the path is invalid or not accessible the procedure will fail&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&amp;lt;param name="smtpServerName"&amp;gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;the NetBios, IP address or FQDN for the SMTP server&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; which will send the message, not supplying this paramater will default&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt; to localhost&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;///&amp;lt;param name="messageFormat"&amp;gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;the format for the messagebody can be text or html&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;string&lt;/FONT&gt;&lt;FONT size="2"&gt; messageText = &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;this&lt;/FONT&gt;&lt;FONT size="2"&gt;.GetOptionalElementValue(executeDataNode, "messageText");&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;string&lt;/FONT&gt;&lt;FONT size="2"&gt; attachmentPath = &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;this&lt;/FONT&gt;&lt;FONT size="2"&gt;.GetOptionalElementValue(executeDataNode, "attachmentPath");&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;string&lt;/FONT&gt;&lt;FONT size="2"&gt; smtpServerName = &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;this&lt;/FONT&gt;&lt;FONT size="2"&gt;.GetOptionalElementValue(executeDataNode, "smtpServerName");&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;string&lt;/FONT&gt;&lt;FONT size="2"&gt; messageFormat = &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;this&lt;/FONT&gt;&lt;FONT size="2"&gt;.GetOptionalElementValue(executeDataNode, "messageFormat").ToLower();&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir="ltr"&gt;&lt;FONT size="2"&gt;&lt;FONT face="Arial"&gt;Ok that we relatively easy, we use th XML Handling methods which come with the provider Wizard template to retrieve the madatory and/or optional parameters.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;For a relatively simple provider with only one method which does not require rollbach you can add the "action" code right here. For more complicated provider or providers with multiple methods and rollback requirements it is better to encapsulate each method into a seperate private class and then call it from here. For this sample I will add the action code right here&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT size="2"&gt;&lt;FONT face="Arial"&gt;Let's new up a message object&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#008000" size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;//Create an empty Mail Message&lt;BR&gt;&lt;FONT size="2"&gt;MailMessage newMessage = &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;new&lt;/FONT&gt;&lt;FONT size="2"&gt; MailMessage();&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;FONT size="2"&gt;&lt;FONT face="Arial"&gt;Add the recipient, sender and subject to the message&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;newMessage.From = mailFrom;&lt;BR&gt;newMessage.To = sendTo;&lt;BR&gt;newMessage.Subject = subject;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;Lets see if we have a message bod text, if you want to send an HTML Message then you will have to encode the HTML into the XML request, we will look into this a little later&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;if&lt;FONT size="2"&gt;(messageText.Length != 0)&lt;BR&gt;   {&lt;BR&gt;      newMessage.Body = messageText;&lt;BR&gt;   }&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;   &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000" size="2"&gt;Now set the message format if the format string does not specify html or text then lets default to text and rather not fail.&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;if&lt;/FONT&gt;&lt;FONT size="2"&gt;(messageFormat.Length != 0)&lt;BR&gt; {&lt;BR&gt;         &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;switch&lt;/FONT&gt;&lt;FONT size="2"&gt;(messageFormat)&lt;BR&gt;         {&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;         // set the message format&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;         case&lt;/FONT&gt;&lt;FONT size="2"&gt; "html":&lt;BR&gt;            newMessage.BodyFormat=MailFormat.Html;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;            break&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;         case&lt;/FONT&gt;&lt;FONT size="2"&gt; "text":&lt;BR&gt;            newMessage.BodyFormat=MailFormat.Text;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;            break&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;         default&lt;/FONT&gt;&lt;FONT size="2"&gt;:&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;            // we are not going to fail the send if an invalid &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;            // messageFormat comes in just send as Text and we should be fine&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;            newMessage.BodyFormat=MailFormat.Text;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;            break&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;BR&gt;            }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;Check if we have an attachment path and see if we can find it and attach it to the message&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Arial"&gt;&lt;FONT color="#0000ff" size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;if&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt;(attachmentPath.Length != 0)&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Times New Roman"&gt;   // we got an attachmentpath lets try to attach the file&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Times New Roman"&gt;   // if this fails we will fail the request&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt;   {&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Times New Roman"&gt;      try&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt;         {&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;               MailAttachment newAttachment = &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman" color="#0000ff" size="2"&gt;new&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt; MailAttachment(attachmentPath);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;               newMessage.Attachments.Add(newAttachment);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;         }&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman" color="#0000ff" size="2"&gt;      catch&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt;(Exception e)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;         {&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Times New Roman"&gt;               // Attachment adding failed&lt;BR&gt;               &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT color="#0000ff" size="2"&gt;return&lt;/FONT&gt;&lt;FONT size="2"&gt; ;&lt;BR&gt;          }&lt;BR&gt;      }&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT size="2"&gt;
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;P dir="ltr"&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;Here we will fail the request before sending the mail if we have encountered an error during attaching the file specified.&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;If we did not fail to add the attachment let's go and set the remainder of the optional paramters or the defaults. &lt;/P&gt;&lt;FONT size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT color="#008000" size="2"&gt;// set the SMTP Server if any&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT size="2"&gt;(smtpServerName.Length != 0)&lt;BR&gt;      {&lt;BR&gt;            SmtpMail.SmtpServer =smtpServerName;&lt;BR&gt;      }&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;            else&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman" color="#008000" size="2"&gt;//default to localhost &lt;BR&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt;      {&lt;BR&gt;            SmtpMail.SmtpServer ="localhost";&lt;BR&gt;      }&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;
&lt;P dir="ltr"&gt;In the code above we use the System.Web.Mail.SmtpMail Class to configure the mailserver we want to use to send the mail, this will default to localhost if none is specified.&lt;/P&gt;
&lt;P dir="ltr"&gt;Now lets send the message we have created above on its way&lt;/P&gt;&lt;FONT size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" color="#008000" size="2"&gt;// now send the message&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman" color="#0000ff" size="2"&gt;try&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT size="2"&gt;   {&lt;BR&gt;      SmtpMail.Send(newMessage);&lt;BR&gt;   }&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;      catch&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman" size="2"&gt;(Exception e)&lt;BR&gt;   {&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT color="#008000" size="2"&gt;      // sendig the message failed&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;      return&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Times New Roman"&gt; ;&lt;BR&gt;   }&lt;BR&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir="ltr"&gt;&lt;FONT size="2"&gt;Now that we are done with this lets create the Provider Namespace XML File, to do this edit the ProviderNS.XML from the solution explorer to look like this.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT color="#800000" size="2"&gt;namespace&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;name&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;="SMTPMailProvider"&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;description&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;=""&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;readOnly&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;="0"&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;providerSource&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;="SMTPMailProvider.Provider"&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT color="#0000ff" size="2"&gt; &amp;lt;&lt;/FONT&gt;&lt;FONT color="#800000" size="2"&gt;procedure&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;name&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;="sendMail"&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;description&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;="Sends an email using SMTP"&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;access&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;="public"&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;type&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;="write"&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;perfEnabled&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;="0"&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;saveDataForRollback&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;="0"&lt;/FONT&gt;&lt;FONT color="#ff00ff" size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#ff0000" size="2"&gt;auditEnabled&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Times New Roman"&gt;="0"/&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;
&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Times New Roman"&gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#800000" size="2"&gt;namespace&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir="ltr"&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Arial" color="#000000"&gt;Now we should be done with the base provider and the namespace so we can go ahead and build the solution hit CTRL-Shift-B, if all is well the build succeeded and we are good to go and register the DLL and go ahead and try the provider out.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Arial" color="#000000"&gt;Open a command prompt and CD to the Solution Folder in my case this is&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;I&gt;C:\MPFSDK\Providers\SMTPMailProvider&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir="ltr"&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Arial" color="#000000"&gt;Type the following commandline (without the line breaks of course)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir="ltr"&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;I&gt;\WINDOWS\Microsoft.NET\Framework\v1.1.4322\RegAsm.exe /codebase .\bin\Debug\SMTPMailProvider.dll&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir="ltr"&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Arial" color="#000000"&gt;Ignore the warning for now. We are going to deal with the signing later on. Now we will go into the Provisioning Manager and register the provider Namespace. From the same commandline type&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;      &lt;FONT face="Arial"&gt;&lt;I&gt;provnamespace \MPFSDK\Providers\SMTPMailProvider\ProviderNS.xml&lt;/I&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;You should get a response like this&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;&lt;I&gt;   The namespace(s) have successfully been added or updated.&lt;/I&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;The next step is going to be to create the ManagedMail Namespace which will allow us to send email and also setup a mail enabled user.&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;This will require some sort of mailenabled user we can send the mail to. I'll assume for now you have a mail system somewhere you can send mail to and also that there exists a SMTP Server we can use to send the mail from.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=563414" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>Developing a Provider for MPS Part 2</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2006/03/03/543246.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2006/03/03/543246.aspx</id><published>2006-03-04T00:50:00Z</published><updated>2006-03-04T00:50:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;OK Now that you have set up your environment (if you have not check out my &lt;A HREF="/mkostersitz/archive/2006/04/02/523757.aspx"&gt;&lt;SPAN style="COLOR: blue"&gt;previous post&lt;/SPAN&gt;&lt;/A&gt;) let’s get some code done.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;On the MPS Engine Server where you installed Visual Studio open the Visual Studio IDE.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Select File/New and you should see a new type of C# project there called "MPF .NET&amp;nbsp;Provider".&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Type in a name for the Provider and select a location where to put it. For this exercise I will call it &lt;I&gt;HelloMPF &lt;/I&gt;and store it in C:\MPFSDK\Providers.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Note Visual Studio will create the Folders if they are missing. Your built DLL will end up in C:\MPFSDK\Providers\HelloMPF\bin\ debug or release depending on how you build it.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;When you select the Class1.cs File in the Solution Explorer you a base provider built on the Base class so that it can do all the things you expect from a MPF Provider such as receiving XML &amp;lt;executeData&amp;gt; and returning the &amp;lt;response&amp;gt; XML.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;So the only thing we now need to add is the code to grab any input data, work with the data and return it back as the response.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;In the Code Window expand the Public Provider Methods and uncomment or type this block of sample code&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;[ProviderMethodAttribute("&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;Say Hello&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;",&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;ProviderHandlerType.process,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;Description="Sample C# Provider Method",&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;AccessType=ProviderAccessType.publicAccess)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; MySampleMethod(IXMLDOMNode node)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;// get the executeData node&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;IXMLDOMNode executeDataNode = node.selectSingleNode("/executeXml/executeData");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;// get the required elements if any&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;string&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; greeting = &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.GetRequiredElementValue(executeDataNode, "greeting");&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Now you have the input data from the request in your provider code. Let's create the output XML with the return values&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;The output will return the string "MPF says " and then insert the value we retrieved from the greeting input node.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Uncomment or type this block of code&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;// first we need to get the owning document for creating additional elements/nodes&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;IXMLDOMDocument parentXML = &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;executeDataNode&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;.ownerDocument;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;// you can create a new node but be aware that the nodes may already exist due to optional input parameters&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;IXMLDOMElement newRootNode = (IXMLDOMElement)&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;executeDataNode&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;.selectSingleNode("helloWorld");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; (newRootNode == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;newRootNode = parentXML.createElement("greeting");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;executeDataNode&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;.appendChild(newRootNode);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;// add the &amp;lt;greeting/&amp;gt; node&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;.AddOrUpdateNode(parentXML, newRootNode, "greeting", "MPF says " + greeting);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Ensure that you have your closing } at the end of the function. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;There are some things in the code sample that comes in the Provider Wizard that need to be changed see highlighted text in the code blocks.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Now we are ready to build the provider Hit Ctrl+Shift+B or select Build Solution from the Menu Bar.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Now we have to create the XML Description of the provider which tells MPF what the provider can do. To do that click on the ProviderNS.XML File in the solution explorer and edit it so it looks like this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;version&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="1.0"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;encoding&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="utf-8"?&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="HelloMPF.ProviderNS"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;providerSource&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="HelloMPF.Class1"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="http://schemas.microsoft.com/MPF"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;xsl&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;=&lt;A href="http://www.w3.org/1999/XSL/Transform"&gt;&lt;SPAN style="COLOR: blue; mso-bidi-font-size: 11.0pt"&gt;http://www.w3.org/1999/XSL/Transform&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;description&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="Say Hello"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;procedure&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="Say Hello"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;type&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="read"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;access&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="public"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;description&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="Say Hello to the caller"/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Save the file.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;We need to register the Provider DLL for COM, open a command prompt and CD into the C:\MPSSDK\Providers\HelloMPF Folder type the following command&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;B&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;C:\MPFSDK\Providers\HelloMPF&amp;gt;\WINDOWS\Microsoft.NET\Framework\v1.1.4322\RegAsm.e&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;xe /codebase .\bin\Debug\HelloMPF.dll&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;You can safely ignore the warning now. In the 3rd installment I will talk about how to sign and strongly type the provider so that it will not throw that warning.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Now open the Provisioning&amp;nbsp;Manager from the Start Menu and right click on the Namespaces Node select import Namespace and specify the path &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;C:\MPFSDK\Providers\HelloMPF\ProviderNS.xml&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;And click OK. You should now see the HelloMPF.ProviderNS on the right hand side, when you select it the Say Hello Method should be visible in the left hand window.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Last but not least we will have to create a request to call the new provider, to do that go back to the IDE and select File/New/File ... under the General Category you will find "MPF Request" select that and hit Open&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Edit the Template so it looks like this &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;version&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="1.0"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;encoding&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="utf-8"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;?&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;lt;!&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;-- Documentation on the Request XML Schema can be found at "C:\Program Files\Microsoft Hosting\Provisioning\Development Tools\Help" --&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;request&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="http://schemas.microsoft.com/MPF"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;xsl&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="http://www.w3.org/1999/XSL/Transform"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;greeting&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;gt;hello to you&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;greeting&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;data&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;procedure&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;execute&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="HelloMPF.ProviderNS"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;procedure&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="Say Hello"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;before&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;source&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="data"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;destination&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="executeData"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;mode&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="merge"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;after&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;source&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="executeData"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;destination&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="data"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;mode&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;="insert"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;execute&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;procedure&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;gt;&lt;BR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;request&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Back to our command prompt &amp;nbsp;we are now ready to submit the request. Type the following command&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;B&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;C:\MPFSDK\Providers\HelloMPF&amp;gt;provtest /x2 Request1.xml&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;You should get a response that looks somewhat like this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;lt;response&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;data xmlns="&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;A href="http://schemas.microsoft.com/MPF"&gt;&lt;SPAN style="COLOR: green; mso-bidi-font-size: 11.0pt"&gt;http://schemas.microsoft.com/MPF&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;greeting&amp;gt;hello to you&amp;lt;/greeting&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;executeData xmlns=""&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;greeting xmlns="&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;A href="http://schemas.microsoft.com/MPF%22%3ehello"&gt;&lt;SPAN style="COLOR: green; mso-bidi-font-size: 11.0pt"&gt;http://schemas.microsoft.com/MPF"&amp;gt;hello&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt; to you&amp;lt;/greeting&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;greeting&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;greeting&amp;gt;MPF says hello to you&amp;lt;/greeting&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/greeting&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/executeData&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/data&amp;gt;&lt;BR&gt;&amp;lt;/response&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;If you get an error&amp;nbsp;double-check the code and compare it to the code in the ZIP file that is attached to the post. If you are still stuck please post a reply here or better on the Forums in asp.net (see link in the links section)&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;I hope that this is valuable so far. In the third installment of this we will create a more useful provider, one that will let us send e-mail through MPS.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Until then happy coding&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'"&gt;Mike&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; BACKGROUND: black; COLOR: aquamarine; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=543246" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>Developing a Provider for MPS</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2006/03/02/developing-a-provider-for-mps.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2006/03/02/developing-a-provider-for-mps.aspx</id><published>2006-03-03T01:30:00Z</published><updated>2006-03-03T01:30:00Z</updated><content type="html">Developing custom MPF Providers in Visual Studio 2003. This post is about getting the prerequesites set up and configured....(&lt;a href="http://blogs.msdn.com/mkostersitz/archive/2006/03/02/developing-a-provider-for-mps.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=523757" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>Why can MPS not run on a single Server?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2005/10/28/486386.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2005/10/28/486386.aspx</id><published>2005-10-28T22:54:00Z</published><updated>2005-10-28T22:54:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Arial&gt;Something I get asked a lot and actually this is&amp;nbsp;&lt;/FONT&gt;&lt;FONT face=Arial&gt;a great and valid question so let me swing back in time a little and lets look where MPS Came from and what it was designed for.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;1999: MPF is born and released as the provisioning solution for the First iteration of what is now the Solution for Hosted Messaging and Collaboration. Since this solution build on top of Exchange Server, Active Directory is a must. The target audience back then and to some extent today are larger hosters and the Phone Companies of this world, so reliablility and security and scalability were major&amp;nbsp;design goals.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;That said MPS can run in a minimal server configuration of&amp;nbsp;3 servers for MPF but you will not get reliability or scalability out of it because you have multiple points of failure which are not mitigated. Also keep in mind that the 3 servers only pertain to MPF and the Webservices not to the rest of the Servers required to host services like Exchange, SQL, Web and LCS Servers.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;The Configuration would look something like this ...&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Server1: Active Directory (recommended to have two of these)\&lt;BR&gt;Server2: SQL Server 2000 SP4 and MPF Engine Server (recommended to split the roles for better performance and support for multiple Engine Servers)&lt;BR&gt;Server3: MPS Frontend server (recommended to have at least 2 for loadbalancing)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Plus any servers for the services you plan to host.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#ff0000&gt;&lt;STRONG&gt;NOTE: The above configuration is NOT recommended for production use but is suitable for Test and Development Environments.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;That said we are working on a scaled down version of HMC for a future relase, as far as Windows Based Hosting goes you can scale it down pretty well since it is designed to be modular.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;As always if you have any questions feel free to post them here.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Until next time&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Mike&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=486386" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>Dear Blog Long Time no See :-)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2005/02/27/381448.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2005/02/27/381448.aspx</id><published>2005-02-28T06:45:00Z</published><updated>2005-02-28T06:45:00Z</updated><content type="html">&lt;p&gt;&lt;font face="Arial" color="#000080"&gt;Back from a great vacation and all recharged here an update from snow less, rainless, sunny Redmond, WA.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" color="#000080"&gt;The "&lt;strong&gt;Solution for Hosted Messaging and Collaboration 3.0&lt;/strong&gt;" is out the door, and for the very first time in history (yeah I know sounds like a cliché) MPS now is supported on Windows Server 2003. So you, the customer, can do away with your (hopefully) last Windows 2000 Server in the Environment. The "Solution for Windows Based Hosting 3.0" will be updated shortly to reflect this change too.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" color="#000080"&gt;The good news about the update to MPS 2.0 is that all namespaces and providers are supposed to work as before and no change is needed. Just make sure you read the Release Notes and the Updating from a previous version Documentation so you don't mess up your MPS Databases including the Plans database. Also you need two Hot fixes to make everything work as outlined in the documentation.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" color="#000080"&gt;The new version has also an enhanced version of the Deployment Tool which allows installation of all MPS related components from a central location, so no need to run the tool from multiple servers any more.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" color="#000080"&gt;In terms of control panel we are working with several vendors and they all are very enthusiastic about building a version of their control panel on top of our solution architecture utilizing our plumbing including MPS and focus more on the UI, CRM and other aspects to better compliment&amp;nbsp;our solution. Make sure to check out &lt;a href="http://www.microsoft.com/serviceproviders/hosting"&gt;http://www.microsoft.com/serviceproviders/hosting&lt;/a&gt; for news once there is an official announcement.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" color="#000080"&gt;On a different note, thanks to all the replies and messages I received so far, keep that input coming. If you want to see a new feature or want to send feedback on MPS, feel free to post it here or send it to &lt;a href="mailto:wbhcst@microsoft.com"&gt;wbhcst@microsoft.com&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" color="#006400"&gt;Look out for more exciting news soon ...&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial"&gt;Mike&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=381448" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry><entry><title>Welcome to my Blog</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/mkostersitz/archive/2004/10/28/249403.aspx" /><id>http://blogs.msdn.com/mkostersitz/archive/2004/10/28/249403.aspx</id><published>2004-10-29T04:37:00Z</published><updated>2004-10-29T04:37:00Z</updated><content type="html">&lt;p&gt;&lt;font face="Verdana"&gt;So how do we start this out? This is my first blog since back in the BBS times when I ran a FIDO Point in Austria ....(man am I that old already :-{)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Welcome is probably a good start ;-)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;As a Program Manager at Microsoft I'm responsible for the Microsoft Provisioning System (MPS) used by Hosters to setup and configure customer accounts and services. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;So this is mainly going to be about MPS and the tricks and treats (yeah it is that time of year again) useful and needed to make it a useful tool for the Community.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;When I'm not having fun at work, which is basically only when I'm not there ;-) I spend my time with my family outside hiking, camping and having more fun :-)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;So that is this for starters not much but something I will keep this updated from time to time so come back and ask what you have to ask.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Mike Kostersitz&lt;br /&gt;Program Manager, Microsoft Corporation&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;P.S.:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;to learn more about MPS or get other Hosting related questions answered check out&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;font color="#006400"&gt;&lt;span style="FONT-SIZE: 12pt; COLOR: navy; FONT-FAMILY: Arial"&gt;the &lt;span style="FONT-WEIGHT: bold"&gt;&lt;a title="http" href="http://www.asp.net/Forums/ShowForumGroup.aspx?tabindex=1&amp;amp;ForumGroupID=29" target="_blank"&gt;Microsoft’s Technical Hosting Community&lt;/a&gt;&lt;/span&gt; on the ASP.NET Forums&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: navy; FONT-FAMILY: Arial"&gt;&lt;a title="http" href="http://www.asp.net/Forums/ShowForumGroup.aspx?tabindex=1&amp;amp;ForumGroupID=29"&gt;http://www.asp.net/Forums/ShowForumGroup.aspx?tabindex=1&amp;amp;ForumGroupID=29&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;font color="#006400"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: navy; FONT-FAMILY: Arial"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=249403" width="1" height="1"&gt;</content><author><name>mkostersitz</name><uri>http://blogs.msdn.com/members/mkostersitz.aspx</uri></author></entry></feed>