<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Bryan Bolling's Blog</title><link>http://blogs.msdn.com/b/bryanbolling/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Windows Azure VM Development: Part 1</title><link>http://blogs.msdn.com/b/bryanbolling/archive/2013/01/26/windows-azure-vm-development-part-1.aspx</link><pubDate>Sat, 26 Jan 2013 22:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10388587</guid><dc:creator>Bryan Bolling [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bryanbolling/rsscomments.aspx?WeblogPostID=10388587</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bryanbolling/commentapi.aspx?WeblogPostID=10388587</wfw:comment><comments>http://blogs.msdn.com/b/bryanbolling/archive/2013/01/26/windows-azure-vm-development-part-1.aspx#comments</comments><description>&lt;p class="paragraph"&gt;With the release of the new Windows RT devices I'm interested to see how much of my development work I can do from these new devices. I'm using Windows Azure to host my virtual machine and have run into a few pitfalls along the way. Hopefully this post will help some of you to avoid these pitfalls.&amp;nbsp;I have enclosed links to additional resources at the end of this blog post.&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #2e74b5;"&gt;&lt;span style="font-family: Calibri Light;"&gt;Create and Upload a Management Certificate&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p class="paragraph"&gt;The first step in this process is to create a management certificate. You need this certificate to authenticate some of the tasks you perform with Windows Azure. One of these tasks is uploading a VHD. For the purposes of this blog post I won&amp;rsquo;t go into detail here on the steps to take to create the management certificate. Please review the Additional Resources section at the end of this blog post and you will find a link to an MSDN article on creating Certificates. Once you have created the certificate you&amp;rsquo;ll have to create an account with Windows Azure. Some MSDN subscription levels allow you to have a free Windows Azure account. Please check your MSDN subscription to see what benefits you have.&lt;/p&gt;
&lt;p class="paragraph"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/5516.WindowsAzureVMDev0_5F00_1.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/5516.WindowsAzureVMDev0_5F00_1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 1: Windows Azure&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p class="paragraph"&gt;Once your Azure account has been created login to your account and click the Portal link at the top right of your browser window. Once you are in your management portal click the New button at the bottom left to create your storage account.&lt;/p&gt;
&lt;p class="paragraph"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/1263.WindowsAzureVMDev0_5F00_2.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/1263.WindowsAzureVMDev0_5F00_2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 2: Create storage account&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Enter the URL of your storage account and the region where your storage account will be stored. The Geo-Replication checkbox is checked by default. You can leave this option on and your data will be replicated to a secondary location. In the case of a failure your data will fail over to this secondary location. If you wait until later to enable Geo-Replication there will be a data transfer charge fee.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/5125.WindowsAzureVMDev0_5F00_3.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/5125.WindowsAzureVMDev0_5F00_3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 3: Upload a management certificate&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Once your storage account is created you&amp;rsquo;ll need to upload the management certificate. In the Windows Azure Management Portal click the Settings link which is the last option at the bottom of the left side menu. Once on the Settings page click the Upload menu option which is in the black bar at the bottom of the window. You will see the Upload a management certificate window as shown above. Browse to the certificate and click the check mark button to upload it to Windows Azure. Once the certificate is uploaded you&amp;rsquo;ll see it displayed under the Management Certificates section of the Settings page. I recommend you open Notepad or other utility and copy the Subscription Identifier and Thumbprint. You will need one or both of these later to create the connection to your storage account &amp;nbsp;(depending on which tool you choose to upload your VHD).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #2e74b5;"&gt;&lt;span style="font-family: Calibri Light;"&gt;Prepare your VHD&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p class="paragraph"&gt;I've been&amp;nbsp;using Hyper-V on my Windows 8 laptop to run the VM locally.&amp;nbsp;Hyper-V creates VMs that have a ".vhdx" file extension. These&amp;nbsp;VHDX files aren't compatible with Windows Azure. You'll have to first convert the&amp;nbsp;VHDX to a VHD.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p class="paragraph"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/1586.WindowsAzureVMDev1.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/1586.WindowsAzureVMDev1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 4: Locate Virtual Hard Disk&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Launch the Hyper-V Manager, select the virtual machine you want to upload in Windows Azure, and select the Edit Disk action from the Actions pane. Select the Next button from the first screen and you will see the &amp;ldquo;Locate Virtual Hard Disk&amp;rdquo; window as shown above. Click the Browse button, navigate to the VHDX file in your file system and click the Open button. Once back on this screen click the Next button.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/1541.WindowsAzureVMDev2.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/1541.WindowsAzureVMDev2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 5: Choose Action&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Select the Convert radio button and click the Next button.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/7282.WindowsAzureVMDev3.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/7282.WindowsAzureVMDev3.png" alt="" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 6: Convert Virtual Hard Disk&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Select the VHD radio button and click the Next button.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/2630.WindowsAzureVMDev4.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/2630.WindowsAzureVMDev4.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 7: Virtual Hard Disk Type&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Select the Fixed Size radio button and click the Next button. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" bgcolor="yellow" width="779"&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Note: It is technically possible to choose the dynamically expanding disk type and upload it successfully to Windows Azure. You will NOT be able to create a disk image in Windows Azure if the VHD you uploaded is dynamically expending. You must choose the fixed size disk type.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/2061.WindowsAzureVMDev5.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/2061.WindowsAzureVMDev5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 8: Select VHD Name and Location&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Click the Browse button to select the name and location of the desired VHD that will result from this operation. Click the Next button to continue.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/8032.WindowsAzureVMDev6.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/8032.WindowsAzureVMDev6.png" alt="" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 9: Completing the Edit Virtual Hard Disk Wizard&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Review the information in the description and click Finish.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/7563.WindowsAzureVMDev7.png"&gt;&lt;img style="border: 0px currentColor;" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/7563.WindowsAzureVMDev7.png" alt="" width="250" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 10: Editing the virtual disk&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;The virtual hard disk conversion process is underway. Once this is complete you will have a VHD that can be uploaded to Windows Azure.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #2e74b5;"&gt;&lt;span style="font-family: Calibri Light;"&gt;Upload the VHD&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;There are several tools that can be used to upload your VHD to Windows Azure. The tool you will hear the most about is the CSUpload tool. There are other GUI tools that can be used to view your Windows Azure Storage. A comprehensive list has been posted in a blog by the Windows Azure Storage Team. For this example I am using the ClumsyLeaf CloudXplorer v1. Here I&amp;rsquo;ll open up CloudXplorer and setup my Windows Azure Storage account.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/5670.WindowsAzureVMDev8.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/5670.WindowsAzureVMDev8.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 11: CloudXplorer&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;From the CloudXplorer main window click File --&amp;gt; Accounts to open the Manage Accounts window.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/3286.WindowsAzureVMDev9.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/350x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/3286.WindowsAzureVMDev9.png" alt="" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 12: Manage Accounts&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;By default you should see a blank window in the Manage Accounts window. In the Manage Accounts window click the New button. A menu will drop down from the new button with two options: Windows Azure Account, and Local DevStorage Account. Here we&amp;rsquo;ll choose the new Windows Azure Account option.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/6428.WindowsAzureVMDev9_5F00_5.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/350x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/6428.WindowsAzureVMDev9_5F00_5.png" alt="" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 13: Windows Azure Account&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Next you&amp;rsquo;ll have to enter your account details for your Windows Azure account. Once your information is entered correctly click the OK button. You should be taken back to the Manage Accounts window where you should see your new Windows Azure storage account added. Click the OK button to close the Manage Accounts button.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/8664.WindowsAzureVMDev9_5F00_7.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/8664.WindowsAzureVMDev9_5F00_7.png" alt="" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 14: CloudXplorer&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Once you&amp;rsquo;re back at the main CloudXplorer window, click the Upload page blob button on the toolbar as seen above.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/3730.WindowsAzureVMDev10.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/3730.WindowsAzureVMDev10.png" alt="" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 15: Upload as Page BLOB&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;In the Upload as page blob window browse and select the VHD you want to upload and click the Open button.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/8306.WindowsAzureVMDev11.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/350x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/8306.WindowsAzureVMDev11.png" alt="" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #44546a;"&gt;&lt;span style="font-family: Calibri;"&gt;Figure 16: Uploading&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Your VHD is now uploading and will be ready to use once the upload is complete. In my next blog post I&amp;rsquo;ll cover provisioning a disk image and a virtual machine in Windows Azure.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #2e74b5;"&gt;&lt;span style="font-family: Calibri Light;"&gt;Additional Resources&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;As promised here are links that can provide more information on what I covered above. Please leave a comment with any links you feel should be added to this list.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Management Certificates&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;How to Create a Certificate for a Role: &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg432987.aspx"&gt;&lt;span style="color: #0563c1; font-family: Calibri; font-size: small;"&gt;http://msdn.microsoft.com/en-us/library/gg432987.aspx&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Preparing (converting) VHDs&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;Convert VHDX to VHD: &lt;/span&gt;&lt;a href="http://www.windowsitpro.com/article/virtualization2/convert-vhdx-vhd-windows-server-2012-143172"&gt;&lt;span style="color: #0563c1; font-family: Calibri; font-size: small;"&gt;http://www.windowsitpro.com/article/virtualization2/convert-vhdx-vhd-windows-server-2012-143172&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Uploading VHDs&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;CSUpload command-line tool: &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg466228.aspx"&gt;http://msdn.microsoft.com/en-us/library/gg466228.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;Windows Azure Storage Explorers: &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/04/17/windows-azure-storage-explorers.aspx"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/04/17/windows-azure-storage-explorers.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&lt;a&gt;ClumsyLeaf&lt;/a&gt; CloudXplorer v1: &lt;/span&gt;&lt;a href="http://clumsyleaf.com/products/downloads"&gt;&lt;span style="color: #0563c1; font-family: Calibri; font-size: small;"&gt;http://clumsyleaf.com/products/downloads&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10388587" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>How to Control the DataTemplateSelector in Windows Store Apps</title><link>http://blogs.msdn.com/b/bryanbolling/archive/2012/12/08/how-to-control-the-datatemplateselector-in-windows-store-apps.aspx</link><pubDate>Sat, 08 Dec 2012 12:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10375765</guid><dc:creator>Bryan Bolling [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bryanbolling/rsscomments.aspx?WeblogPostID=10375765</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bryanbolling/commentapi.aspx?WeblogPostID=10375765</wfw:comment><comments>http://blogs.msdn.com/b/bryanbolling/archive/2012/12/08/how-to-control-the-datatemplateselector-in-windows-store-apps.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;I've been building SharePoint solutions for a while and now I get the opportunity to build a Windows Store App.&amp;nbsp;One of the first challenges that I ran across is modifying the UI and tiles in a Windows Store app. To get this project started I fired up Visual Studio 2012 and selected the Grid App (XAML) project template.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/8546.NewProjXAML.png"&gt;&lt;img style="border: 0px currentColor;" title="New Project Window Screen Shot" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/8546.NewProjXAML.png" alt="Select the Grid App (XAML) project template in Visual Studio 2012" /&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;Now you will have a basic Windows Store app that's based on the Grid App template that should look like this&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/7750.AppDefaultTiles.png"&gt;&lt;img style="border: 0px currentColor;" title="DataTemplateSelector Demo Screen Shot" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/7750.AppDefaultTiles.png" alt="DataTemplateSelector Demo Screen Shot" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;The tiles shown above are ok but what if you want to change the look of some tiles based on data attributes in the data source? Here we will use the SampleDataSource that is part of this app template but you can use this concept with any data source. In this example I want to change the appearance of a few of the tiles to make them look as if they are disabled and I also want to prevent the tiles from being clickable. The first thing we're going to do is modify SampleDataSource.cs to add data values that will be used to disable some of the tiles. Scroll down around line 268 where the sample data exists and change "Item Title: 1" to "Missing Item". Feel free to change any of the other Title values&amp;nbsp;to "Missing Item" for the purposes of this demo.&amp;nbsp;Our code will be looking for any tiles with the Title of "Missing Item" and&amp;nbsp;giving each of them the appearance of being disabled. Obviously you won't have multiple Title values being the same in your real data source.&amp;nbsp;This is just a basic example of showing how to look at values in your data and use that as a way to change the appearance/behavior of your tiles.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Before we jump into the code sample I will preface this section with the fact that the code is not 100% mine and it is not production ready. There are no try/catch blocks to trap for errors and the like - which we would all use when we are writing production code. This is just quick, demo code and nothing more. With that said we will add a new class to GroupedItemsPage.xaml.cs which is going to do the bulk of the lifting.&amp;nbsp;Our class is going to inherit from the DataTemplateSelector class which is what we need to eventually return to our Grid control in the XAML. Use the following code to create the new class:&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt; public class TileTemplateSelector : DataTemplateSelector&lt;br /&gt; { &lt;br /&gt; //These are public properties that will be used in the Resources section of the XAML.&lt;/code&gt;&lt;code class="csharp"&gt;&lt;br /&gt; public DataTemplate Disabled250x250ItemTemplate { get; set; }&lt;br /&gt; public DataTemplate Standard250x250ItemTemplate { get; set; }&lt;br /&gt; &lt;br /&gt; protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)&lt;br /&gt; {&lt;br /&gt; var currentFrame = Window.Current.Content as Frame;&lt;br /&gt; var currentPage = currentFrame.Content as Page;&lt;br /&gt; &lt;br /&gt; if (item != null &amp;amp;&amp;amp; currentPage != null)&lt;br /&gt; {&lt;br /&gt; var data = item.ToString(); //Here we are getting the Title from the item and casting it as a string.&lt;br /&gt; &lt;br /&gt; if (!string.IsNullOrEmpty(data))&lt;br /&gt; {&lt;br /&gt; if (data.ToString() == "Missing Item") //Matching the right data value to return the DataTemplateSelector object.&lt;br /&gt; {&lt;br /&gt; var gridItem = container as GridViewItem;&lt;br /&gt; if (gridItem != null)&lt;br /&gt; {&lt;br /&gt; gridItem.IsHitTestVisible = false; //Disable the click event of the tile.&lt;br /&gt; }&lt;br /&gt; return Disabled250x250ItemTemplate; //Return the DataTemplateSelector for a disabled tile.&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; return Standard250x250ItemTemplate; //Return the DataTemplateSelector for a normal tile.&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; return Standard250x250ItemTemplate; //In case of an error above return the DataTemplateSelector for a normal tile.&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; return base.SelectTemplateCore(item, container);&lt;br /&gt; }&lt;br /&gt; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now open StandardStyles.xaml and scroll down around line 1645. The tiles are all using the style of "Standard250x250ItemTemplate". Copy the DataTemplate section of "Standard250x250ItemTemplate", paste the copied XAML directly below as a new DataTemplate section and rename it to "Disabled250x250ItemTemplate". For the end result you should have the following XAML pasted directly below the DataTemplate for "Standard250x250ItemTemplate". The style of the DataTemplate can be modified to fit your needs.&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="html"&gt; &amp;lt;!-- Template to make the tile appear as disabled --&amp;gt;&lt;br /&gt; &amp;lt;DataTemplate x:Key="Disabled250x250ItemTemplate"&amp;gt;&lt;br /&gt; &amp;lt;Grid HorizontalAlignment="Left" Width="250" Height="250" IsHitTestVisible="False" IsTapEnabled="False" Background="Black"&amp;gt;&lt;br /&gt; &amp;lt;Border Background="Black"&amp;gt;&lt;br /&gt; &amp;lt;Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/&amp;gt;&lt;br /&gt; &amp;lt;/Border&amp;gt;&lt;br /&gt; &amp;lt;StackPanel VerticalAlignment="Bottom" Background="Black"&amp;gt;&lt;br /&gt; &amp;lt;TextBlock Text="{Binding Title}" Foreground="Gray" Style="{StaticResource TitleTextStyle}" Height="60" Margin="15,0,15,0"/&amp;gt;&lt;br /&gt; &amp;lt;TextBlock Text="{Binding Subtitle}" Foreground="Gray" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Margin="15,0,15,10"/&amp;gt;&lt;br /&gt; &amp;lt;/StackPanel&amp;gt;&lt;br /&gt; &amp;lt;/Grid&amp;gt;&lt;br /&gt; &amp;lt;/DataTemplate&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The next step is to modify GroupedItemsPage.xaml and wire all of this together to see the end result. Go ahead and add the following code to the &amp;lt;Page.Resources&amp;gt; section. This adds an instance of the custom DataTemplateSelector to the page:&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="html"&gt;&amp;lt;local:TileTemplateSelector x:Key="TileTemplateSelector" Disabled250x250ItemTemplate="{StaticResource Disabled250x250ItemTemplate}" Standard250x250ItemTemplate="{StaticResource Standard250x250ItemTemplate}" /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally we modify the horizontal Grid control on the page and add our DataTemplateSelector to the ItemTemplateSelector attribute. There should be an attribute named ItemTemplate already on the Grid control. You need to remove that attribute and replace it with the ItemTemplateSelector attribute as I've highlighted below. The end result should look like this (this is not the complete Grid control XAML but enough to give you an idea of what you should end up with).&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="html"&gt;&amp;lt;!-- Horizontal scrolling grid used in most view states --&amp;gt;&lt;br /&gt; &amp;lt;GridView&lt;br /&gt; x:Name="itemGridView"&lt;br /&gt; AutomationProperties.AutomationId="ItemGridView"&lt;br /&gt; AutomationProperties.Name="Grouped Items"&lt;br /&gt; Grid.RowSpan="2"&lt;br /&gt; Padding="116,137,40,46"&lt;br /&gt; ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"&lt;br /&gt; &lt;span style="background-color: #ffff00;"&gt;ItemTemplateSelector="{StaticResource TileTemplateSelector}"&lt;/span&gt;&lt;br /&gt; SelectionMode="None"&lt;br /&gt; IsSwipeEnabled="false"&lt;br /&gt; IsItemClickEnabled="True"&lt;br /&gt; ItemClick="ItemView_ItemClick"&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now it's time to run the project and see the end result. You should have a screen similar to what I have in this screen shot below. I added the yellow border around the three tiles that have the new Disabled250x250ItemTemplate with MS Paint (yes this is a low budget effort) to show which tiles have picked up the new DataTemplate. The tiles have the appearance of being disabled and they aren't clickable.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/5008.AppModifiedTiles.png"&gt;&lt;img style="border: 0px currentColor;" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-52-68/5008.AppModifiedTiles.png" alt="DataTemplateSelector Demo customized result." /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10375765" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/DataTemplateSelector/">DataTemplateSelector</category><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/Windows+Store+App/">Windows Store App</category></item><item><title>McAfee Antivirus Blocks SMTP Traffic</title><link>http://blogs.msdn.com/b/bryanbolling/archive/2012/06/20/mcafee-antivirus-blocks-smtp-traffic.aspx</link><pubDate>Wed, 20 Jun 2012 12:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10322162</guid><dc:creator>Bryan Bolling [MSFT]</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bryanbolling/rsscomments.aspx?WeblogPostID=10322162</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bryanbolling/commentapi.aspx?WeblogPostID=10322162</wfw:comment><comments>http://blogs.msdn.com/b/bryanbolling/archive/2012/06/20/mcafee-antivirus-blocks-smtp-traffic.aspx#comments</comments><description>&lt;p&gt;Last week I was installing and configuring MS Exchange in my SharePoint development farm so I can test email notifications in a Visual Studio workflow. I started scouring DNS and did find that I had forgotten to add the MX record for my Exchange server. That still didn&amp;rsquo;t fix the problem &amp;ndash; but was still necessary. The rest of the day was spent verifying that SMTP was configured properly and no other routing issues were found. I finally started looking over other possibilities on the server and found the culprit &amp;ndash; McAfee Antivirus. In the Virus Scan Console you need to go to open the Access Protection properties. In there you&amp;rsquo;ll see a setting that is titled &amp;ldquo;Prevent mass mailing worms from sending email&amp;rdquo;. You can edit that setting and add an exclusion for SMTP which resolved the problem. I am enclosing links to articles that provide a step-by-step walkthrough of the topics I mentioned in this post.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure outgoing e-mail (SharePoint Server 2010): &lt;a href="http://technet.microsoft.com/en-us/library/cc263462.aspx"&gt;http://technet.microsoft.com/en-us/library/cc263462.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Configuring DNS, MX, and SPF Records and Settings: &lt;a href="http://technet.microsoft.com/en-us/library/ff714972.aspx"&gt;http://technet.microsoft.com/en-us/library/ff714972.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Create an SMTP Send Connector: &lt;a href="http://technet.microsoft.com/en-us/library/aa997285.aspx"&gt;http://technet.microsoft.com/en-us/library/aa997285.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to add process exclusions in Access Protection Port Blocking rules: &lt;a href="https://kc.mcafee.com/corporate/index?page=content&amp;amp;id=KB56502"&gt;https://kc.mcafee.com/corporate/index?page=content&amp;amp;id=KB56502&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10322162" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/Exchange/">Exchange</category><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/SMTP/">SMTP</category></item><item><title>SharePoint Security the Easy Way</title><link>http://blogs.msdn.com/b/bryanbolling/archive/2012/02/16/sharepoint-security-the-easy-way.aspx</link><pubDate>Thu, 16 Feb 2012 18:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10327726</guid><dc:creator>Bryan Bolling [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bryanbolling/rsscomments.aspx?WeblogPostID=10327726</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bryanbolling/commentapi.aspx?WeblogPostID=10327726</wfw:comment><comments>http://blogs.msdn.com/b/bryanbolling/archive/2012/02/16/sharepoint-security-the-easy-way.aspx#comments</comments><description>&lt;div class="ExternalClassAB919859E50945FEA50472A41BF85FF9"&gt;
&lt;p&gt;I sat down yesterday and read a great article titled &amp;ldquo;&lt;a href="http://www.cmswire.com/cms/information-management/managing-sharepoint-security-permissions-the-hard-way-014470.php" target="_blank"&gt;Managing SharePoint Security, Permissions the Hard Way&lt;/a&gt;&amp;rdquo; by Steven Pogrebivsky. It definitely does a great job at explaining the difficulties in managing SharePoint permissions with the out-of-the-box tools in SharePoint. I wanted to take the time to share my experience in managing SharePoint permissions the easier way.&lt;/p&gt;
&lt;p&gt;Before I point out the easy way let&amp;rsquo;s recap the hard way. A new employee enters an organization and over time they accumulate permissions to various SharePoint sites. Over a period of months or years the permissions structure&amp;nbsp;is as fractured as spaghetti code. Eventually the employee leaves the organization. Do&amp;nbsp;you go back to every SharePoint site this employee had access to and remove them from every SharePoint group? Usually the answer is &amp;ldquo;No&amp;rdquo;. Why? Because the employee's permissions were never documented well enough for the site administrators to know wihch sites to remove the departing employee from.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a step back and think about what existing processes we can leverage to ensure that SharePoint permissions are ALWAYS added and removed as employees enter and leave&amp;nbsp;an organization. When a new employee enters an&amp;nbsp;organization&amp;nbsp;they are given an account in Active Directory (AD). The employee's account is also added to a few AD groups so they can access file shares and other resources on the network. When the employee leaves the organization their account is&amp;nbsp;deleted from AD and&amp;nbsp;any AD groups&amp;nbsp;that they belonged to.&lt;/p&gt;
&lt;p&gt;The easy solution: leverage AD groups and SharePoint groups together to manage access to your SharePoint sites. I&amp;nbsp;highly recommend creating AD groups that mirror your SharePoint groups.&amp;nbsp;That will allow you to&amp;nbsp;add the AD groups to the appropriate SharePoint groups.&amp;nbsp;All of the&amp;nbsp;permissions management for SharePoint&amp;nbsp;will be done in AD.&lt;/p&gt;
&lt;p&gt;Let's look at this&amp;nbsp;scenario again using the&amp;nbsp;easier solution.&amp;nbsp;A new employee enters your organization. This user is given an account in AD and his account is added to several AD groups - some of which will allow him access to a standard set of SharePoint sites. Over time this employee will gain access to new SharePoint sites by being added to new AD groups. When the employee leaves the organization their account is removed from AD&amp;nbsp;and the AD groups. This employee has automatically lost access to all SharePoint sites within the organization. There is no need to search through the SharePoint sites to ensure the employee's access has been completely removed.&lt;/p&gt;
&lt;p&gt;That is SharePoint security the easy way.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10327726" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/bryanbolling/archive/tags/Security/">Security</category></item></channel></rss>