<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Microsoft Digital Marketing - David Ford</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/digital_musketeer/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/feed.xml</link>
    <description>Digital Marketing using Microsoft technologies from a technical and business perspective.  SharePoint 2010 for Internet Sites.</description>
    <lastBuildDate>Wed, 17 Apr 2019 04:01:02 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Top 5 Domain Name Generators</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/top-5-domain-name-generators</link>
      <pubDate>Fri, 04 Jul 2014 23:11:48 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2014/07/04/top-5-domain-name-generators/</guid>
      <description><![CDATA[Choosing a domain name for a new business, or product / service can be difficult - especially as a...]]></description>
      <content:encoded><![CDATA[<p><span>Choosing a domain name for a new business, or product / service can be difficult - especially as a large number of domain names are already taken. &nbsp;Finding a name that&#39;s both catchy and relevant to your business, in addition to one that&#39;s available can be a challenging task</span><span>. &nbsp;Here&#39;s 5 tools that can be used to find an available Domain Name.</span></p>
<p><span>&nbsp;</span></p>
<ol>
<li>Vast Names - <a href="https://www.vastnames.com" title="Vast Names" target="_blank">https://www.vastnames.com</a> -&nbsp;advanced functionality including name generation, thesaurus, sessions, favourites and instant search. &nbsp;Designed for Web Designers and Business Consultants to help their clients find domain names</li>
<li>Bust A Name -&nbsp;<a href="https://www.bustaname.com" title="Bust A Name" target="_blank">https://www.bustaname.com</a>&nbsp;- generates new names</li>
<li>Dot O Mator -&nbsp;<a href="https://www.dotomator.com/" title="DotOMator" target="_blank">https://www.dotomator.com/</a>&nbsp;- generates new names</li>
<li>Wordoid -&nbsp;<a href="https://wordoid.com/" title="WordOid" target="_blank">https://wordoid.com/</a></li>
<li>Domain typer - instant search - <a href="https://domaintyper.com/" title="DomainTyper" target="_blank">https://domaintyper.com/</a></li>
</ol>
<p><span>&nbsp;</span></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Personalisation Approaches in SharePoint 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/personalisation-approaches-in-sharepoint-2010</link>
      <pubDate>Mon, 05 Mar 2012 18:05:00 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2012/03/05/personalisation-approaches-in-sharepoint-2010/</guid>
      <description><![CDATA[Digital Marketing Personalisation
There are three primary types of personalisation used across...]]></description>
      <content:encoded><![CDATA[<div style="display: inline;" id="ctl00_PlaceHolderMain_PageContent__ControlWrapper_RichHtmlField" class="ms-rtestate-field" aria-labelledby="ctl00_PlaceHolderMain_PageContent_label">
<h1 class="ms-rteElement-H1">Digital Marketing Personalisation</h1>
<p>There are three primary types of personalisation used across Digital Marketing today - these are:</p>
<ul>
<li><strong>Declared Personalisation</strong> - the user "ticks boxes" or includes words such as "[X]&nbsp; Camera Enthusiast", "I like: Cameras, Walking".&nbsp; The SharePoint 2010 Audience Targeting feature is a "declared" approach to personalisation</li>
<li><strong>Learnt Personalisation</strong> - An approach whereby the user's interests are learnt from their behaviour - for example if a user "mostly" clicks on high-end "enthusiast" cameras, then the system will automatically 'learn' that preference and provide products that are relevant to the 'enthusiast'.&nbsp;</li>
<li><strong>Anonymous Personalisation</strong> -&nbsp; Personalisation in which the interests of the user are 'learnt' in one location, but then applied as the user arrives at the SharePoint 2010 website.&nbsp; A solution in this space is AdRock - a Microsoft solution that is able to learn personalisation from a user's behaviour on a site such as NineMSN, but then be able to use this behaviour on other sites such as Contoso.com.&nbsp;&nbsp; This is termed 'anonymous' personalisation as the Contoso website has does not have any declared interests from the user, and neither does it have "learnt" personalisation from previous behaviour on the Contoso website.&nbsp; Instead - behaviour from the Atlas advertising network is passed to the Contoso website (with the user's permission) to allow the Contoso website to provide a more personalised experience the moment that the user's Live ID is activated.</li>
</ul>
<h2 class="ms-rteElement-H2">Audience Targeting - Declared Personalisation</h2>
<p>Audiences are part of a User Profile service application that enables organizations to target content to users based on a flexible set of rules. Audiences can be defined by one or a combination of the following items:</p>
<ul>
<li>By public properties in user profiles</li>
<li>Active Directory</li>
<ul>
<li>Membership in a distribution list</li>
<li>Membership in a Windows security group</li>
<li>Location in organizational reporting structure</li>
</ul>
</ul>
<p>An audience is defined by a collection of one or more audience rules and by whether all or only one of the audience rules must be met when evaluating membership. An audience rule can be based on membership in a user profile <br />property (and other active directory related roles/groups). In a Digital Marketing scenario it is common for user's to nominate specific interests - and to store these in the user profile.&nbsp; To define each audience rule, you must <br />select an operand, operator, and value.</p>
<p>Once an audience has been defined, it must be compiled on a regular basis because the underlying user profile properties and membership in directory services and groups can frequently change. An administrator schedules the timer job that controls when audiences are compiled.</p>
<p>See also: <a href="https://technet.microsoft.com/en-us/library/cc261958.aspx">https://technet.microsoft.com/en-us/library/cc261958.aspx</a></p>
<p>&nbsp;</p>
<h2 class="ms-rteElement-H2">MagiClick BehaviourPad- Learnt personalisation</h2>
<p><a href="https://www.magiclick.com/BehaviorPad/">https://www.magiclick.com/BehaviorPad/</a></p>
<p>BehaviorPad helps maximize conversions &amp; revenues by enabling the <br />administrator to dynamically change the website's content based on visitors' <br />data and their tracked actions.&nbsp;&nbsp;&nbsp; BehaviorPad provides a simple way to <br />implement behavioral targeting logic on your website with minimal or no input <br />from your IT department or development agency.<br /><br />The process is as <br />follows:</p>
<ul>
<li>Select the page on your website, on which you want to implement behavioral <br />targeting logic</li>
<li>Select your targeting criteria</li>
<li>Select the action you want your website to take when the criteria are <br />met</li>
</ul>
<p></p>
<p>Available rules include:</p>
<ul>
<li>Referrer - Which website did the visitor come from?</li>
<li>Search Keywords - If the visit has originated from a search engine, which <br />keywords has the visitor been looking for?</li>
<li>User Agent - Which browser, operating system, platform etc. is the visitor <br />using?</li>
<li>Geolocation - Which country or city is the visit originating from?</li>
<li>Visit Count - New or returning visitor? If returning, how many times did he <br />or she previously visit our site?</li>
<li>Page/Directory Visits - Which pages or directories has the person previously <br />visited on our website, and how many times?</li>
<li>Cookie Check - Does the visitor have a cookie we have placed previously by <br />our site?</li>
</ul>
<p>The solution also includes concepts such as "if the user visits type of page <br />X twice"</p>
<p>Please note that other solutions that cover not just personalisation are available - for example the IntLock SharePoint marketing Suite</p>
<p>* <a href="https://www.intlock.com/">https://www.intlock.com/</a></p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Windows 8 Consumer Preview now available!</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/windows-8-consumer-preview-now-available</link>
      <pubDate>Thu, 01 Mar 2012 01:48:21 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2012/03/01/windows-8-consumer-preview-now-available/</guid>
      <description><![CDATA[Something I've been waiting for!&nbsp; Windows 8 Consumer Preview is now available for download...]]></description>
      <content:encoded><![CDATA[<p>Something I've been waiting for!&nbsp; Windows 8 Consumer Preview is now available for download from:</p>
<p><a href="https://windows.microsoft.com/en-US/windows-8/iso">https://windows.microsoft.com/en-US/windows-8/iso</a>&nbsp; (ISO images)</p>
<p>Enjoy!</p>
<p><span style="color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="Apple-style-span"><span style="text-align: left; color: #333333; font-family: 'segoe ui', verdana, arial, sans-serif; font-size: 13px;" class="Apple-style-span"><span style="position: static; z-index: 0;" class="notLocalizable">From the site: "The Windows&nbsp;8 Consumer Preview</span><span class="Apple-converted-space">&nbsp;</span>ISO files (.iso) are provided as an alternative to using<span class="Apple-converted-space">&nbsp;</span><span style="position: static; z-index: 0;" class="notLocalizable">Windows&nbsp;8 Consumer Preview</span><span class="Apple-converted-space">&nbsp;</span>Setup. If you are on a PC running<span class="Apple-converted-space">&nbsp;</span><span style="position: static; z-index: 0;" class="notLocalizable">Windows</span><span class="Apple-converted-space">&nbsp;</span>and want to install the consumer preview on another partition, another PC, or a virtual machine, we recommend you<a style="color: #02bbe2; font-weight: 600; text-decoration: none; vertical-align: baseline; position: static; z-index: 0;" class="navigationLink" href="https://windows.microsoft.com/en-US/windows-8/download" data-id="ID0EDBDBBA">download<span class="Apple-converted-space">&nbsp;</span><span style="position: static; z-index: 0;" class="notLocalizable">Windows&nbsp;8 Consumer Preview</span><span class="Apple-converted-space">&nbsp;</span>Setup</a><span class="Apple-converted-space">&nbsp;</span>and use the built-in tools for converting an ISO image into installation media, such as a DVD or USB bootable flash drive. You can find additional information, including a list of supported upgrades, in the<span class="Apple-converted-space">&nbsp;</span><a style="color: #02bbe2; font-weight: 600; text-decoration: none; vertical-align: baseline; position: static; z-index: 0;" class="navigationLink" href="https://windows.microsoft.com/en-US/windows-8/faq#section_1" data-id="ID0EBBDBBA">FAQ</a>."</span></span></p>
<p>&nbsp;</p>
<p>Important note:</p>
<p><span style="color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="Apple-style-span"><span style="text-align: left; color: #333333; font-family: 'segoe ui', verdana, arial, sans-serif; font-size: 13px;" class="Apple-style-span"><span style="color: #454545; font-weight: bold; position: static; z-index: 0;" class="ui">Note before you download:</span><span class="Apple-converted-space">&nbsp;</span><span style="position: static; z-index: 0;" class="notLocalizable">Windows&nbsp;8 Consumer Preview</span><span class="Apple-converted-space">&nbsp;</span>is prerelease software that may be substantially modified before it&rsquo;s commercially released.<span class="Apple-converted-space">&nbsp;</span><span style="position: static; z-index: 0;" class="notLocalizable">Microsoft</span><span class="Apple-converted-space">&nbsp;</span>makes no warranties, express or implied, with respect to the information provided here. Some product features and functionality may require additional hardware or software. If you decide to go back to your previous operating system, you'll need to reinstall it from the recovery or installation media that came with your PC.</span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint 2010 - configuring URLs for Internet use (AAR, URL rewriting, alternate access mappings)</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/sharepoint-2010-configuring-urls-for-internet-use-aar-url-rewriting-alternate-access-mappings</link>
      <pubDate>Thu, 02 Feb 2012 20:40:00 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2012/02/02/sharepoint-2010-configuring-urls-for-internet-use-aar-url-rewriting-alternate-access-mappings/</guid>
      <description><![CDATA[Introduction
The Alternate Access Mappings (AAM) of SharePoint allows a website to function...]]></description>
      <content:encoded><![CDATA[<h2>Introduction</h2>
<p>The Alternate Access Mappings (AAM) of SharePoint allows a website to function correctly under different "inbound" domain names.&nbsp; This feature can also include reverse proxies and load balancing scenarios.&nbsp;</p>
<p>&nbsp;</p>
<p>Assuming that you have two domain names: "fourthcoffee.com" and "contoso.com" - how can you arrange for SharePoint to not just accept and respond to both domain names - but change any (incorrectly) specified domain names that people have accidentally used internally?</p>
<p>An example would be the following:</p>
<p>&lt;a href="https://www.fourthcoffee.com/landingpage.aspx&gt;link to the landing page&lt;/a&gt;</p>
<p>while this link works well on the fourthcoffee.com website - the same link will fail if the page is used on Contoso.com.&nbsp; In general this problem doesn't arise, as virtually all links to content within SharePoint should be "relative links" that don't include a domain name.&nbsp; An example is:</p>
<p>Relative link:</p>
<p>&lt;a href="https://blogs.technet.com/landingpage.aspx&gt;link to the landing page&lt;/a&gt;</p>
<p>How can this problem be solved? As the link is within the HTML itself - then the HTML must be adjusted to translate <a href="https://www.fourthcoffee.com">https://www.fourthcoffee.com</a> into <a href="https://www.contoso.com">https://www.contoso.com</a> .&nbsp; This is where ourbound "rewriting" of the web page is useful, and it is often used in conjunction with AAR.</p>
<p>For details on AAR - please see &nbsp;<a href="https://technet.microsoft.com/en-us/sharepoint/Video/ff679917">https://technet.microsoft.com/en-us/sharepoint/Video/ff679917</a>, however I'll include a brief undown on the overall process here:</p>
<p>Assuming that your external domain name is <a href="https://www.sharepointinternet.com">www.sharepointinternet.com</a> :</p>
<h2>Create a binding for the Site&nbsp;in IIS to <a href="https://www.sharepointinternet.com">www.sharepointinternet.com</a></h2>
<table border="0">
<tbody>
<tr>
<td>
<p>Edit the site bindings</p>
<ul>
<li>Start IIS manager</li>
<li>Right-click the site and "edit bindings"</li>
</ul>
</td>
<td><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7026.bindings_edit.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7026.bindings_5F00_edit.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7026.bindings_edit.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7026.bindings_5F00_edit.png" /></a></td>
</tr>
<tr>
<td>Add a new site binding for "sharepointinternet.com"</td>
<td><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2818.add_site_binding.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2818.add_5F00_site_5F00_binding.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2818.add_site_binding.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2818.add_5F00_site_5F00_binding.png" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/3125.bindings_edit.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/3125.bindings_5F00_edit.png"></a></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2>Create the alternate access mapping in SharePoint 2010</h2>
<p>Simply creating the binding in IIS Manager doesn't create the proper binding to Sharepoint - in addition you also need to create the Alternate Access Mapping for the binding itself.</p>
<table border="0">
<tbody>
<tr>
<td>
<p>From Central Admin:</p>
<ul>
<li>Choose "application management"</li>
<li>Choose "Configurate alternate access mappings"</li>
</ul>
</td>
<td><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/0743.alternate_access_mappings.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/0743.alternate_5F00_access_5F00_mappings.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/0743.alternate_access_mappings.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/0743.alternate_5F00_access_5F00_mappings.png" /></a></td>
</tr>
<tr>
<td>
<p>Edit the alternate access mapping</p>
<ul>
<li>Choose the correct "alternate access mapping collection" at the top right</li>
<li>Choose "Edit Public URLs"</li>
<li>Add the new URL for the correct zone (eg Internet)</li>
</ul>
</td>
<td><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2480.alternate_access_edit_urls.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2480.alternate_5F00_access_5F00_edit_5F00_urls.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2480.alternate_access_edit_urls.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2480.alternate_5F00_access_5F00_edit_5F00_urls.png" /></a></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2>Add the reverse rewriting rules (in the HTML)</h2>
<p>If the URLs within the HTML refer to the incorrect domain name&nbsp;- these will need to be re-written using the <a href="https://www.iis.net/download/URLRewrite" target="_blank">IIS URL Rewriting Module 2.0</a>.&nbsp; In order to rewrite the HTML returned from IIS - configure the rewrite rule as follows:</p>
<p>Note that you may need to download and install the following:</p>
<ul>
<li>The URL Rewrite module - <a href="https://www.iis.net/download/URLRewrite">https://www.iis.net/download/URLRewrite</a></li>
<li>The Application Request Routing module - <a href="https://www.iis.net/download/ApplicationRequestRouting">https://www.iis.net/download/ApplicationRequestRouting</a></li>
</ul>
<p>Additional details&nbsp;on the framework&nbsp;(and ASP.NET routing) are here:</p>
<ul>
<li><a href="https://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/">https://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/</a>&nbsp;</li>
</ul>
<p>&nbsp;</p>
<table border="0">
<tbody>
<tr>
<td>
<p>For the site</p>
<ul>
<li>Click on URL Rewrite</li>
</ul>
</td>
<td><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/0334.url_rewrite.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/0334.url_5F00_rewrite.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/0334.url_rewrite.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/0334.url_5F00_rewrite.png" /></a></td>
</tr>
<tr>
<td>Add a blank rule</td>
<td><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/1030.url_rewrite_2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/1030.url_5F00_rewrite_5F00_2.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/1030.url_rewrite_2.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/1030.url_5F00_rewrite_5F00_2.png" /></a></td>
</tr>
<tr>
<td>
<p>Add a 'precondition' to only process HTML.&nbsp; A side effect if this is not done is that the URL Rewriter module will error - and send back "500 Server error" messages for non-HTML items such as Javascript.&nbsp; Sharepoint editing and menus will not work.</p>
<p>&nbsp;</p>
<p>From "Precondition" - choose "ResponseIsHtml1" - or create a new rule where the Content-type is "text/html".&nbsp;</p>
<p>&nbsp;</p>
<p>The rule becomes:</p>
<p style="padding-left: 30px;">{RESPONSE_CONTENT_TYPE}&nbsp;&nbsp; &lt;-- Condition input</p>
<p style="padding-left: 30px;">matches</p>
<p style="padding-left: 30px;">^text/html</p>
</td>
<td><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7180.precondition_aar.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7180.precondition_5F00_aar.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7180.precondition_aar.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7180.precondition_5F00_aar.png" /></a></td>
</tr>
<tr>
<td>
<p>The values should be similar to the following:</p>
<ul>
<li>Pattern (using Regular Expressions - <a href="https://www.regular-expressions.info/">https://www.regular-expressions.info/</a>)</li>
<li>Note - this uses a pattern capture with brackets.&nbsp; Use the "test pattern" button to examine the pattern.</li>
</ul>
<p>Details on the test pattern and captures are available here:</p>
<ul>
<li><a href="https://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/">https://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/</a></li>
</ul>
<p>&nbsp;</p>
<p>Actions</p>
<ul>
<li>The action should be "rewrite"</li>
<li>The rewrite value (the new URL) should include a replacement pattern - the "R:1" sections.&nbsp; These R:(number) sections can be found using the "test pattern" button.</li>
</ul>
<p>&nbsp;&nbsp;</p>
<p>Note well - This rewrites the URLs within outbound HTML only.&nbsp;&nbsp;The inbound&nbsp;URLs (domain names and URLs hitting the SharePoint server aren't affected -&nbsp;these should be catered for using hthe the bindings and alternate access mappings above).</p>
</td>
<td><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/6278.edit_outbound_rule.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/6278.edit_5F00_outbound_5F00_rule.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/6278.edit_outbound_rule.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/6278.edit_5F00_outbound_5F00_rule.png" /></a></td>
</tr>
<tr>
<td>
<p>&nbsp;Choose where URLs and domain names should be matched (generally within A and IMG tags at least)</p>
</td>
<td><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/8666.choose_match_content_within.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/8666.choose_5F00_match_5F00_content_5F00_within.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/8666.choose_match_content_within.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/8666.choose_5F00_match_5F00_content_5F00_within.png" width="324" height="276" /></a></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Ascentium Commerce Server 2009 and SharePoint 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/ascentium-commerce-server-2009-and-sharepoint-2010</link>
      <pubDate>Thu, 02 Feb 2012 16:06:00 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2012/02/02/ascentium-commerce-server-2009-and-sharepoint-2010/</guid>
      <description><![CDATA[Commerce Server 2009 R2 has now transitioned to Ascentium&nbsp; - the company that purchased "Cactus...]]></description>
      <content:encoded><![CDATA[<p>Commerce Server 2009 R2 has now transitioned to <a title="Ascentium" href="https://www.commerceserver.net/Pages/default.aspx" target="_blank">Ascentium</a>&nbsp; - the company that purchased "Cactus Commerce".&nbsp; Ascentium will be continuing the development of Commerce Server in the future, and will be directly engaging with existing Microsoft Commerce Server customers in order to continue to innovate the platform through the future.</p>
<p>The statement from Ascentium is as follows:</p>
<p><em>"Ascentium, a technology-enabled digital marketing agency is assuming all future product development, marketing, and support of Commerce Server, subsequent to the recently released Microsoft Commerce Server 2009 R2 from Microsoft. In September, Ascentium acquired Cactus Commerce &ndash; Microsoft&rsquo;s Commerce Server development partner for the last 4 years. Under that partnership, Microsoft released Microsoft Commerce Server 2009, Commerce Server 2009 R2 along with several service packs. </em><br /><br /><em>Ascentium is well poised to continue Commerce Server development efforts with a commitment to ongoing product investment and a customer-driven roadmap.&nbsp; "</em></p>
<p><span><span>This means that Commerce Server will continue to be available to customers as part of the overall SharePoint direct technology and partner technology stack, and that Commerce solutions can be implemented on Sharepoint&nbsp;with Commerce Server 2009 now - with future product releases and additional features being created in future.</span></span></p>
<p><span><span><a href="https://www.commerceserver.net/Style%20Library/CS/Images/logo_commerce_server.png"><img style="max-width: 550px;" border="0" alt="" src="https://www.commerceserver.net/Style Library/CS/Images/logo_commerce_server.png" /></a></span></span></p>
<p><span><span></span></span>&nbsp;</p>
<p><span><span>Are there other options for Commerce and SharePoint 2010? - yes, in theory SharePoint will cooperate with any virtually any other commerce server solution.&nbsp; SharePoint would contain the detailed content, while the commerce component will handle payment and fulfilment.</span></span></p>
<p><span><span>Examples of other commerce solutions that will interoperate with SharePoint 2010 include:</span></span></p>
<ul>
<li><span><span>Commerce Server 2009 R2 - <a href="https://www.microsoft.com/commerceserver/">https://www.microsoft.com/commerceserver/</a> </span></span></li>
<li><span><span>Optimus BT - <a href="https://www.optimusbt.com/">https://www.optimusbt.com/</a></span></span><span><span></span></span></li>
<li><span><span>Aivea - <a href="https://www.aivea.com/aivea-commerce-server.htm">https://www.aivea.com/aivea-commerce-server.htm</a> </span></span></li>
<li><span><span>CommercePoint - <a href="https://www.sharepointinnovations.com/sharepoint-ecommerce/default.aspx">https://www.sharepointinnovations.com/sharepoint-ecommerce/default.aspx</a> </span></span></li>
<li><span><span>Itequia - <a href="https://oriolquinquilla.tech.officelive.com/solutions_Itequia_eCommerce_for_sharepoint_en.aspx">https://oriolquinquilla.tech.officelive.com/solutions_Itequia_eCommerce_for_sharepoint_en.aspx</a>&nbsp;</span></span><span><span>&nbsp;</span></span></li>
</ul>
<p>As always - comments are welcomed, as are other links to other solutions not mentioned here.</p>]]></content:encoded>
    </item>
    <item>
      <title>Logging into SharePoint 2010 using Windows Azure Access Control Services (ACS)</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/logging-into-sharepoint-2010-using-windows-azure-access-control-services-acs</link>
      <pubDate>Sun, 08 Jan 2012 16:40:23 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2012/01/08/logging-into-sharepoint-2010-using-windows-azure-access-control-services-acs/</guid>
      <description><![CDATA[An organisation's Internet presence shouldn't just be a simple "static" website that provides...]]></description>
      <content:encoded><![CDATA[<div>An organisation's Internet presence shouldn't just be a simple "static" website that provides information to end-users.&nbsp; It should also be a means for those end-users to interact with the business - even if it's for simple things such as a change of address, or to view their latest statement.&nbsp; In addition, it's possible to use the Internet site to interact with partners - other organisations that your business works with (such as advertising agencies, plumbers, architects, etc).</div>
<div>&nbsp;</div>
<p>Once a customer has logged into an SharePoint 2010 portal it is far easier to create more engaging experiences for them by providing account details, graphs, charts and analytics &ndash; as well as enabling the customer to use forms based functionality to interact with the business in a transactional sense.</p>
<ul>
<li>Customer and partner portals are viewed as a key enabling mechanism to permit businesses with an ability to create deep customer loyalty and facilitate advanced solutions such as:</li>
<li>Customer self-service portals (for example service portals, wiki's and Microblogs)</li>
<li>Advanced customer workflow<br />Maps</li>
<li>Search driven websites where information is rapidly surfaced in response to user queries</li>
<li>Personalized websites that remember the interests products and services that customer uses or owns and modifies the site presentation accordingly to make these easier to find or promote related products</li>
</ul>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2100.love_london.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2100.love_5F00_london.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2100.love_london.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2100.love_5F00_london.png" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7367.love_london.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7367.love_5F00_london.png"></a></p>
<div>I've collated a list of references and overview information below to aid in creating these customer and partner portals using SharePoint 2010.</div>
<div>&nbsp;</div>
<div><strong>Information References:</strong></div>
<ul>
<li>
<div>Examples and introductory videos: <br /><a href="https://social.technet.microsoft.com/wiki/contents/articles/1546.aspx?wa=wsignin1.0">https://social.technet.microsoft.com/wiki/contents/articles/1546.aspx?wa=wsignin1.0</a> <br /><span style="font-family: symbol;"></span></div>
</li>
<li>ADFS 2.0 - <a href="https://technet.microsoft.com/en-us/library/adfs2(WS.10).aspx">https://technet.microsoft.com/en-us/library/adfs2(WS.10).aspx</a></li>
<li>Azure ACS <br /><a href="https://www.microsoft.com/windowsazure/features/accesscontrol/">https://www.microsoft.com/windowsazure/features/accesscontrol/</a></li>
<li>Implementation blog: <br /><a href="https://blogs.pointbridge.com/Blogs/nielsen_travis/Pages/Post.aspx?_ID=38">https://blogs.pointbridge.com/Blogs/nielsen_travis/Pages/Post.aspx?_ID=38</a></li>
<li>
<div><a href="https://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-858T">https://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-858T</a>&nbsp;</div>
</li>
</ul>
<div>
<div><strong>Customer references:</strong></div>
</div>
<ul>
<li><a href="https://lovecleanlondon.org/account/logon">https://lovecleanlondon.org/account/logon</a></li>
<li><a href="https://www.dubaibank.ae/">https://www.dubaibank.ae/</a>&nbsp; - case <br />study: <a href="https://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000002490">https://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000002490</a></li>
</ul>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>
<div>Many users already have accounts with identity providers used to authenticate users for one or more applications and websites. Social networks such as Facebook, and email and service providers such as Windows Live ID and Google, often use a single sign-on model for users that supports authentication for several applications. Users increasingly expect to be able to use the credentials for these identity providers when accessing other applications.</div>
</div>
<div>
<div></div>
<div>Windows Azure Access Control Service (ACS) offers a way to outsource authentication and decouple your application from all the complexity of maintaining a direct relationship with all the identity providers you want to tap from. ACS takes care of engaging every identity provider with its own <br />authentication protocol, normalizing the authentication results in a protocol supported by the .NET framework tooling (namely the Windows Identity Foundation technology, or WIF) regardless of from where the user is coming from. WIF allows the configuration of ACS as the authentication manager for the application; from that moment on ACS takes care of everything, including providing a UI for the user to choose among all the recognized identity providers.</div>
<div>&nbsp;</div>
<div>The main features of ACS are as listed below:</div>
</div>
<div><span style="font-family: symbol;"><span>&middot; <span style="font: 7pt/normal 'times new roman'; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> </span>Integrates with Windows Identity Foundation (WIF) and tooling</div>
<div><span style="font-family: symbol;"><span>&middot; <span style="font: 7pt/normal 'times new roman'; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> </span>Out-of-the-box support for popular web identity providers including: Windows Live ID, Google, Yahoo, and Facebook</div>
<div><span style="font-family: symbol;"><span>&middot; <span style="font: 7pt/normal 'times new roman'; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> </span>Out-of-the-box support for Active Directory Federation Services 2.0</div>
<div><span style="font-family: symbol;"><span>&middot; <span style="font: 7pt/normal 'times new roman'; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> </span>Support for OAuth 2.0 (draft 13), WS-Trust, and WS-Federation protocols</div>
<div><span style="font-family: symbol;"><span>&middot; <span style="font: 7pt/normal 'times new roman'; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> </span>Support for the SAML 1.1, SAML 2.0, and Simple Web Token (SWT) token formats</div>
<div><span style="font-family: symbol;"><span>&middot; <span style="font: 7pt/normal 'times new roman'; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> </span>Integrated and customizable Home Realm Discovery that allows users to choose their identity provider</div>
<div><span style="font-family: symbol;"><span>&middot; <span style="font: 7pt/normal 'times new roman'; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> </span>An OData-based Management Service that provides programmatic access to ACS configuration</div>
<div><span style="font-family: symbol;"><span>&middot; <span style="font: 7pt/normal 'times new roman'; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> </span>A Web Portal that allows administrative access to ACS configuration</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>ACS is an issuer that can make use of many of identity providers by redirecting the user to the appropriate location to enter credentials, and then using the claims returned from that identity provider to issue a token to applications. ACS can also be used to supplement a local issuer by retrieving claims from a social networking or email provider and passing these to the local issuer for it to issue the required token. ACS effectively allows a broad range of identity providers to be used for user authentication, both in conjunction with a local issuer and when no local issuer is available.</div>
<div>
<div>&nbsp;</div>
<div>ADFS 2.0 is able to act as a centralized hub for managing user identity and trust relationships between applications, web services and, by extension, organizations. User identity is typically expressed as claims, which are documented in SAML, a type of specially formatted, digitally signed XML. As long as applications can &ldquo;speak&rdquo; one of the web standards defined by&nbsp; (WS-Trust or WS-Federation), they can consume from or provide identity to ADFS 2.0. This is implemented in ADFS 2.0 via two kinds of trust relationships: Claims Provider Trusts and Relying Party Trusts. My previous post involved configuring a Relying Party Trust for a claims-enabled web application in SharePoint 2010 with claims being provided by ADFS 2.0 after users authenticate via Windows Integrated authentication. A Claims Provider Trust allows for that authentication process to be extended to other internal or external identity providers.</div>
</div>
<div></div>]]></content:encoded>
    </item>
    <item>
      <title>Office Materials Generator - Beta 2</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/office-materials-generator-beta-2</link>
      <pubDate>Mon, 12 Dec 2011 18:14:00 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2011/12/12/office-materials-generator-beta-2/</guid>
      <description><![CDATA[The Office Materials Generator (OMG) is now at beta 2 and includes full source code under the Apache...]]></description>
      <content:encoded><![CDATA[<p>The Office Materials Generator (OMG) is now at beta 2 and includes full source code under the Apache 2.0 licence.&nbsp; The original (old) beta announcement is here: <a href="https://blogs.technet.com/b/digital_musketeer/archive/2011/10/18/office-materials-generator-beta-document-generation.aspx">https://blogs.technet.com/b/digital_musketeer/archive/2011/10/18/office-materials-generator-beta-document-generation.aspx</a>.&nbsp;&nbsp;&nbsp; All time-limitations have been removed, and full source code for Visual Studio 2010 is included.</p>
<p>The licence is at the bottom of this page, and all aspects of the licence must be complied with in order to use the code.</p>
<div style="display: inline;" id="ctl00_PlaceHolderMain_PageContent__ControlWrapper_RichHtmlField" class="ms-rtestate-field" aria-labelledby="ctl00_PlaceHolderMain_PageContent_label">
<h1 class="ms-rteElement-H1">​Digital Marketing Office Materials Generator</h1>
<p>OMG includes a "language" within Word 2010 that can be used to update template-style documents with information from Excel models.&nbsp; OMG models all complexity and mathematics in Excel (where it is easily managed), whilst document templates are created within Word 2010.&nbsp; A generation cycle blends the Excel model information with the Word template and creates a set of output documents.</p>
<p>Multiple documents can be created during a single generation run&nbsp;- allowing a single Excel model to be the reference information for documents that may be overviews, in-depth technical architectures, or pricing..</p>
<p>OMG is used to output Word documents such as:</p>
<ul>
<li>Architecture and pricing documents</li>
<ul>
<li>Solution benefits overview</li>
<li>Architecture documents</li>
<li>Pricing documents</li>
</ul>
<li>Templated "forms" from Excel or databases (requires custom code for databases)</li>
</ul>
<p>&nbsp;</p>
<div>OMG uses a simple templating language system within Word to output the generated documents. It is designed with extensiblity in mind and permits the easy definition of new template functions to be added to the processing cycle.&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<h4>Template commands&nbsp;within Word supports standard programming features such as:</h4>
<ul>
<li>Excel Model references - Easy references to Excel model information&nbsp; (simply include cell names in curly braces - eg {customer} )</li>
<li>IF statements&nbsp; (if Excel value THEN include Word text )</li>
<li>FOREACH statements (foreach cell in a group of cells from Excel)</li>
<li>INCLUDE files&nbsp; (include a file, including the ability to conditionally include a file)</li>
</ul>
<div>&nbsp;</div>
<h3>The Hello World template</h3>
<div>Creating templates are easy - take any existing Word 2010 document and externalise template in it to Excel, then include references in your template to the Excel document.</div>
<div>&nbsp;</div>
<div>1. Create a template</div>
<div>&nbsp;</div>
<div>A simple example document could be: <span style="font-family: courier new,courier;">"Hello World, this is your lucky day - you have been templated!"</span></div>
<div>&nbsp;</div>
<div>2. Externalise content to Excel 2010</div>
<div>&nbsp;</div>
<div>Change the above Word document to:</div>
<div>&nbsp;</div>
<div><span style="font-family: courier new,courier;">"Hello {noun}, this is your lucky day - you have been {verb}-ed!"</span></div>
<div>&nbsp;</div>
<div>The Word document should have a name that ends in ".template".&nbsp;&nbsp; Note also the use of curly braces around 'variables' - See the following for information on variables - <a href="https://en.wikipedia.org/wiki/Variable_(programming">https://en.wikipedia.org/wiki/Variable_(programming</a>)</div>
<div>&nbsp;</div>
<div>Create an Excel file&nbsp;- a common name for the Excel file is "model.xlsx" or similar.&nbsp; This file will typically contain the information used by all templates within the generation, although each document could use different Excel files.&nbsp;&nbsp;Management of&nbsp;information - including validation - is made easier by&nbsp;centralising all the mathematics, modelling and information into a single file however.&nbsp; The reference in the Open Excel call (below) must always be 'model'.</div>
<div>&nbsp;</div>
<div>Create named cells in the Excel file (see below) - for "Noun" and "Verb"</div>
<div>&nbsp;</div>
<div>Eg</div>
<div>&nbsp;</div>
<div>Cell A1 - Value "World", name "Noun"</div>
<div>Cell A2 - Value "Template", name "Verb"</div>
<div>&nbsp;</div>
<div>3. Include a command to open the Excel file in your template</div>
<div>&nbsp;</div>
<div>The full template text (Hello world.template.docx) becomes:</div>
<div><span style="font-family: courier new,courier;">{Excel.Open("model", "Test.xlsx")}</span></div>
<div><span style="font-family: courier new,courier;"><span style="font-family: courier new,courier;">"Hello {noun}, this is your lucky day - you have been {verb}-ed!"</span></span></div>
<div><span></span>&nbsp;</div>
<div><span></span></div>
<div>4. Run OMG - &nbsp;from the attached distribution use the "OMG_Program_beta_2_2011_12_13a" ZIP file and look in the Debug directory</div>
<div>&nbsp;</div>
<div>Run "OfficeTemplateEngine.exe" or "__start_TemplateEngine.cmd"</div>
<div>&nbsp;</div>
<div>For the "Choose a directory..."&nbsp;- use the directory that contains your Word file&nbsp;ending in ".template.docx" - for example&nbsp;if your directory is as follows:</div>
<div>&nbsp;</div>
<div><span style="font-family: courier new,courier;">c:\users\David\Documents\OMG_Example</span></div>
<div>
<div><span style="font-family: courier new,courier;">c:\users\David\Documents\OMG_Example\Hello world.template.docx</span></div>
</div>
<div>&nbsp;</div>
<div>containing a file "Hello world.template.docx" - then use the directory "<span style="font-family: courier new,courier;">c:\users\David\Documents\OMG_Example".</span></div>
<div><span style="font-family: courier new,courier;"></span>&nbsp;</div>
<div><span style="font-family: arial,helvetica,sans-serif;">Loading this directory will indicate that "Hello world.template.docx" is ready to generate.</span></div>
<div><span style="font-family: arial,helvetica,sans-serif;"></span>&nbsp;</div>
<div><span style="font-family: arial,helvetica,sans-serif;">Click the "generate" button</span></div>
<div><span style="font-family: arial,helvetica,sans-serif;"></span>&nbsp;</div>
<div><span style="font-family: arial,helvetica,sans-serif;">5. New files generated</span></div>
<div><span style="font-family: arial,helvetica,sans-serif;">A new file - "Hello world.docx" is created.&nbsp; The '.template' is removed from the filename - this becomes the name of the new output file.</span></div>
<div><span style="font-family: arial,helvetica,sans-serif;"></span>&nbsp;</div>
<div><span style="font-family: arial,helvetica,sans-serif;">The output in the file will be:</span></div>
<div><span style="font-family: arial,helvetica,sans-serif;"><span style="font-family: courier new,courier;">"Hello World, this is your lucky day - you have been Template-ed!"</span></span></div>
<div><span style="font-family: arial,helvetica,sans-serif;"></span></div>
<div>Note that multiple files&nbsp;can be generated in a single run.</div>
<div><br />&nbsp;</div>
<div><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2678.OMG_Process.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2678.OMG_5F00_Process.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2678.OMG_Process.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2678.OMG_5F00_Process.png" /></a></div>
<div></div>
<h2 class="ms-rteElement-H2"><span>Overview</span></h2>
<div><span>Templates are enclosed in curly braces and either refer to an Excel model or execute commands such as opening the model.<span> </span>For example this next line is blank in the output document, but it opens the named Excel document.<span> </span>It creates an internal variable "model" that's referred to later in the document.<span> </span>The italics are ignored for the purposes of executing the template, although the output is styled identically.<span> <br /></span></span></div>
<div><span>The default name that&rsquo;s used for shorthand references to Excel named cells is &ldquo;model&rdquo;, so this is the variable name to generally use when opening an Excel document.</span></div>
<ul>
<li><span>{Excel.Open("model", "Test.xlsx")}</span></li>
</ul>
<div></div>
<h2 class="ms-rteElement-H2"><span>Referring to Excel cells:</span></h2>
<div><span>Referring to Excel cells is via references enclosed in curly braces.<span> </span>These references optionally include an output style (format) after the reference.<span> </span>Creating these names within Excel is covered later in this document.</span></div>
<ul>
<li>
<div class="ms-rteElement-P"><span>Customer: {customer}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Donation amount: {Donation_amount dollar}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Date of donation: {Date_of_donation date}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Quantity: {Quantity}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Percent: {Percent_value percent}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Will you donate? {Definitely_donate yesno}</span></div>
</li>
</ul>
<div></div>
<div><span>There are three types of template commands above:</span></div>
<ul>
<li>
<div class="ms-rteElement-P"><span>Open the Excel model </span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>A simple reference to a named cell &ndash; e.g. &ldquo;customer&rdquo;</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>A reference to a named cell with an output format &ndash; e.g. &ldquo;Date_of_donation date&rdquo;</span></div>
</li>
<ul>
<li>
<div class="ms-rteElement-P"><span>This is the same as a simple reference but with the type after the reference</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Valid formats are date, percent, dollar, yesno or truefalse</span></div>
</li>
</ul>
</ul>
<div></div>
<h2 class="ms-rteElement-H2"><span>Creating named cells in Excel</span></h2>
<div><span>In order to create named cells within Excel use the technique &ldquo;Name a cell or a range of cells&rdquo; in the following document: </span><a href="https://office.microsoft.com/en-us/excel-help/define-and-use-names-in-formulas-HA010342417.aspx#BMcreate_a_name_by_using_a_selection_of"><span style="color: #5d5d6b;" color="#5d5d6b">https://office.microsoft.com/en-us/excel-help/define-and-use-names-in-formulas-HA010342417.aspx#BMcreate_a_name_by_using_a_selection_of</span></a></div>
<div></div>
<div><span>The simplest technique to create a name is as follows (Office 2010):</span></div>
<ul>
<li>
<div class="ms-rteElement-P"><span>Select a cell</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Click in the box shown below and type the name &ndash; eg &ldquo;Customer&rdquo; into the box in the top left underneath the ribbon (highlighted below)</span></div>
</li>
</ul>
<div></div>
<div><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7701.named_cell.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7701.named_5F00_cell.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7701.named_cell.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7701.named_5F00_cell.png" width="449" height="228" /></a></div>
<div></div>
<h2 class="ms-rteElement-H2"><span>Including other documents</span></h2>
<div><span>Include a file:</span></div>
<ul>
<li><span>{Word.Include(&ldquo;IncludedFile.docx&rdquo;)}</span></li>
</ul>
<div></div>
<div></div>
<h2 class="ms-rteElement-H2"><span>Conditionally include a file:</span></h2>
<div><span>{include if ($model.GetNamedCell(&rdquo;Definitely_donate&rdquo;)) &ldquo;IncludeIfTrue.docx&rdquo;}</span></div>
<div></div>
<div></div>
<div></div>
<h2 class="ms-rteElement-H2"><span>IF statements</span></h2>
<div><span>To have a section of the document included or not depending on a variable use the following template text:</span></div>
<div></div>
<div><span>{if ($model.GetNamedCell(&rdquo;Definitely_donate&rdquo;))}</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp; This section of text will only be included if the named cell is true</span></div>
<div><span>{end}</span></div>
<div></div>
<div></div>
<div></div>
<h2 class="ms-rteElement-H2"><span>FOREACH statements</span></h2>
<div><span>A typical requirement is to produce copies of a document for a number of similarly named variables in the Excel document as follows.<span> </span>In the Excel document there are four named cells: Name1, Name2, Name3 and Name4.<span> </span>Note that because Name4 doesn&rsquo;t contain anything it is not included in the foreach results.</span></div>
<div></div>
<div></div>
<div><span>{ foreach ($nameSuffix in $model.GetAllCellsLike(&ldquo;</span><span lang="EN-US">Name&rdquo;</span><span>))}</span></div>
<ul>
<li><span>Name : {Name$nameSuffix}</span></li>
</ul>
<div><span>{end}</span></div>
<div></div>
<div></div>
<h1 class="ms-rteElement-H1">Installation and 'hello world' Guide</h1>
<ul>
<li>Download test</li>
<ul>
<li>Unpack the download</li>
<li>Start __start_TemplateEngine</li>
<li>Click "..."</li>
<li>Choose the configuration file "OMG_Configuration.xml" in the TestDocs <br />directory</li>
<li>Click "generate"</li>
<li>Examine the generated TestDocs\Test.docx file (delete and regenerate if <br />required)</li>
<li>Note well: While the template file can be open in Word during generation - <br />the Excel model can't be open</li>
</ul>
</ul>
<p><em><em>Comments, suggestions or improvements are always welcomed!</em></em></p>
<p><br />&nbsp;</p>
<p><em><em>Screen snapshot below:</em></em></p>
<p><em><em><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7220.omg_interface.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7220.omg_5F00_interface.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2018.omg_interface_large.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2018.omg_5F00_interface_5F00_large.jpg"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2018.omg_interface_large.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2018.omg_5F00_interface_5F00_large.jpg" /></a></em></em></p>
<p></p>
<h1>LICENCE</h1>
<p>This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.</p>
<p>Copyright Microsoft Corporation</p>
<p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except<br />in compliance with the License. You may obtain a copy of the License at <a href="https://www.apache.org/licenses/LICENSE-2.0">https://www.apache.org/licenses/LICENSE-2.0</a></p>
<p>THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER<br />EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE,<br />FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.</p>
<p>See the Apache 2 License for the specific language governing permissions and limitations under the License.</p>
</div>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/9053/00/00/03/47/04/52/distribution_OMG_Beta_2_2011_12_13a.zip" original-url="https://blogs.technet.com/cfs-filesystemfile.ashx/__key/telligent-evolution-components-attachments/01-9053-00-00-03-47-04-52/distribution_5F00_OMG_5F00_Beta_5F00_2_5F00_2011_5F00_12_5F00_13a.zip">distribution_OMG_Beta_2_2011_12_13a.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Office Materials Generator beta - document generation</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/office-materials-generator-beta-document-generation</link>
      <pubDate>Mon, 17 Oct 2011 16:41:00 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2011/10/17/office-materials-generator-beta-document-generation/</guid>
      <description><![CDATA[The Office Materials Generator (OMG) is now beta released.&nbsp; The code works for core functions,...]]></description>
      <content:encoded><![CDATA[<p>The Office Materials Generator (OMG) is now beta released.&nbsp; The code works for core functions, although the beta is time-limited to Dec 31 2011.&nbsp;&nbsp; The licence is at the bottom of this page, and all aspects of the licence must be complied with in order to use the beta code.&nbsp;</p>
<div style="display: inline;" id="ctl00_PlaceHolderMain_PageContent__ControlWrapper_RichHtmlField" class="ms-rtestate-field" aria-labelledby="ctl00_PlaceHolderMain_PageContent_label">
<h1 class="ms-rteElement-H1">​Digital Marketing Office Materials Generator</h1>
<p>OMG is designed to streamline the ability for partners (and customers at a later date) to easily architect Microsoft solutions. It helps to solve a common problem in which different sections of a document (or set of documents) are inconsistent due to the difficulty of ensuring that (for example) the bill of materials matches the architecture diagram.&nbsp; OMG is designed to model all complexity and mathematics in Excel (where it is easily managed), whilst document templates are created within Word.&nbsp; A generation cycle blends the Excel model information with the Word template and generates a set of output documents.</p>
<p>OMG is used to output Word documents for architectural and pricing artifacts such as:</p>
<ul>
<li>Solution benefits overview</li>
<li>Architecture documents</li>
<li>Pricing documents</li>
</ul>
<div>OMG uses a simple templating system within Word to output the generated documents. It is designed with extensiblity in mind and permits the easy definition of new template functions to be added to the processing cycle.&nbsp;&nbsp;</div>
<div>&nbsp;</div>
<div>Template commands in Word&nbsp;supports useful functions such as:</div>
<ul>
<li>If statements&nbsp; (if Excel value THEN include Word&nbsp;text )</li>
<li>Foreach statements (foreach cell in a group of cells from Excel)</li>
<li>Include files&nbsp; (include a file, including the ability to conditionally include a file)</li>
<li>Easy references to Excel model information&nbsp; (simply&nbsp;include cell names in curly braces - eg {customer} )</li>
</ul>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2678.OMG_Process.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2678.OMG_5F00_Process.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2678.OMG_Process.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2678.OMG_5F00_Process.png" /></a></div>
<div>&nbsp;</div>
<h2 class="ms-rteElement-H2"><span>Overview</span></h2>
<div><span>Templates are enclosed in curly braces and either refer to an Excel model or execute commands such as opening the model.<span> </span>For example this next line is blank in the output document, but it opens the named Excel document.<span> </span>It creates an internal variable "model" that's referred to later in the document.<span> </span>The italics are ignored for the purposes of executing the template, although the output is styled identically.<span> <br /></span></span></div>
<div><span>The default name that&rsquo;s used for shorthand references to Excel named cells is &ldquo;model&rdquo;, so this is the variable name to generally use when opening an Excel document.</span></div>
<ul>
<li><span>{Excel.Open("model", "Test.xlsx")}</span></li>
</ul>
<div>&nbsp;</div>
<h2 class="ms-rteElement-H2"><span>Referring to Excel cells:</span></h2>
<div><span>Referring to Excel cells is via references enclosed in curly braces.<span> </span>These references optionally include an output style (format) after the reference.<span> </span>Creating these names within Excel is covered later in this document.</span></div>
<ul>
<li>
<div class="ms-rteElement-P"><span>Customer: {customer}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Donation amount: {Donation_amount dollar}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Date of donation: {Date_of_donation date}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Quantity: {Quantity}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Percent: {Percent_value percent}</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Will you donate? {Definitely_donate yesno}</span></div>
</li>
</ul>
<div></div>
<div><span>There are three types of template commands above:</span></div>
<ul>
<li>
<div class="ms-rteElement-P"><span>Open the Excel model </span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>A simple reference to a named cell &ndash; e.g. &ldquo;customer&rdquo;</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>A reference to a named cell with an output format &ndash; e.g. &ldquo;Date_of_donation date&rdquo;</span></div>
</li>
<ul>
<li>
<div class="ms-rteElement-P"><span>This is the same as a simple reference but with the type after the reference</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Valid formats are date, percent, dollar, yesno or truefalse</span></div>
</li>
</ul>
</ul>
<div></div>
<h2 class="ms-rteElement-H2"><span>Creating named cells in Excel</span></h2>
<div><span>In order to create named cells within Excel use the technique &ldquo;Name a cell or a range of cells&rdquo; in the following document: </span><a href="https://office.microsoft.com/en-us/excel-help/define-and-use-names-in-formulas-HA010342417.aspx#BMcreate_a_name_by_using_a_selection_of"><span style="color: #5d5d6b;" color="#5d5d6b">https://office.microsoft.com/en-us/excel-help/define-and-use-names-in-formulas-HA010342417.aspx#BMcreate_a_name_by_using_a_selection_of</span></a></div>
<div><span></span>&nbsp;</div>
<div><span>The simplest technique to create a name is as follows (Office 2010):</span></div>
<ul>
<li>
<div class="ms-rteElement-P"><span>Select a cell</span></div>
</li>
<li>
<div class="ms-rteElement-P"><span>Click in the box shown below and type the name &ndash; eg &ldquo;Customer&rdquo; into the box in the top left underneath the ribbon (highlighted below)</span></div>
</li>
</ul>
<div></div>
<div><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7701.named_cell.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7701.named_5F00_cell.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7701.named_cell.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7701.named_5F00_cell.png" width="449" height="228" /></a></div>
<div>&nbsp;</div>
<h2 class="ms-rteElement-H2"><span>Including other documents</span></h2>
<div><span>Include a file:</span></div>
<ul>
<li><span>{Word.Include(&ldquo;IncludedFile.docx&rdquo;)}</span></li>
</ul>
<div><br />&nbsp;</div>
<div>&nbsp;</div>
<h2 class="ms-rteElement-H2"><span>Conditionally include a file:</span></h2>
<div><span>{include if ($model.GetNamedCell(&rdquo;Definitely_donate&rdquo;)) &ldquo;IncludeIfTrue.docx&rdquo;}</span></div>
<div><br />&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<h2 class="ms-rteElement-H2"><span>IF statements</span></h2>
<div><span>To have a section of the document included or not depending on a variable use the following template text:</span></div>
<div><span></span>&nbsp;</div>
<div><span>{if ($model.GetNamedCell(&rdquo;Definitely_donate&rdquo;))}</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp; This section of text will only be included if the named cell is true</span></div>
<div><span>{end}</span></div>
<div></div>
<div><br />&nbsp;</div>
<div>&nbsp;</div>
<h2 class="ms-rteElement-H2"><span>FOREACH statements</span></h2>
<div><span>A typical requirement is to produce copies of a document for a number of similarly named variables in the Excel document as follows.<span> </span>In the Excel document there are four named cells: Name1, Name2, Name3 and Name4.<span> </span>Note that because Name4 doesn&rsquo;t contain anything it is not included in the foreach results.</span></div>
<div></div>
<div></div>
<div><span>{ foreach ($nameSuffix in $model.GetAllCellsLike(&ldquo;</span><span lang="EN-US">Name&rdquo;</span><span>))}</span></div>
<ul>
<li><span>Name : {Name$nameSuffix}</span></li>
</ul>
<div><span>{end}</span></div>
<div></div>
<div></div>
<h1 class="ms-rteElement-H1">Installation and 'hello world' Guide</h1>
<ul>
<li>Download test</li>
<ul>
<li>Unpack the download</li>
<li>Start __start_TemplateEngine</li>
<li>Click "..."</li>
<li>Choose the configuration file "OMG_Configuration.xml" in the TestDocs <br />directory</li>
<li>Click "generate"</li>
<li>Examine the generated TestDocs\Test.docx file (delete and regenerate if <br />required)</li>
<li>Note well: While the template file can be open in Word during generation - <br />the Excel model can't be open</li>
</ul>
</ul>
<p><em><em>Comments, suggestions or improvements are always welcomed!</em></em></p>
<p></p>
<p><em><em></em></em>&nbsp;</p>
<p><em><em>Screen snapshot below:</em></em></p>
<p><em><em><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/7220.omg_interface.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/7220.omg_5F00_interface.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2018.omg_interface_large.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2018.omg_5F00_interface_5F00_large.jpg"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/2018.omg_interface_large.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/2018.omg_5F00_interface_5F00_large.jpg" /></a></em></em></p>
<p>&nbsp;</p>
<h1>LICENCE</h1>
<p>This license governs use of the accompanying software. If you use the software, you accept this license. If <br />you do not accept the license, do not use the software.</p>
<p>1. Definitions<br />The terms "reproduce," "reproduction," and "distribution" have the same meaning here as under U.S. <br />copyright law.<br />"You" means the licensee of the software.<br />"Your company" means the company you worked for when you downloaded the software.<br />"Reference use" means use of the software within your company as a reference, in read only form, for the <br />sole purposes of debugging your products, maintaining your products, or enhancing the interoperability of <br />your products with the software, and specifically excludes the right to distribute the software outside of <br />your company.<br />"Licensed patents" means any Licensor patent claims which read directly on the software as distributed by <br />the Licensor under this license.</p>
<p>2. Grant of Rights<br />(A) Copyright Grant- Subject to the terms of this license, the Licensor grants you a non-transferable, <br />non-exclusive, worldwide, royalty-free copyright license to reproduce the software for reference use.<br />(B) Patent Grant- Subject to the terms of this license, the Licensor grants you a non-transferable, <br />non-exclusive, worldwide, royalty-free patent license under licensed patents for reference use.</p>
<p>3. Limitations<br />(A) No Trademark License- This license does not grant you any rights to use the Licensor&rsquo;s name, logo, or <br />trademarks.<br />(B) If you begin patent litigation against the Licensor over patents that you think may apply to the <br />software (including a cross-claim or counterclaim in a lawsuit), your license to the software ends <br />automatically.<br />(C) The software is licensed "as-is." You bear the risk of using it. The Licensor gives no express <br />warranties, guarantees or conditions. You may have additional consumer rights under your local laws which <br />this license cannot change. To the extent permitted under your local laws, the Licensor excludes the <br />implied warranties of merchantability, fitness for a particular purpose and non-infringement.</p>
<p>Copyright 2011 Microsoft Australia Pty Ltd All rights reserved <br /><br /></p>
</div>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/9053/00/00/03/45/98/12/OMG_2011_10_18_beta.zip" original-url="https://blogs.technet.com/cfs-filesystemfile.ashx/__key/telligent-evolution-components-attachments/01-9053-00-00-03-45-98-12/OMG_5F00_2011_5F00_10_5F00_18_5F00_beta.zip">OMG_2011_10_18_beta.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>SPinaBox - SharePoint in a Box - Alpha One release</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/spinabox-sharepoint-in-a-box-alpha-one-release</link>
      <pubDate>Fri, 23 Sep 2011 23:37:00 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2011/09/23/spinabox-sharepoint-in-a-box-alpha-one-release/</guid>
      <description><![CDATA[SharePoint 2010 is an Enterprise class environment, and as such presents a wide range of...]]></description>
      <content:encoded><![CDATA[<p>SharePoint 2010 is an Enterprise class environment, and as such presents a wide range of installation options.&nbsp; SPinaBox (which can be pronounced as spin a box) provides an extensible installation meta-framework for simplified SharePoint installations in small configuration environments.&nbsp; It installs and configures all the SharePoint required infrastructure (such as Active Directory and SQL Server), then uses&nbsp;other&nbsp;frameworks to perform&nbsp; installation and configuration of SharePoint 2010 itself.&nbsp; In short: <em>SharePoint easily installed!</em></p>
<p>The framework provides for:</p>
<ul>
<li>Configuring and creating the Active Directory (AD) server</li>
<ul>
<li>Setting fixed IP</li>
<li>Installing PowerShell ISE</li>
<li>Converting (via dcpromo) a standard Server 2008 machine to be a domain controller</li>
<li>Modifying UAC settings</li>
<li>Registering licence keys for Windows Server 2008</li>
</ul>
<li>Installing and configuring SQL Server 2008 R2</li>
<ul>
<li>Setting UAC off</li>
<li>Installing PowerShell ISE</li>
<li>Registering licence keys</li>
<li>Joining to the domain controller</li>
<li>Creating appropriate local and domain users for managing SQL Server</li>
<li>Assigning rights (such as "logon as a service") via ntrights.exe</li>
<li>Updating the default SQL Server configuration to enable TCP on network interface</li>
</ul>
<li>Installing and configuring SharePoint 2010</li>
<ul>
<li>Creation of domain users for SharePoint</li>
<li>Updating sections of the autospinstaller&nbsp;configuration file from the local SPinaBox configuration file</li>
</ul>
</ul>
<p>The framework requires a minimal number of configuration changes as follows in order to complete an installation of SharePoint, SQL Server and Active Directory</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="127">
<p><span style="color: #333399;"><b>adminPassword</b></span></p>
</td>
<td valign="top" width="462">
<p><span style="color: #333399;">The administrator password (which is used for many of</span><br /><span style="color: #333399;">&nbsp; the passwords within the system by default).&nbsp;</span><br /><span style="color: #333399;">&nbsp; Note that each of these passwords can be changed separately to</span><br /><span style="color: #333399;">&nbsp; increase security.&nbsp; Please also review</span><br /><span style="color: #333399;">&nbsp; the concept of <a href="https://blogs.technet.com/b/wbaer/archive/2010/04/11/managed-accounts.aspx"><span style="color: #333399;">managed<br />&nbsp; accounts</span></a>.</span></p>
</td>
</tr>
<tr>
<td valign="top" width="127">
<p><span style="color: #333399;"><b>myDirectory</b></span></p>
</td>
<td valign="top" width="462">
<p><span style="color: #333399;">This is the &lsquo;home directory&rsquo; for the&nbsp; scripts &ndash; once within the Operating System</span><br /><span style="color: #333399;">&nbsp; to install to, so typically this is a drive such as &ldquo;Y:&rdquo;.</span></p>
</td>
</tr>
<tr>
<td valign="top" width="127">
<p><span style="color: #333399;"><b>domain_core</b></span></p>
</td>
<td valign="top" width="462">
<p><span style="color: #333399;">The domain name of the organisation</span></p>
</td>
</tr>
<tr>
<td valign="top" width="127">
<p><span style="color: #333399;"><b>ou_name</b></span></p>
</td>
<td valign="top" width="462">
<p><span style="color: #333399;">The organisational unit name &ndash; eg &ldquo;payroll&rdquo;,</span><br /><span style="color: #333399;">&nbsp; or &ldquo;IT&rdquo;. This may also be simply &ldquo;Entire company&rdquo;</span></p>
</td>
</tr>
<tr>
<td valign="top" width="127">
<p><span style="color: #333399;"><b>dc_ip_address</b></span></p>
</td>
<td valign="top" width="462">
<p><span style="color: #333399;">The domain controller IP address.&nbsp; Note this will be a fixed IP address.</span></p>
</td>
</tr>
<tr>
<td valign="top" width="127">
<p><span style="color: #333399;"><b>dc_licence_key</b></span></p>
</td>
<td valign="top" width="462">
<p><span style="color: #333399;">The domain controller Operating System</span><br /><span style="color: #333399;">&nbsp; licence key</span></p>
</td>
</tr>
<tr>
<td valign="top" width="127">
<p><span style="color: #333399;"><b>sp2010_license_key</b></span></p>
</td>
<td valign="top" width="462">
<p><span style="color: #333399;">The SharePoint 2010 installation licence</span><br /><span style="color: #333399;">&nbsp; key</span></p>
</td>
</tr>
<tr>
<td valign="top" width="127">
<p><span style="color: #333399;"><b>sp_owa_pidkey</b></span></p>
</td>
<td valign="top" width="462">
<p><span style="color: #333399;">The Office Web Application licence key</span></p>
</td>
</tr>
<tr>
<td valign="top" width="127">
<p><span style="color: #333399;"><b>&nbsp;<span style="font-family: 'Calibri','sans-serif'; font-size: 11pt; mso-fareast-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: EN-AU; mso-fareast-language: JA; mso-bidi-language: AR-SA;">dc_ethernet_adaptor_name</span></b></span></p>
</td>
<td valign="top" width="462">
<p><span style="color: #333399;">&nbsp;Note that only part of the name is required. This is a regular expression.&nbsp; For example if there were two Ethernet adaptors in a server with names "Intel 82577" and "Intel(R)<br />Centrino(R) Ultimate-N 6300 AGN" then a simple word such as "82577" would identify the first one, and "6300" would uniquely identify the second one.</span></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Please feel free to try out SPinaBox today - we're keen for comments and / or bugs!</p>
<ul>
<li>Status: With the out of the box settings and two blank VMs - it installs SharePoint 2010 in under an hour and a half, and with about 10 minutes&nbsp;of "enter" keypressing from the user.&nbsp;</li>
<li>It comes with a 33 page detailed installation manual (largely screenshots).&nbsp; The user has to type about&nbsp;10 short commands to fully install SharePoint 2010.</li>
<li>Prerequisites: Access to MSDN or SharePoint / SQL Server / Server 2008 installation media.</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Enabling TCP/IP on multiple interfaces using PowerShell (part of hands free SQL Server installation)</title>
      <link>https://docs.microsoft.com/archive/blogs/digital_musketeer/enabling-tcpip-on-multiple-interfaces-using-powershell-part-of-hands-free-sql-server-installation</link>
      <pubDate>Fri, 16 Sep 2011 04:08:00 GMT</pubDate>
      <dc:creator><![CDATA[David Ford - davidfordaus]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/digital_musketeer/2011/09/16/enabling-tcpip-on-multiple-interfaces-using-powershell-part-of-hands-free-sql-server-installation/</guid>
      <description><![CDATA[In trying to install SQL Server completely "hands free" I struck a&nbsp;snag &nbsp;- by default the...]]></description>
      <content:encoded><![CDATA[<p>In trying to install SQL Server completely "hands free" I struck a&nbsp;snag &nbsp;- by default the TCP/IP protocol is installed, but the interfaces are all "Enabled=false", which would require a manual step to enable them.</p>
<p>Naturally - PowerShell to the rescue!</p>
<p>To view the basic post-install state, open up the SQL Server Configuration Manager (below)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/0456.tcp.gif" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/0456.tcp.gif"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/0456.tcp.gif" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/0456.tcp.gif" width="587" height="373" /></a></p>
<p>&nbsp;</p>
<p>Double-click TCP/IP and switch to the "IP Addresses" tab.&nbsp; Ah ha!&nbsp; The culprit - "enabled" is set to "No" on each interface (IP1, IP2, etc)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/4503.tcp_list.gif" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/4503.tcp_5F00_list.gif"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/53/4503.tcp_list.gif" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-53/4503.tcp_5F00_list.gif" width="637" height="495" /></a></p>
<p>&nbsp;</p>
<p>After some basic searching I found the following Technet article - however it enables TCP "in general", but not specifically for each interface.&nbsp; After further searching - I didn't find a suitable script to fix the problem, so I was forced to research and build one (see below).</p>
<p>&nbsp;</p>
<p>The following script sets "Enabled" and the "Port" for each IP address.&nbsp; Note the odd structure of ipaddressproperties field underneath a given ipaddress.</p>
<p>Enjoy!</p>
<p>&nbsp;</p>
<p>As always - comments / fixes are welcomed!</p>
<p>&nbsp;</p>
<p><span style="font-family: courier new,courier;">$smo = 'Microsoft.SqlServer.Management.Smo.'</span><br /><span style="font-family: courier new,courier;">$wmi = new-object ($smo + 'Wmi.ManagedComputer')</span></p>
<p><span style="font-family: courier new,courier;"># From: <a href="https://technet.microsoft.com/en-us/library/dd206997.aspx">https://technet.microsoft.com/en-us/library/dd206997.aspx</a></span></p>
<p><span style="font-family: courier new,courier;"># List the object properties, including the instance names.</span><br /><span style="font-family: courier new,courier;"># $Wmi # Uncomment to view</span></p>
<p><span style="font-family: courier new,courier;"># Enable the TCP protocol on the default instance.</span></p>
<p><span style="font-family: courier new,courier;"># SQL Server name should be simple - eg "SP2010".&nbsp; Instance name by default is SQLSERVER.&nbsp; </span><br /><span style="font-family: courier new,courier;">$uri = "ManagedComputer[@Name='YOUR SQL SERVER NAME']/ServerInstance[@Name='INSTANCE NAME']/ServerProtocol[@Name='Tcp']"</span><br /><span style="font-family: courier new,courier;">$Tcp = $wmi.GetSmoObject($uri)</span><br /><span style="font-family: courier new,courier;">$Tcp.IsEnabled = $true</span><br /><span style="font-family: courier new,courier;">$TCP.alter()</span><br /><span style="font-family: courier new,courier;"># </span><br /><span style="font-family: courier new,courier;"># To view properties, use - $tcp.ipaddresses[1].ipaddressproperties or</span><br /><span style="font-family: courier new,courier;">#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tcp.ipaddresses[1].ipaddressproperties[0]</span><br /><span style="font-family: courier new,courier;"># </span><br /><span style="font-family: courier new,courier;">foreach ($tcpAddress in $Tcp.ipaddresses) {</span><br /><span style="font-family: courier new,courier;">&nbsp;foreach ($property in $tcpAddress.ipaddressproperties) {</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;if ($property.Name -eq "Enabled") {</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;$property.Value=[bool]1</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;$Tcp.Alter</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;}</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;if ($property.Name -eq "Port") {</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;$property.Value=1433</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;$Tcp.Alter</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;}</span><br /><span style="font-family: courier new,courier;">&nbsp;}</span><br /><span style="font-family: courier new,courier;">}</span><br /><span style="font-family: courier new,courier;">$Tcp</span></p>
<p><span style="font-family: courier new,courier;"># Enable the named pipes protocol for the default instance.</span><br /><span style="font-family: courier new,courier;">$uri = "ManagedComputer[@Name='$sp2010_server_name']/ ServerInstance[@Name='$sql_instanceName']/ServerProtocol[@Name='Np']"</span><br /><span style="font-family: courier new,courier;">$Np = $wmi.GetSmoObject($uri)</span><br /><span style="font-family: courier new,courier;">$Np.IsEnabled = $true</span><br /><span style="font-family: courier new,courier;">$Np.Alter()</span><br /><span style="font-family: courier new,courier;">$Np</span></p>
<p><span style="font-family: courier new,courier;">Restart-Service 'MSSQL$SQLSERVER' -Force</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>