<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rob Sanders: Sanders Technology</title>
	<atom:link href="http://www.sanderstechnology.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sanderstechnology.com</link>
	<description>Welcome to the &#039;Entertain us&#039; Nation 2.0</description>
	<lastBuildDate>Sun, 19 Feb 2012 06:55:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<meta xmlns="http://www.w3.org/1999/xhtml" name="robots" content="noindex,follow" />
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Quick Sequence Diagram Editor</title>
		<link>http://www.sanderstechnology.com/2012/quick-sequence-diagram-editor/11030/</link>
		<comments>http://www.sanderstechnology.com/2012/quick-sequence-diagram-editor/11030/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 06:55:18 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Design Concepts and Code]]></category>
		<category><![CDATA[Free and Fun Stuff]]></category>
		<category><![CDATA[Web Services and Interop]]></category>
		<category><![CDATA[Diagrams]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2012/quick-sequence-diagram-editor/11030/</guid>
		<description><![CDATA[Not long ago, I posed a question to the Stack Overflow community – (is there a) “Good Visio Template (or alternative) for SOA/Distributed Systems?”.&#160; Surprisingly, there was only one response! Since then, I have been recently introduced to, of all things, a Java based tool called the ‘Quick Sequence Diagram Editor’ which can be used <a href='http://www.sanderstechnology.com/2012/quick-sequence-diagram-editor/11030/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Not long ago, I posed a question to the Stack Overflow community – (is there a) “<a href="http://stackoverflow.com/questions/1705448/good-visio-template-or-alternative-for-soa-distributed-systems">Good Visio Template (or alternative) for SOA/Distributed Systems?</a>”.&#160; Surprisingly, there was only one response!</p>
<p>Since then, I have been recently introduced to, of all things, a Java based tool called the ‘<a href="http://sourceforge.net/projects/sdedit/" target="_blank">Quick Sequence Diagram Editor’</a> which can be used to produce really useful UML Call Sequence Diagrams.&#160; Using this tool, you can effectively call out the interface definitions of your distributed services or service library.</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image11.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb11.png" width="509" height="358" /></a></p>
<p>The tool uses a pseudo code syntax to produce (render) the sequence diagrams.&#160; Services (or classes) are declared first , and then subsequent code calls out the service behaviour (request/response, arguments).&#160; It also supports inline annotations (comments) as well as conditional (branching) IF/ELSE logic.</p>
<p>Code is evaluated/rendered as you add the code so that it is impossible to model a sequence with invalid object names.</p>
<p>From the site, here are the principal features:</p>
<ul>
<li>The diagram changes as you type. </li>
<li>Diagram code is instantly checked, errors are pointed at. </li>
<li>Diagrams can be exported and zoomed. </li>
<li>Long diagrams can be paginated. </li>
<li>There are constraints imposed on diagram specifications, so one cannot model something that is impossible to implement. </li>
</ul>
<p>All it requires is Java (for your platform), the downloadable is an executable .jar file which consumes the specification files (which can be used with other UML document tools as well).</p>
<p>Enjoy</p>
<p>Download: <a title="http://sourceforge.net/projects/sdedit/" href="http://sourceforge.net/projects/sdedit/">http://sourceforge.net/projects/sdedit/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2012/quick-sequence-diagram-editor/11030/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone 4: Siri Security Fail</title>
		<link>http://www.sanderstechnology.com/2012/iphone-4-siri-security-fail/11022/</link>
		<comments>http://www.sanderstechnology.com/2012/iphone-4-siri-security-fail/11022/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 10:49:15 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[iPhone Related]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[iPhone 4]]></category>
		<category><![CDATA[Security Fail]]></category>
		<category><![CDATA[Siri]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2012/iphone-4-siri-security-fail/11022/</guid>
		<description><![CDATA[This weekend I discovered a pretty massive security fail on the iPhone 4S.  As you might know, you can set a security pin code to prevent unauthorized use of an iPhone handset. You might also be aware of the new Siri feature built into the iPhone 4S.  Assuming you have Siri enabled, then out of <a href='http://www.sanderstechnology.com/2012/iphone-4-siri-security-fail/11022/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>This weekend I discovered a pretty massive security fail on the iPhone 4S.  As you might know, you can set a security pin code to prevent unauthorized use of an iPhone handset.</p>
<p>You might also be aware of the new Siri feature built into the iPhone 4S.  Assuming you have Siri enabled, then out of the box the following is possible (as of time of writing):</p>
<p>You can hold the home button to activate Siri – <strong>whether the handset is locked or not</strong>.  Once activated, you can direct Siri to perform specific actions – for example, making a phone call!</p>
<p>I’ve tested the following scenarios/commands -</p>
<ul>
<li>“Call Paul” (assuming you have a person named ‘Paul’ in your contacts)</li>
<ul>
<li>Will list matching entries in the Contact List</li>
<li>Will dial a selected contact</li>
<li>I assume this will worj with any contact</li>
</ul>
<li>“Call &lt;a number&gt;”</li>
<ul>
<li>e.g. “Call 12345”</li>
</ul>
</ul>
<p>Interestingly, if you issue the command “Unlock the Phone”, Siri responds with “I’m sorry, I can’t do that”.</p>
<p>So, there’s a pretty blatant hole in the iPhone security model – not only can you dial arbitrary phone numbers with Siri’s help, you can also expose contacts in the contact’s list.</p>
<p>It also appears that Siri will conduct web searches (e.g. “What is the capital of Columbia?”) while the handset is locked – using up your data plan.</p>
<p>Now, how about some bonus security flaws?  You can also send messages via Siri.  The command “Send a message to Paul” will take you through steps to select a contact, select a number and then will record a message and allow you to send – <strong>all while the handset is locked</strong>.</p>
<p>Cupertino says: Oops.</p>
<p><strong>Update</strong></p>
<p>As a few people have communicated (many thanks), it is possible to disable Siri while the handset is locked (as opposed to disabling Siri altogether).  This is not the default configuration (unfortunately!) which means (IMHO) this is still a fairly significant flaw.  To disable Siri when the phone is locked, go to:</p>
<p>Settings -&gt; General -&gt; Passcode Lock -&gt; Siri.  Set ON -&gt; OFF.</p>
<p>Again, note this will disable Siri when the phone is locked rather than switching Siri off altogether.</p>
<p>Note: I’m not the first to discover this, here’s more reading on the topic:</p>
<p><strong>Further Reading</strong></p>
<p><a title="http://tech2.in.com/news/smartphones/siri-makes-phone-calls-even-if-phone-is-locked/250662" href="http://tech2.in.com/news/smartphones/siri-makes-phone-calls-even-if-phone-is-locked/250662">http://tech2.in.com/news/smartphones/siri-makes-phone-calls-even-if-phone-is-locked/250662</a><br />
<a title="http://mashable.com/2011/10/19/siri-lets-you-make-calls-on-passcode-locked-iphone-4s/" href="http://mashable.com/2011/10/19/siri-lets-you-make-calls-on-passcode-locked-iphone-4s/">http://mashable.com/2011/10/19/siri-lets-you-make-calls-on-passcode-locked-iphone-4s/</a><br />
<a title="http://www.techradar.com/news/computing/apple/siri-security-flaw-uncovered-1035270" href="http://www.techradar.com/news/computing/apple/siri-security-flaw-uncovered-1035270">http://www.techradar.com/news/computing/apple/siri-security-flaw-uncovered-1035270</a></p>
<p><strong>Just-In-Time Credit</strong></p>
<p>Tip o’ the hat to my co-contributor, Paul Doessel, for the initial discovery and further testing</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2012/iphone-4-siri-security-fail/11022/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BizTalk 2010 Rollup &#8211; Sequence to Flat File Mapping</title>
		<link>http://www.sanderstechnology.com/2012/biztalk-2010-rollup-sequence-to-flat-file-mapping/11021/</link>
		<comments>http://www.sanderstechnology.com/2012/biztalk-2010-rollup-sequence-to-flat-file-mapping/11021/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 09:25:15 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[BizTalk Server 2010]]></category>
		<category><![CDATA[Lessons Learned]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[Transform]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2012/biztalk-2010-rollup-sequence-to-flat-file-mapping/11021/</guid>
		<description><![CDATA[Earlier in the week I spent some time trying to accomplish what I thought was going to be a trivial task – mapping from a sequence structure to a flat file structure using BizTalk Development Tools. The main idea is to take a looping structure on the left hand side and map it to a <a href='http://www.sanderstechnology.com/2012/biztalk-2010-rollup-sequence-to-flat-file-mapping/11021/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Earlier in the week I spent some time trying to accomplish what I thought was going to be a trivial task – mapping from a sequence structure to a flat file structure using BizTalk Development Tools.</p>
<p>The main idea is to take a looping structure on the left hand side and map it to a flat structure on the right hand side.</p>
<p>As it turns out, it’s pretty easy to do, and not complicated.&#160; I spent a lot of time trying to do something more dramatic, if you’re looking for this info, I think you’ll be surprised by how logical the solution is.</p>
<p>Take a schema like the following:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb.png" width="523" height="376" /></a><font size="3">     </p>
<p>Which defines a structure along the lines of this:</font></p>
<p><font size="1" face="Courier New">&lt;ns0:Account xmlns:ns0=&quot;</font><a href="http://Mapping_Project.Inbound&quot;"><font size="1" face="Courier New">http://Mapping_Project.Inbound&quot;</font></a><font size="1" face="Courier New">&gt;     <br />&#160; &lt;FirstName&gt;Jed&lt;/FirstName&gt;      <br />&#160; &lt;LastName&gt;Bartlett&lt;/LastName&gt;      <br />&#160; &lt;Address&gt;      <br />&#160;&#160;&#160; &lt;Line1&gt;1 Constitution Ave&lt;/Line1&gt;      <br />&#160;&#160;&#160; &lt;Line2&gt;&lt;/Line2&gt;      <br />&#160;&#160;&#160; &lt;Suburb&gt;Lincoln&lt;/Suburb&gt;      <br />&#160;&#160;&#160; &lt;State&gt;Nebraska&lt;/State&gt;      <br />&#160;&#160;&#160; &lt;Country&gt;USA&lt;/Country&gt;      <br />&#160;&#160;&#160; &lt;PostCode&gt;90210&lt;/PostCode&gt;      <br />&#160;&#160;&#160; &lt;Type&gt;Home&lt;/Type&gt;      <br />&#160; &lt;/Address&gt;      <br />&#160; &lt;Address&gt;      <br />&#160;&#160;&#160; &lt;Line1&gt;Suite 10&lt;/Line1&gt;      <br />&#160;&#160;&#160; &lt;Line2&gt;1090 Eggplant Blvd&lt;/Line2&gt;      <br />&#160;&#160;&#160; &lt;Suburb&gt;Washington&lt;/Suburb&gt;      <br />&#160;&#160;&#160; &lt;State&gt;Nebraska&lt;/State&gt;      <br />&#160;&#160;&#160; &lt;Country&gt;USA&lt;/Country&gt;      <br />&#160;&#160;&#160; &lt;PostCode&gt;90211&lt;/PostCode&gt;      <br />&#160;&#160;&#160; &lt;Type&gt;Work&lt;/Type&gt;      <br />&#160; &lt;/Address&gt;      <br />&lt;/ns0:Account&gt;</font></p>
<p>We’re going to try and transform it into something ugly, like this:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb1.png" width="627" height="326" /></a></p>
<p>Which means flattening the data from the left hand side to the right hand side – but how?   </p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb2.png" width="633" height="314" /></a></p>
<p>First up, generate some test data. It’s a very good habit to get into, and it’s easy as pie. Right click on a schema and select “Generate Instance”. <strong>Modify the values so they’re easy to debug</strong> with and you’re set.</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb3.png" width="352" height="298" /></a></p>
<p>Let’s look at how we transform this simple XML.&#160; The answer, as it turns out is blindingly simple. </p>
<p>Open up your map..</p>
<p>Now, let’s assume we want to apply a condition to how we separate the data on the left hand side.&#160; Let’s assume there will be two types of addresses (Home and Work).&#160; Our aim is to assign all the “Address 1” address details as “Home”, and all the “Address 2” details as “Work”.</p>
<p>Drop two Logical EQUALs functoids onto the map and join them to the “Type” attribute.&#160; Then, open each functoid and we’ll set the comparison value to ‘Home’ and ‘Work’ respectively (omit the quotes).&#160; This applies the logic to split the output.</p>
<p>1. <a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb4.png" width="367" height="243" /></a> 2. <a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb5.png" width="222" height="244" /></a></p>
<p>Now, assign all the attributes directly across to their destination.</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb6.png" width="630" height="299" /></a></p>
<p>Next, connect each equals functoid to the destination it reflects, i.e. connect the functoid for “Home” to each of the “Address 1” properties, etc.&#160; Don’t forget to map the “Type” too, if you want to capture that detail.</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb7.png" width="656" height="262" /></a></p>
<p>Given the data I’ve specified above – let’s give it a test!&#160; With the map open in Visual Studio, open the Properties Window and take a look at the following details:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb8.png" width="443" height="273" /></a></p>
<p>Change the “Test Map Input” to “XML” and then you can specify the path to a test XML document (which you might have created earlier).&#160; Here’s how mine ended up:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb9.png" width="420" height="211" /></a>&#160; <br /><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image10.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/02/image_thumb10.png" width="423" height="245" /></a></p>
<p>To test, right click on the map file in Solution Explorer and select “Test Map”.&#160; You should get some results in the output window:</p>
<p><font size="1" face="Courier New">TestMap used the following file: &lt;file:///C:\Dev\BizTalk\Mapping\Mapping Project\Test Data\Inbound_Data.xml&gt; as input to the map.     <br />Test Map success for map file C:\Dev\BizTalk\Mapping\Mapping Project\Maps\InboundToOutbound.btm. The output is stored in the following file: &lt;file:///C:\Dev\BizTalk\Mapping\Mapping Project\Test Output\Output.xml&gt;       <br />Component invocation succeeded.</font></p>
<p>Which provides a generated instance which looks like this:</p>
<p><font size="1" face="Courier New">&lt;ns0:AccountDetails xmlns:ns0=&quot;</font><a href="http://Mapping_Project.Outbound&quot;"><font size="1" face="Courier New">http://Mapping_Project.Outbound&quot;</font></a><font size="1" face="Courier New">&gt;     <br />&#160; &lt;Name&gt;Jed Bartlett&lt;/Name&gt;       <br />&#160; &lt;Address1_Line1&gt;1 Constitution Ave&lt;/Address1_Line1&gt;       <br />&#160; &lt;Address1_Line2 /&gt;       <br />&#160; &lt;Address1_Suburb&gt;Lincoln&lt;/Address1_Suburb&gt;       <br />&#160; &lt;Address1_State&gt;Nebraska&lt;/Address1_State&gt;       <br />&#160; &lt;Address1_Country&gt;USA&lt;/Address1_Country&gt;       <br />&#160; &lt;Address1_PostCode&gt;90210&lt;/Address1_PostCode&gt;       <br />&#160; &lt;Address1_Type&gt;Home&lt;/Address1_Type&gt;       <br />&#160; &lt;Address2_Line1&gt;Suite 10&lt;/Address2_Line1&gt;       <br />&#160; &lt;Address2_Line2&gt;1090 Eggplant Blvd&lt;/Address2_Line2&gt;       <br />&#160; &lt;Address2_Suburb&gt;Washington&lt;/Address2_Suburb&gt;       <br />&#160; &lt;Address2_State&gt;Nebraska&lt;/Address2_State&gt;       <br />&#160; &lt;Address2_Country&gt;USA&lt;/Address2_Country&gt;       <br />&#160; &lt;Address2_PostCode&gt;90211&lt;/Address2_PostCode&gt;       <br />&#160; &lt;Address2_Type&gt;Work&lt;/Address2_Type&gt;       <br />&lt;/ns0:AccountDetails&gt;</font></p>
<p>There were some warnings about multiple mappings, but I didn’t find the absence of a looping functoid to be a problem.&#160; I realise this is a pretty obvious and simple mapping, but when I went looking for examples about how to solve this type of mapping, I couldn’t find much at all (including from e-books).</p>
<p>There’ll be more on BizTalk mapping and other fun stuff in some upcoming articles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2012/biztalk-2010-rollup-sequence-to-flat-file-mapping/11021/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing the Remote Desktop Security Layer</title>
		<link>http://www.sanderstechnology.com/2012/changing-the-remote-desktop-security-layer/10998/</link>
		<comments>http://www.sanderstechnology.com/2012/changing-the-remote-desktop-security-layer/10998/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 07:53:30 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Tech Meme]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Remote Desktop]]></category>
		<category><![CDATA[User Account Policies]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2012/changing-the-remote-desktop-security-layer/10998/</guid>
		<description><![CDATA[Ever wondered how to configure when you get prompted for user credentials when logging onto a remote system via Remote Desktop (Terminal Services)? Well, chances are that this might come in handy – especially fi you encounter issues which stem from an expired password (hence, the title of this article).&#160; I was prompted with a <a href='http://www.sanderstechnology.com/2012/changing-the-remote-desktop-security-layer/10998/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ever wondered how to configure when you get prompted for user credentials when logging onto a remote system via Remote Desktop (Terminal Services)?</p>
<p>Well, chances are that this might come in handy – especially fi you encounter issues which stem from an expired password (hence, the title of this article).&#160; I was prompted with a pre-connection Authentication challenge/response dialog, when I entered the correct details, it simply displayed a dialog with an “OK” and “Cancel” button and the text “&quot;You must change your password before logging on the first time.&quot;.</p>
<p>Trawling the Internet for some hints, I came across a thread on the MSDN Forums suggesting that the Security setting be changed to “RDP Security Layer” from “Negotiate”.&#160; Do do this you need to open the Terminal Services configuration, which can be done by executing the tsconfig.msc console.</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image10.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb10.png" width="653" height="385" /></a></p>
<p>Double click on the Connection:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image11.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb11.png" width="352" height="437" /></a></p>
<p>..and you can change the default Security Layer (as shown).</p>
<p>This seems to only apply to Windows Server 2008, as I could not locate a similar application on Windows 7.&#160; It may be possible to run this console on Windows 7</p>
<p>In the end, it didn’t help my specific scenario (sorry), but I did like that it changed the authentication process.&#160; For my situation, I had someone clear the password change setting on the domain account in question, then happily logged on and changed the password manually.</p>
<h2>Further Reading</h2>
<p><a title="http://social.technet.microsoft.com/Forums/en-US/winserverTS/thread/c45d8f1d-13f9-490c-9911-7ed9e7859276/" href="http://social.technet.microsoft.com/Forums/en-US/winserverTS/thread/c45d8f1d-13f9-490c-9911-7ed9e7859276/">http://social.technet.microsoft.com/Forums/en-US/winserverTS/thread/c45d8f1d-13f9-490c-9911-7ed9e7859276/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2012/changing-the-remote-desktop-security-layer/10998/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anatomy of a Phishing Scam</title>
		<link>http://www.sanderstechnology.com/2012/anatomy-of-a-phishing-scam/10993/</link>
		<comments>http://www.sanderstechnology.com/2012/anatomy-of-a-phishing-scam/10993/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 00:10:04 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Tech Meme]]></category>
		<category><![CDATA[Fake Email]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Phising]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2012/anatomy-of-a-phishing-scam/10993/</guid>
		<description><![CDATA[Today I received an e-mail which made it past Google’s Junk E-mail protection.&#160; It was sent from “Gmail Team” and titled “Google Verification”.&#160; As I’ve had to do site verifications for Analytics and Webmaster tools, I took a look at the e-mail. Within half a microsecond, I decided to compose this quick “Tech Meme”, breaking <a href='http://www.sanderstechnology.com/2012/anatomy-of-a-phishing-scam/10993/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Today I received an e-mail which made it past Google’s Junk E-mail protection.&#160; It was sent from “Gmail Team” and titled “Google Verification”.&#160; As I’ve had to do site verifications for Analytics and Webmaster tools, I took a look at the e-mail.</p>
<p>Within half a microsecond, I decided to compose this quick “Tech Meme”, breaking down all the tell tale signs of a Phishing attempt.&#160; As far as they go, this one was pretty poor – but could still trip up some unfortunate folks.</p>
<h2>Firstly, what is Phishing?</h2>
<p>According to <a href="http://en.wikipedia.org/wiki/Phishing" target="_blank">Wikipedia</a>:</p>
<blockquote><p><b>Phishing</b> is a way of attempting to acquire information such as usernames, <a href="http://en.wikipedia.org/wiki/Password">passwords</a>, and credit card details by masquerading as a trustworthy entity in an <a href="http://en.wikipedia.org/wiki/Electronic_communication">electronic communication</a>.</p>
</blockquote>
<p>Does my e-mail constitute a Phishing attempt?&#160; Check it out and see what you think.&#160; Here’s the complete message:<a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image8.png">     </p>
<p><img style="display: inline" title="image" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb8.png" width="670" height="441" /></a></p>
<p>So let’s break it down:</p>
<h2>1. The “From“ Address</h2>
<p>Although this e-mail was sent from a <a href="mailto:&ldquo;@gmail.com">“@gmail.com</a>” address (although most official Google E-mail is sent from @google.com), clearly the folks at Google would have a better reply-to email address than “customerservice.verifyinfor”</p>
<h2>2. No Branding/Google “look and feel”.&#160; </h2>
<p>Although some authentic e-mails from Google are sent in a basic format, even they carry some kind of corporate signature, like the following:</p>
<p>“© 2011 Google Inc. 1600 Amphitheatre Parkway, Mountain View, CA 94043”</p>
<p>Microsoft usually applies style sheets to their emails, most of the major banks do too.&#160; If you receive an e-mail which doesn’t look or feel right (fonts, colours, lack of legalese in the footer), chances are it’s not an authentic e-mail.</p>
<h2>3. Nature of the request</h2>
<p>There’s just no way that Google (or any other large company) will ever expect end users to fill out details in text like this.&#160; In fact, no big company or financial should ever contact their customers this way and request private information.</p>
<p>Even if they did, it would be horrible to import into their systems, and it would be very hard to validate the input text.</p>
<h2>4. Grammar and spelling mistakes.&#160; </h2>
<p>Even in this age of decaying English, most big companies tend to proof read their e-mail text.&#160; This email isn’t too bad for a phishing scam, but you likely won’t find these kind of mistakes in legitimate e-mails.<a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb9.png" width="679" height="447" /></a></p>
<p>Lastly, if you read this e-mail and thought “isn’t this information already located at accounts.google.com?” you’d be correct.&#160; </p>
<p>Why would a company re-request this information?&#160; You’ve already supplied your account and password when you logged into your account, your year of birth doesn’t change, and your name wouldn’t change that often either.</p>
<p>There’s a good chance you don’t remember the year you registered (and shouldn’t they be able to look it up?) and place of residency isn’t required.</p>
<h2>Finally..</h2>
<p>If you get an e-mail like this one from a bank, Microsoft, Apple or Google (or others like them) apply some simple logic before hitting reply.&#160; As always please <strong>be careful with your personal information.</strong></p>
<p>Your details should be as protected as your PIN number or bank account details.&#160; Don’t give the information away freely.</p>
<p>R</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2012/anatomy-of-a-phishing-scam/10993/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deploying BizTalk 2010 Assembly Dependencies</title>
		<link>http://www.sanderstechnology.com/2012/deploying-biztalk-2010-assembly-dependencies/10985/</link>
		<comments>http://www.sanderstechnology.com/2012/deploying-biztalk-2010-assembly-dependencies/10985/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 11:45:14 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Assembly Dependencies]]></category>
		<category><![CDATA[BizTalk 2010]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Lessons Learned]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2012/deploying-biztalk-2010-assembly-dependencies/10985/</guid>
		<description><![CDATA[Introduction From time to time, it is natural for us to deploy BizTalk solutions with Assembly dependencies.&#160; Usually this is because we have created helper classes (for mapping, or querying) or perhaps it reuses some common logic shared between application suites. Whatever the reason, it can be very handy to pick up all assemblies when <a href='http://www.sanderstechnology.com/2012/deploying-biztalk-2010-assembly-dependencies/10985/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h1>Introduction</h1>
<p>From time to time, it is natural for us to deploy BizTalk solutions with Assembly dependencies.&#160; Usually this is because we have created helper classes (for mapping, or querying) or perhaps it reuses some common logic shared between application suites.</p>
<p>Whatever the reason, it can be very handy to pick up <strong>all</strong> assemblies when we export the BizTalk Application from BizTalk Administration, when we use the Export MSI feature/wizard.</p>
<h2>The Problem</h2>
<p>The one drawback is that, since BizTalk requires assemblies to be GAC’d (that is, strong named and added to the Global Assembly Cache), it’s hard for a tool, like the export to MSI wizard, to know what are custom assemblies which the BizTalk assemblies rely on (that aren’t system or framework assemblies).</p>
<p>In other words, you need a way to call out the dependencies, so that the export wizard will package the entire application.&#160; The alternative would be that you would have to ensure any custom dependencies are already deployed to your (new) target environment.</p>
<h2>The Solution</h2>
<p>As you might be aware, you can view a BizTalk application’s resources (assemblies) from within BizTalk Administrator.&#160; What you may not know is that you can add “Resources” to this location.&#160; In particular, you can add (or call out) dependency assemblies.</p>
<p>Just right click in the Resources view, and select Add-&gt;Resources..</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb4.png" width="539" height="137" /></a></p>
<p>A dialog pops up and allows you to browse for the required assemblie(s).&#160; You have some options here, you can force the assemblies to overwrite, you can select if and when the chosen assemblie(s) are GAC’d (registered with the GAC), registered as COM components or made visible to COM components.</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image5.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb5.png" width="443" height="492" /></a></p>
<p>The dependencies tab allows you to quickly see if all the dependencies for a specific assembly are to be found.&#160; This will help you check and ensure your solution has everything it needs.</p>
<p>When you decide to do an “Export to MSI”, you’ll notice that it now includes any dependency resource Assemblies which you have added to your application:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb7.png" width="416" height="343" /></a></p>
<p><em>If the assembly you are adding has a dependency on another assembly that is not included in the application, the add operation will fail.</em></p>
<h2>Great, but what if I want to automate this procedure as part of an automated deployment?</h2>
<p>I’m glad you asked.&#160; Naturally, you can script commands which will accomplish this task for you.&#160; You could easily script this command, to be included in automated builds or deployments.</p>
<p><em>Note that, as a general rule, it is <strong>not</strong> advised to automatically register any assemblies in the Global Assembly Cache of a build machine/build server.</em></p>
<p>Steps to add assemblies from command line:</p>
<ol>
<li>
<p>Open a command prompt as follows: Click <strong>Start</strong>, click <strong>Run</strong>, type <strong>cmd</strong>, and then click <strong>OK</strong>.         <br /><em>         <br />Note: you may require elevated permissions to accomplish this, you’ll certainly need permissions to administer BizTalk Server as well.</em>&#160;</p>
</li>
<li>
<p>Type the following command, substituting the appropriate values, as described in the following table.</p>
</li>
</ol>
<p>Command Syntax:</p>
<p><font face="Courier New"><strong>BTSTask AddResource</strong> [<strong>/ApplicationName:</strong><em>value</em>] <strong>/Type:System.BizTalk:BizTalkAssembly </strong>[<strong>/Overwrite</strong>] <strong>/Source:</strong><em>value</em> [<strong>/Destination:</strong><em>value</em>] [<strong>/Options:GacOnAdd</strong>|<strong>GacOnInstall</strong>|<strong>GacOnImport</strong>] [<strong>/Server:</strong><em>value</em>] [<strong>/Database:</strong><em>value</em>]</font></p>
<p>Example: </p>
<p><font size="1"><font face="Courier New"><strong>BTSTask AddResource /ApplicationName:MyApplication          <br />/Type:System.BizTalk:BizTalkAssembly /Overwrite           <br />/Source:&quot;C:\BizTalk Assemblies\MyOrchestration.dll&quot;           <br />/Destination:&quot;C:\New BizTalk Assemblies\           <br /></strong><strong>MyOrchestration.dll &quot; /Server:MyDatabaseServer          <br />/Database:BizTalkMgmtDb</strong></font></font></p>
<p>The following is a complete list of options lifted from MSDN, but they approximate what you can do via the BizTalk Administrator console.</p>
<p>
<table border="2" width="697">
<tbody>
<tr>
<th width="172" align="center">Parameter </th>
<th width="521" align="center">Value </th>
</tr>
<tr>
<td width="172">
<p><strong>/ApplicationName</strong></p>
</td>
<td valign="top" width="521">
<p>Name of the BizTalk application to which to add the BizTalk assembly. If the application name is not specified, the default BizTalk application is used. If the name includes spaces, you must enclose it in double quotation marks (&quot;).</p>
</td>
</tr>
<tr>
<td width="172">
<p><strong>/Type</strong></p>
</td>
<td width="521">
<p><strong>System.BizTalk:BizTalkAssembly</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="172">
<p><strong>/Overwrite</strong></p>
</td>
<td width="521">
<p>Option to update an existing assembly. If not specified, and an assembly already exists in the application that has the same LUID as the assembly being added, the AddResource operation fails. You can view the LUIDs for the artifacts in an application by using the <a href="http://msdn.microsoft.com/en-us/library/aa560181%28v=BTS.20%29.aspx">ListApp Command</a>. If another application depends on the assembly being overwritten, the AddResource operation fails, even when this parameter is specified.</p>
</td>
</tr>
<tr>
<td valign="top" width="172">
<p><strong>/Source</strong></p>
</td>
<td width="521">
<p>Full path of the assembly file, including the file name. If the path includes spaces, you must enclose it in double quotation marks (&quot;).</p>
</td>
</tr>
<tr>
<td valign="top" width="172">
<p><strong>/Destination</strong></p>
</td>
<td width="521">
<p>Full path of the location where the assembly file is to be copied when the application is installed from the .msi file. If not provided, the assembly file is not copied to the local file system during installation. If the path includes spaces, you must enclose it in double quotation marks (&quot;).</p>
</td>
</tr>
<tr>
<td valign="top" width="172">
<p><strong>/Options</strong></p>
</td>
<td width="521">
<ul>
<li class="unordered"><strong>GacOnAdd</strong>: Specify to install the assembly to the global assembly cache (GAC) on the local computer during the AddResource operation.                 </li>
<li class="unordered"><strong>GacOnInstall</strong>: Specify to install the assembly to the GAC when the application is installed from the .msi file.                 </li>
<li class="unordered"><strong>GacOnImport</strong>: Specify to install the assembly to the GAC when the application .msi file is imported. </li>
</ul>
<p>You must separate multiple options with a comma.</p>
</td>
</tr>
<tr>
<td valign="top" width="172">
<p><strong>/Server</strong></p>
</td>
<td width="521">
<p>Name of the SQL Server instance hosting the BizTalk Management database, in the form ServerName\InstanceName,Port.</p>
<p>Instance name is only required when the instance name is different than the server name. Port is only required when SQL Server uses a port number other than the default (1433).</p>
<p>Examples:              <br />Server=MyServer               <br />Server=MyServer\MySQLServer,1533</p>
<p>If not provided, the name of the SQL Server instance running on the local computer is used.</p>
</td>
</tr>
<tr>
<td valign="top" width="172">
<p><strong>/Database</strong></p>
</td>
<td width="521">
<p>Name of the BizTalk Management database. If not specified, the BizTalk Management database running in the local instance of SQL Server is used.</p>
</td>
</tr>
</tbody>
</table>
<h5></h5>
<h1>Further Reading</h1>
<p>How to Add a BizTalk Assembly to an Application    <br /><a title="http://msdn.microsoft.com/en-us/library/aa558703%28BTS.20%29.aspx" href="http://msdn.microsoft.com/en-us/library/aa558703%28BTS.20%29.aspx">http://msdn.microsoft.com/en-us/library/aa558703%28BTS.20%29.aspx</a></p>
<p>More on BizTalk Deployments    <br /><img alt="" src="https://mail.google.com/mail/images/cleardot.gif" /><a href="http://social.msdn.microsoft.com/Forums/en-US/biztalkgeneral/thread/1e6cd3a9-42d1-42b8-911c-c3f7bdc35145/">http://social.msdn.microsoft.com/Forums/en-US/biztalkgeneral/thread/1e6cd3a9-42d1-42b8-911c-c3f7bdc35145/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2012/deploying-biztalk-2010-assembly-dependencies/10985/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schema Fun with BizTalk Server 2010 (and more!)</title>
		<link>http://www.sanderstechnology.com/2012/schema-fun-with-biztalk-server-2010-and-more/10978/</link>
		<comments>http://www.sanderstechnology.com/2012/schema-fun-with-biztalk-server-2010-and-more/10978/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 06:29:32 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[BizTalk]]></category>
		<category><![CDATA[BizTalk Server 2010]]></category>
		<category><![CDATA[Schema]]></category>
		<category><![CDATA[Transforms]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2012/schema-fun-with-biztalk-server-2010-and-more/10978/</guid>
		<description><![CDATA[Introduction As I alluded to at the very end of 2011, I’ve been spending more and more time with BizTalk 2010. It’s been a little while since I’ve had to support/build/maintain BizTalk artefacts, but it doesn’t take long to reacquire “the groove”. To gently thrust you into the dark underbelly of the land of BizTalk <a href='http://www.sanderstechnology.com/2012/schema-fun-with-biztalk-server-2010-and-more/10978/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h1>Introduction</h1>
<p>As I alluded to at the very end of 2011, I’ve been spending more and more time with BizTalk 2010. It’s been a little while since I’ve had to support/build/maintain BizTalk artefacts, but it doesn’t take long to reacquire “the groove”.</p>
<p>To gently thrust you into the dark underbelly of the land of BizTalk development, I thought I’d start off by exploring some fairly basic BizTalk 101 type experiences (and solutions!).&#160; This article focuses on generic issues with XML schemas, with an eye to BizTalk’s usage of said schema.</p>
<p>Sadly, some of what you might read here (and later) might smack a tad of ‘<em>What?&#160; You didn’t know that?”,</em> but I’m willing to swallow some pride if it helps out other Architects and Programmers.</p>
<h2>What you need (to follow along)</h2>
<p>This article is (IMHO) decent enough for the generalist (non-BizTalk specialist) and especially may be handy for those unfamiliar in working with XML schemas.</p>
<p>There is a big part where I’m playing with BizTalk’s Developer Tools (in Visual Studio 2010), so if you’d like to give it a go, I’d suggest you pick up a copy of <a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=24433" target="_blank">BizTalk Server 2010 Developer Edition</a> (<a href="http://www.microsoft.com/biztalk/en/us/developer.aspx" target="_blank">click here</a> for more info on this edition of BizTalk), which – I believe – you need to have to install the developer tools.</p>
<p>If I write subsequent article on BizTalk, the BizTalk developer tools will likely play a significant role, so it might be worth investigating.&#160; As always, it’s worth bookmarking <a href="http://msdn.microsoft.com/en-us/biztalk/aa937640" target="_blank">the BizTalk Development Center link</a>.</p>
<h2>The Joys of Schema</h2>
<p>If you know anything about BizTalk, you’ll know that it’s all about the schemas. Everything ends up mapping to a document schema type whether it’s inbound or outbound. Schemas (XSD) can be an acquired taste, especially if you’ve been off doing something more exciting.</p>
<p>Last month, handwritten schemas tripped me up quite a bit. I was used to using Wizards and Adapters to generate a lot of the schemas for me, so when I went to design some basic input and output schemas, I encountered some “fun” issues.</p>
<h3>Something funny happened…</h3>
<p>Now, I was putting together some very basic sample schema to use as an example for demonstrating a really neat technique with maps (transforms).</p>
<p>Just in case someone else encounters this (or, like me, found it mildly amusing) I thought I’d document some cause and effect of why you might get some head scratching error messages when designing in Visual Studio 2010 with the BizTalk designer.</p>
<p>Given the following (<strong>flawed</strong>) schema, which I built within Visual Studio:</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;xs:schema xmlns=&quot;http://Sandbox.InputSchema&quot; xmlns:b=&quot;http://schemas.microsoft.com/BizTalk/2003&quot; targetNamespace=&quot;http://Sandbox.InputSchema&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;xs:element name=&quot;Root&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:sequence&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:element minOccurs=&quot;2&quot; maxOccurs=&quot;3&quot; name=&quot;Customer&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:sequence&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:element name=&quot;Address&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:attribute name=&quot;Street&quot; type=&quot;xs:string&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:attribute name=&quot;State&quot; type=&quot;xs:string&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:attribute name=&quot;Country&quot; type=&quot;xs:string&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:element&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:sequence&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:attribute name=&quot;ID&quot; type=&quot;xs:integer&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:attribute name=&quot;FirstName&quot; type=&quot;xs:string&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:attribute name=&quot;Surname&quot; type=&quot;xs:string&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:element&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:sequence&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;/xs:element&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;/xs:schema&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"></font></span></p>
<p>Which, when loaded in the BizTalk Schema Designer looks like this:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image002.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image002_thumb.jpg" width="686" height="362" /></a></p>
<p>Has an unfortunately obvious flaw if you consider I was expecting the schema to facilitate the following format of XML data:</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;ns0:Root xmlns:ns0=&quot;http://Sandbox.InputSchema&quot;&gt;</font><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;Customer ID=&quot;100&quot; FirstName=&quot;FirstName_1&quot; Surname=&quot;Surname_2&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;Address Street=&quot;12 Jump Street&quot; State=&quot;NSW&quot; Country=&quot;Australia&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;/Customer&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;Customer ID=&quot;101&quot; FirstName=&quot;FirstName_1&quot; Surname=&quot;Surname_2&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;Address Street=&quot;22 Fish Street&quot; State=&quot;QLD&quot; Country=&quot;Australia&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;/Customer&gt;</font><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;/ns0:Root&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"></font></span></p>
<p>In other words, I was expecting to store multiple “Customer” elements in my XML document.</p>
<h3>Debugging</h3>
<p>When I loaded the document and tested it in Visual Studio 2010, I received the following, very weird error message: “The element ‘Root’ in namespace ‘http://Sandbox.InputSchema’ has invalid child element ‘Customer’.” – huh?</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image004.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image004_thumb.jpg" width="657" height="189" /></a></p>
<p>The problem, I thought, might be related to not expressly prefixing the namespace directive to the child element, so I made some edits.</p>
<p>This resulted in an even more ambiguous error message, funny even:</p>
<p>“The element ‘Root’ in namespace ‘http://Sandbox.InputSchema’ has invalid child element ‘Customer’ in namespace ‘http://Sandbox.InputSchema’. List of possible elements expected: ‘Customer’.” </p>
<p>or, in generic terms: </p>
<p>“The element ‘&lt;element&gt;’ in namespace ‘&lt;namespace&gt;’ has invalid child element ‘&lt;child element&gt;’ in namespace ‘&lt;namespace&gt;’. List of possible elements expected: ‘&lt;child element&gt;’.”</p>
<p>WTF?</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image006.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image006_thumb.jpg" width="683" height="143" /></a>     <br /><em><font size="1">You may have to squint to read the text…</font></em></p>
<p>At this point, I felt like I was going backwards. So I undid my changes and took a look at the schema definition – which, upon second inspection was clearly wrong.</p>
<h3>The Solution</h3>
<p>See if you can spot the difference?</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image008.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image008_thumb.jpg" width="686" height="371" /></a></p>
<p>My mistake was in not declaring a sequence after the root element. Thus rectified, my XML now matched the fixed schema, and I was able to continue on my merry way.</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image009.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image009_thumb.jpg" width="274" height="247" /></a></p>
<h2>Filtering in a Transform/Map</h2>
<p>This all brings us back to the original intention of my article – to highlight the use of functoids for filtering multiple nodes in a transform.</p>
<p>Given that we want to transform our input schema (from before) into another format, with filtered data, here’s the schema for the output:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image010.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image010_thumb.jpg" width="415" height="317" /></a></p>
<h3>The Mapping</h3>
<p>We can construct a map which assigns the fields we want per the following example:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image012.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image012_thumb.jpg" width="669" height="312" /></a>     <br /><em><font size="1">A basic map</font></em></p>
<p>Now, if we wanted to only take Customers who live in the state of New South Wales, we need to validate each element in the input XML recursively.</p>
<h3>A Functoid for all occasions</h3>
<p>The easiest means is to use a equality functoid, in this example I’ve used an equals functoid, as per below. You must still map the field directly to the output schema, but also to the functoid – which is, in turn, mapped to the logical root of the target (per the example above).</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image013.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image013_thumb.jpg" width="355" height="389" /></a></p>
<p>When the functoid returns a true value, the element is copied to the output. If the result is fale, the entire element (children etc) are skipped. Thus, from the following input XML:</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;ns0:Root xmlns:ns0=&quot;http://Sandbox.InputSchema&quot;&gt;</font><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;Customer ID=&quot;100&quot; FirstName=&quot;FirstName_1&quot; Surname=&quot;Surname_2&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;Address Street=&quot;12 Jump Street&quot; State=&quot;NSW&quot; Country=&quot;Australia&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;/Customer&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;Customer ID=&quot;101&quot; FirstName=&quot;FirstName_1&quot; Surname=&quot;Surname_2&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;Address Street=&quot;22 Fish Street&quot; State=&quot;QLD&quot; Country=&quot;Australia&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;/Customer&gt;</font><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;/ns0:Root&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"></font></span></p>
<p>When run through this map (using trusty ‘Test Map’ functionality), will generate the following output, filtering out that pesky Queensland (QLD) customer:</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;ns0:Root xmlns:ns0=&quot;http://Sandbox.OutputSchema&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;Address Street=&quot;12 Jump Street&quot; State=&quot;NSW&quot; Country=&quot;Australia&quot; CustomerID=&quot;100&quot; /&gt; </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;/ns0:Root&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"></font></span></p>
<h2>Helpful Support in Visual Studio 2010</h2>
<p>Before you start despairing about schema development and BizTalk maps, there are a bunch of very helpful tools built into Visual Studio 2010 (and prior versions).</p>
<h3>Generating Schema Instances</h3>
<p>Given you have Schema files in your project, you can right click them and select “Generate Instance”. This will create an XML file using intelligent default values, according to the schema definition. These files can be modified and used to test out other artefacts who use this schema.</p>
<h3>Validating Schema Instances</h3>
<p>If you want to test if a particular XML file is valid, you can do the reverse – by clicking on the schema properties, you can set the “input XML” for a given schema. Then, when right clicking on the Schema in Solution Explorer, you can select “Validate Instance”. This will highlight any issues with your schema.</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image014.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image014_thumb.jpg" width="203" height="244" /></a></p>
<h3>Testing a Map/Transform</h3>
<p>Once you have some valid XML for your schema, you can then use it as test input data for various things including maps.</p>
<p>The following shows how to establish test data parameters for a map within Visual Studio 2010:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image016.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image016_thumb.jpg" width="244" height="179" /></a></p>
<p>When you have configured a map to use a specified XML input, you can then right click on the map (in Solution Explorer) and select “Test Map”.</p>
<h1>Other Options – Xml Schema/Data Type Utility</h1>
<p>A handy note for future reference – if you have an XML structure in mind, but (like me) you are rusty with your XSD designing skillz, there’s another way forward which may prove to be better.</p>
<p>There is a tool which helps you work with XML and XSD document formats, and it ships by default with a number of Microsoft products and SDKs, it is called “Xml Schemas/DataTypes support utility” or XSD.exe.</p>
<p><b>Important Disclaimer: </b>In nearly almost <u>all circumstances</u>, it is considered a better practice to produce or design the XML schema first. Generating a schema from XML data can be fraught with peril, especially if your XML sample doesn’t accurately reflect the full spectrum of supported formats.</p>
<p>For example, min/max occurrences, type lengths and other constraints, vague data types (where the type or precision is “guessed”), elements supported by the schema which are not required &#8211; and thus missing from your sample XML &#8211; to name but a few.</p>
<h2>Where Do I Find This Tool?</h2>
<p>Chances are that you have it already. I’ve located it installed in the following locations (check the (x86) folder as well if you are on a 64 bit machine):</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">Directory of C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin</font></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">Directory of C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin</font></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">Directory of C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools</font></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">Directory of C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\x64</font></font></p>
<h2>What does it do?</h2>
<p>Keeping in mind that this utility was really meant for the days of evil DataSets, it still can be quite useful.</p>
<p>Using the following (poor) sample XML structure:    <br /><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">         <br />&lt;?xml version=”1.0” encoding=”utf-8”?&gt;           <br /></font></font></span><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;Country Name=&quot;Australia&quot;&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;State Name=&quot;NSW&quot;&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 2"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;Capital Name=&quot;Sydney&quot;/&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/State&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;State Name=&quot;QLD&quot;&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 2"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;Capital Name=&quot;Brisbane&quot;/&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/State&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;State Name=&quot;WA&quot;&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 2"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;Capital Name=&quot;Perth&quot;/&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/State&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;State Name=&quot;TAS&quot;&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 2"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;Capital Name=&quot;Hobart&quot;/&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/State&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;State Name=&quot;VIC&quot;&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 2"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;Capital Name=&quot;Melbourne&quot;/&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 11pt">&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/State&gt;          <br /></font></font></span><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;/Country&gt;</font></font></span></p>
<p>You can use the XSD.exe utility to generate an approximation of the schema, like so:</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin&gt;xsd Input.xml</font></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">Microsoft (R) Xml Schemas/DataTypes support utility</font></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">[Microsoft (R) .NET Framework, Version 2.0.50727.3038]</font></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">Copyright (C) Microsoft Corporation. All rights reserved.</font></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">Writing file &#8216;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\Input.xsd&#8217;.</font></font></p>
<p>Which would produce the following output:</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;xs:schema id=&quot;NewDataSet&quot; xmlns=&quot;&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:msdata=&quot;urn:schemas-microsoft-com:xml-msdata&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;xs:element name=&quot;Country&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:sequence&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:element name=&quot;State&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:sequence&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:element name=&quot;Capital&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:attribute name=&quot;Name&quot; type=&quot;xs:string&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:element&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:sequence&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:attribute name=&quot;Name&quot; type=&quot;xs:string&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:element&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:sequence&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:attribute name=&quot;Name&quot; type=&quot;xs:string&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;/xs:element&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;xs:element name=&quot;NewDataSet&quot; msdata:IsDataSet=&quot;true&quot; msdata:UseCurrentLocale=&quot;true&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;xs:element ref=&quot;Country&quot; /&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 11pt">&lt;/xs:choice&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160;&#160; </font></span><font style="font-size: 11pt"><span style="mso-spacerun: yes">&#160;</span>&lt;/xs:complexType&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 11pt">&#160; </font></span><font style="font-size: 11pt">&lt;/xs:element&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">&lt;/xs:schema&gt;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"></font></span></p>
<p>Now, given I mentioned that bit about the DataSet support.. You’ll need to remove the element called “NewDataSet”. This is included because the utility assumes you want to generate a schema for use with DataSets.</p>
<p>Removing the element, renders a nice XSD in Visual Studio:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image018.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image018" border="0" alt="clip_image018" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image018_thumb.jpg" width="244" height="132" /></a>     </p>
<h3>But wait.. There’s more</h3>
<p>Given a valid XSD schema, you can now use the same utility (isn’t it wonderful?) to generate valid C# classes by using the following syntax:</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin&gt;xsd Input.xsd /c</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">Microsoft (R) Xml Schemas/DataTypes support utility</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">[Microsoft (R) .NET Framework, Version 2.0.50727.3038]</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">Copyright (C) Microsoft Corporation. All rights reserved.</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: "><font face="Courier New"><font style="font-size: 11pt">Writing file &#8216;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\Input.cs&#8217;.          <br /></font></font></span></p>
<p>The result of executing this command produces the following classes (which you could now serialize into and out of XML):</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image019.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image019" border="0" alt="clip_image019" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/clip_image019_thumb.jpg" width="582" height="221" /></a></p>
<h1>Summary</h1>
<p>You may not be able to teach a dog new tricks, but I’m willing to bet he remembers a bunch of old ones! </p>
<p>Although I’m a bit rusty, I’m able to overcome obstacles reasonably quickly. This article might not make me look like Einstein, but I thought I’d write up some of my experiences in the hope it helps others.</p>
<p>We’ve only just touched the tip of the iceberg with BizTalk 2010. The development environment is challenging and prickly (which makes for great sources of inspiration for blog articles) so you can be sure there will be more here soon, so check back!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2012/schema-fun-with-biztalk-server-2010-and-more/10978/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server 2012 Release Candidate 0</title>
		<link>http://www.sanderstechnology.com/2012/sql-server-2012-release-candidate-0/10953/</link>
		<comments>http://www.sanderstechnology.com/2012/sql-server-2012-release-candidate-0/10953/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 06:20:00 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Database Magic]]></category>
		<category><![CDATA[Pre-Release]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[RC0]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server 2012]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2012/sql-server-2012-release-candidate-0/10953/</guid>
		<description><![CDATA[Introduction In December 2011, Microsoft released an early Release Candidate (RC) of SQL Server 2012 (formerly known as codename Denali). There are a bunch of new things in SQL Server 2012 – here’s a list of just a few: Master Data Services Reporting Services PowerPivot for SharePoint Data Quality Services (and Client) Stronger ties to <a href='http://www.sanderstechnology.com/2012/sql-server-2012-release-candidate-0/10953/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h1>Introduction</h1>
<p>In December 2011, Microsoft released an early Release Candidate (RC) of SQL Server 2012 (formerly known as codename Denali).</p>
<p>There are a bunch of new things in SQL Server 2012 – here’s a list of just a few:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ff929136%28v=SQL.110%29.aspx" target="_blank">Master Data Services</a> </li>
<li>Reporting Services PowerPivot for SharePoint </li>
<li><a href="http://msdn.microsoft.com/en-us/library/ff877917%28v=SQL.110%29.aspx" target="_blank">Data Quality Services</a> (and Client) </li>
<li>Stronger ties to Azure/Cloud </li>
</ul>
<p>To find out more about what is coming in SQL Server 2012 check out the following “<a href="http://social.technet.microsoft.com/wiki/contents/articles/3783.aspx" target="_blank">What’s New?”</a> page </p>
<h1>Downloading SQL Server 2012 RC 0</h1>
<p>I’ve found the easiest way to proceed with the RC0 is to obtain a DVD .iso (image) of the whole kit, otherwise, you can download it in component parts to keep your download footprint minimal.</p>
<p>The following location is the “correct” download link: <a title="http://www.microsoft.com/download/en/details.aspx?id=28145" href="http://www.microsoft.com/download/en/details.aspx?id=28145">http://www.microsoft.com/download/en/details.aspx?id=28145</a>&#160;<strong>or</strong> you can just go directly to the beta experience website here: <a title="http://www.microsoft.com/betaexperience/pd/SQLDCTP3CTA/enus/" href="http://www.microsoft.com/betaexperience/pd/SQLDCTP3CTA/enus/">http://www.microsoft.com/betaexperience/pd/SQLDCTP3CTA/enus/</a></p>
<h1>Installing SQL Server 2012 RC 0</h1>
<p>SQL Server, in recent years, has had one of the best setup and installation experiences of any Microsoft product on the market.&#160; Well, based on y experience with the 2012 RC 0 release, this is getting a little more complicated.</p>
<p>The next few screenshots will guide you through a fairly straightforward configuration, using the latest release.</p>
<h2>Installation Screenshots</h2>
<p>1. Execute the installation package    <br />2. In the SQL Server Installation Center, select the Installation option     <br />3. From here, jump right in and click on “..new installation”     <br />4. You’ll get all the prerequisite checks and loading of setup files, just proceed as you would with a prior     <br />&#160;&#160;&#160; edition of SQL Server     <br />5. Once the main installer kicks in (you passed all the prerequisite checks etc), you’ll get to the intro page    <br />6. Click through to the licensing page – note we’ll keep it on Evaluation: </p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/0-2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="0-2" border="0" alt="0-2" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/0-2_thumb.jpg" width="456" height="343" /></a></p>
<p>7. Next, we’re going to select the first option (feature installation):</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/0-3.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="0-3" border="0" alt="0-3" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/0-3_thumb.jpg" width="455" height="342" /></a></p>
<p>8. In the feature selection page, I’m selecting all features, but you should select just what you’re going to want    <br />&#160;&#160;&#160; to evaluate:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/0-4.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="0-4" border="0" alt="0-4" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/0-4_thumb.jpg" width="455" height="343" /></a></p>
<p>9. Skipping ahead through some screens now (they are unchanged from 2008 R2), the Server Configuration page has changed, requires you to individually set service accounts.</p>
<p><em><font size="2"><strong>Best Practice</strong>: Use a different account for each service        <br /></font></em><em><font size="2"><strong>Best Practice II:</strong> In a domain environment, if you wish to use Kerberos, ensure you use a Domain account for the service identity, and ensure the proper ADSI settings are set</font></em></p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/0-5.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="0-5" border="0" alt="0-5" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/0-5_thumb.jpg" width="458" height="344" /></a></p>
<p>10. Assign some user accounts as System Admins.&#160; I always assign the local machine admin (in non-Production environments) and a Domain Admin (in a Domain environment) so that we don’t get accidentally locked out.</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/1-1.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1-1" border="0" alt="1-1" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/1-1_thumb.jpg" width="461" height="347" /></a></p>
<p>11. Same procedure for Analysis Services (if applicable):</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/1-2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1-2" border="0" alt="1-2" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/1-2_thumb.jpg" width="463" height="348" /></a></p>
<p>12. Reporting Services has changed a little since 2008 R2, you have a few options for configuring native mode or SharePoint Integrated mode.&#160; The native configuration is handy if you don’t have any exotic configuration requirements:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/3.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="3" border="0" alt="3" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/3_thumb.jpg" width="469" height="353" /></a></p>
<p>13. The Distributed Registry Controller (optional) is new to 2012.&#160; You can <strong><u>only assign user accounts</u></strong> (not groups).&#160; If you accidentally add a group, it’ll complain – and then (in my experience) crash..</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/4.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="4" border="0" alt="4" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/4_thumb.jpg" width="467" height="351" /></a></p>
<p>13.1. Oops, a soft crash when trying to remove the offending group (best to avoid this situation):</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2" border="0" alt="2" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/2_thumb.jpg" width="478" height="397" /></a></p>
<p>14. If you’ve chosen it, the Distributed Replay client needs a Controller name:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/5.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="5" border="0" alt="5" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/5_thumb.jpg" width="469" height="353" /></a></p>
<p>15. Finally, assuming you’ve accepted most of the defaults, you may arrive at the summary screen:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/6.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="6" border="0" alt="6" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/6_thumb.jpg" width="472" height="355" /></a></p>
<p>16. When you are happy, you can kick off the install.&#160; It may take a while, if you’ve selected a number of features.&#160; Finally, if all goes to plan, you hopefully will end up with a success:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb.png" width="479" height="360" /></a></p>
<p>..and it’s probably time for a reboot.&#160; </p>
<h1>Post-Install Sanity Check</h1>
<p>After the system has restarted, we can check out all the new stuff installed:</p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb1.png" width="291" height="343" /></a></p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb2.png" width="431" height="287" /></a></p>
<p><a href="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2012/01/image_thumb3.png" width="436" height="328" /></a></p>
<h1></h1>
<h1>Summary</h1>
<p>Well, this was a lesson in patience from my perspective.&#160; Whilst nowhere near as challenging of some other products, there are a few new things to consider when installing SQL Server 2012.&#160; </p>
<p>As always, it helps to read the installation guide.&#160; There are a number of new changes this time around, so even if you’ve done plenty of SQL Server 2008 installs, it might pay to do a quick skim of the install material first.</p>
<p>Lastly, as always, it pays to properly plan your infrastructure.&#160; I’m usually installing into sandboxes, so what I’ve presented here is by no means what I’d recommend for a production system.&#160; If you are planning a production system with a pre-release edition, all power to you (brave).</p>
<p>Please always keep these issues in mind when planning your SQL/Infrastructure:</p>
<ul>
<li>Disaster Recovery,</li>
<li>Fault Tolerance,</li>
<li>Availability and Scale,</li>
<li>Persisted Storage requirements,</li>
<li>Physical hardware limitations, and,</li>
<li>Backup <strong>and test</strong> your backup strategy!</li>
</ul>
<h1>Further Reading</h1>
<p><a href="http://msdn.microsoft.com/en-us/library/hh231699%28v=sql.110%29.aspx" target="_blank">Tutorials and Samples for SQL Server 2012 RC 0</a></p>
<p><a href="http://msdn.microsoft.com/en-us/data/gg427686" target="_blank">Microsoft SQL Server Data Tools</a> (SSDT)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2012/sql-server-2012-release-candidate-0/10953/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Have you met&#8230;&#8230;&#8230; BizTalk?</title>
		<link>http://www.sanderstechnology.com/2011/have-you-met-biztalk/10918/</link>
		<comments>http://www.sanderstechnology.com/2011/have-you-met-biztalk/10918/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 04:04:35 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[BizTalk]]></category>
		<category><![CDATA[BizTalk 2010]]></category>
		<category><![CDATA[Orchestrations]]></category>
		<category><![CDATA[Transforms]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2011/have-you-met-biztalk/10918/</guid>
		<description><![CDATA[Hi Everyone, Well, it’s nearly the end of the year 2011, and hasn’t it been a doozy?&#160; I don’t know about you, but my year has been haywire, to say the least.&#160; I started the year living in China, moved back to Australia, set up in Sydney and then finished the year in Canberra (the <a href='http://www.sanderstechnology.com/2011/have-you-met-biztalk/10918/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Hi Everyone,</p>
<p>Well, it’s nearly the end of the year 2011, and hasn’t it been a doozy?&#160; I don’t know about you, but my year has been haywire, to say the least.&#160; I started the year living in China, moved back to Australia, set up in Sydney and then finished the year in Canberra (the capital of Australia).</p>
<p>With all that going on, you’d think I’d be hard pressed to find time to write anything substantiative.&#160; Of course, you’d be right.&#160; Therefore, I’m aiming to write at least one more article of value before the year is out.&#160; Since the bulk of the work I did this month was BizTalk related, I’m going to write a little bit about some problems I had to solve with BizTalk 2010.</p>
<p>I realise that I had previous written about a few other topics I wanted to cover off.. and I will.. but for now, BizTalk is the most convenient topic, so please bear with me <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.sanderstechnology.com/wp-content/uploads/2011/12/wlEmoticon-smile.png" /></p>
<p>There’s also quite a lot to look forward to in 2012.&#160; For one thing, we’re expecting the next version of SQL Server (codename Denali) to drop – that should be a biggie – and there are the usual soft spots (WCF, Web Services, IIS) and so on.</p>
<p>Hopefully, you’ll see my BizTalk article before the new year, but in the meantime.. thanks for reading this year and all the best for 2012!</p>
<p>/R</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2011/have-you-met-biztalk/10918/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lego Large Hadron Collider: ATLAS detector</title>
		<link>http://www.sanderstechnology.com/2011/lego-large-hadron-collider/10914/</link>
		<comments>http://www.sanderstechnology.com/2011/lego-large-hadron-collider/10914/#comments</comments>
		<pubDate>Sun, 25 Dec 2011 09:44:24 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Tech Meme]]></category>
		<category><![CDATA[Awesome]]></category>
		<category><![CDATA[Lego]]></category>

		<guid isPermaLink="false">http://www.sanderstechnology.com/2011/lego-large-hadron-collider/10914/</guid>
		<description><![CDATA[This is almost too cool for school – a Physicist at a university in Denmark has put together a scale replica of a part of CERN’s Large Hadron Collider – the ATLAS detector. Apparently it took him 81 hours to recreate a 1:50 scale model of the detector, using Lego bricks.&#160; How awesome is that?&#160; <a href='http://www.sanderstechnology.com/2011/lego-large-hadron-collider/10914/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.geek.com/articles/geek-cetera/the-large-hadron-collider-has-been-recreated-in-lego-20111223/" target="_blank"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sanderstechnology.com/wp-content/uploads/2011/12/image1.png" width="337" height="254" /></a></p>
<p>This is almost too cool for school – a Physicist at a university in Denmark has put together a scale replica of a part of CERN’s Large Hadron Collider – the ATLAS detector.</p>
<p>Apparently it took him 81 hours to recreate a 1:50 scale model of the detector, using Lego bricks.&#160; How awesome is that?&#160; I wonder how long it would take to build a model of the whole LHC?</p>
<p>[ <a title="http://www.geek.com/articles/geek-cetera/the-large-hadron-collider-has-been-recreated-in-lego-20111223/" href="http://www.geek.com/articles/geek-cetera/the-large-hadron-collider-has-been-recreated-in-lego-20111223/">http://www.geek.com/articles/geek-cetera/the-large-hadron-collider-has-been-recreated-in-lego-20111223/</a> ]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sanderstechnology.com/2011/lego-large-hadron-collider/10914/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

