<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.3">Jekyll</generator><link href="https://wiseman.net.au/feed.xml" rel="self" type="application/atom+xml" /><link href="https://wiseman.net.au/" rel="alternate" type="text/html" /><updated>2023-11-13T00:48:19+00:00</updated><id>https://wiseman.net.au/feed.xml</id><title type="html">Mark Wiseman</title><subtitle>A place for me to write stuff about code and stuff...</subtitle><entry><title type="html">Simple Email Folder Strategy</title><link href="https://wiseman.net.au/2023-11-13/simple-email-folder-strategy" rel="alternate" type="text/html" title="Simple Email Folder Strategy" /><published>2023-11-13T00:00:00+00:00</published><updated>2023-11-13T00:00:00+00:00</updated><id>https://wiseman.net.au/2023-11-13/simple-email-folder-strategy</id><content type="html" xml:base="https://wiseman.net.au/2023-11-13/simple-email-folder-strategy">&lt;p&gt;Managing emails can be tough and I have been through a number of different patterns &amp;amp; practices over the years trying to wrangle the breast. Most of these strategies require manaully action / move emails to be organised and ulitmatley it gets out of control.&lt;/p&gt;

&lt;p&gt;I’ve now landed on a four folder system that allows me to quickly action email that I need to and remove “most” of the noise.&lt;/p&gt;

&lt;p&gt;Here are the folders you need:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Inbox&lt;/li&gt;
  &lt;li&gt;Invite&lt;/li&gt;
  &lt;li&gt;CC&lt;/li&gt;
  &lt;li&gt;Feed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To enable automatically sorting of emails we only need 3-ish simple Rules and it’s important that we keep them in this order so that they land in the right place.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Feed Rule(s)&lt;/li&gt;
  &lt;li&gt;Invite Rule&lt;/li&gt;
  &lt;li&gt;CC Rule&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;1-feed-rules&quot;&gt;1. Feed Rule(s)&lt;/h2&gt;

&lt;p&gt;This rule will evolve over time. For me it is a “Sender Based Rule”.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sender address includes&lt;/code&gt; the following &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@sharepointonline.com&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@atlassian.com&lt;/code&gt; then &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Move to&lt;/code&gt; the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Feed&lt;/code&gt; folder&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This can end up being multiples rules if you want to target specific subject lines or body text&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Feed - Sender Address Includes&lt;/li&gt;
  &lt;li&gt;Feed - Body Includes&lt;/li&gt;
  &lt;li&gt;Feed - Subject Includes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;2-invite-rule&quot;&gt;2. Invite Rule&lt;/h2&gt;

&lt;p&gt;This is really easy and helps with managing your schedule a lot.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Type&lt;/code&gt; is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Invitation&lt;/code&gt; then &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Move to&lt;/code&gt; the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Invite&lt;/code&gt; folder&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;3-cc-rule&quot;&gt;3. CC Rule&lt;/h2&gt;

&lt;p&gt;CC emails can get realy noisy when you work for a large company. This is antoher great one for clearing out the noise&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;I'm not in the To line&lt;/code&gt; then &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Move to&lt;/code&gt; the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CC&lt;/code&gt; folder&lt;/p&gt;
&lt;/blockquote&gt;</content><author><name>{&quot;twitter&quot;=&gt;&quot;markwiseman&quot;, &quot;picture&quot;=&gt;&quot;https://wiseman.net.au/assets/img/mark.wiseman.jpg&quot;}</name></author><category term="email" /><summary type="html">Managing emails can be tough and I have been through a number of different patterns &amp;amp; practices over the years trying to wrangle the breast. Most of these strategies require manaully action / move emails to be organised and ulitmatley it gets out of control.</summary></entry><entry><title type="html">Sitecore Content Hub Importing DRM Contracts Rights Profiles</title><link href="https://wiseman.net.au/2020-06-01/sitecore-content-hub-importing-drm-contract-rights-profile" rel="alternate" type="text/html" title="Sitecore Content Hub Importing DRM Contracts Rights Profiles" /><published>2020-06-01T00:00:00+00:00</published><updated>2020-06-01T00:00:00+00:00</updated><id>https://wiseman.net.au/2020-06-01/sitecore-content-hub-importing-drm-contract-rights-profile</id><content type="html" xml:base="https://wiseman.net.au/2020-06-01/sitecore-content-hub-importing-drm-contract-rights-profile">&lt;p&gt;When importing data into Sitecore’s Content Hub, finding the required fields and values generally makes sense. Howerver when trying to import the Rights Profiles for DRM Contracts though, the mapping isn’t as simple as you would expect.&lt;/p&gt;

&lt;p&gt;In this article I’d like to show you the steps I followed to get the import to work.&lt;/p&gt;

&lt;p&gt;First I tried following the Taxonomy pattern:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Field name: AssetToAssetType&lt;/li&gt;
  &lt;li&gt;Value name: M.AssetType.&lt;strong&gt;Backdrop&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I tried using the Id:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;URL: https://xxx.stylelabsdemo.com/en-us/drm/contract/&lt;strong&gt;11000&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Value: &lt;strong&gt;11000&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The right place to look is the &lt;strong&gt;Entity Manager&lt;/strong&gt; to find the &lt;strong&gt;Identifier&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Click on &lt;strong&gt;Manage&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Click on &lt;strong&gt;Entities&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Select &lt;strong&gt;M.DRM.RightsProfile&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Click &lt;strong&gt;View detail&lt;/strong&gt; for the right’s profile you’d like to use&lt;/li&gt;
  &lt;li&gt;Select the &lt;strong&gt;Technical&lt;/strong&gt; Section&lt;/li&gt;
  &lt;li&gt;Copy the &lt;strong&gt;Identifier&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img alt=&quot;Rights Profile Identifier&quot; src=&quot;https://wiseman.net.au/assets/img/2020-06-01/rights-profile-identifier.png&quot; /&gt;&lt;/p&gt;</content><author><name>{&quot;twitter&quot;=&gt;&quot;markwiseman&quot;, &quot;picture&quot;=&gt;&quot;https://wiseman.net.au/assets/img/mark.wiseman.jpg&quot;}</name></author><category term="sitecore" /><category term="contenthub" /><summary type="html">When importing data into Sitecore’s Content Hub, finding the required fields and values generally makes sense. Howerver when trying to import the Rights Profiles for DRM Contracts though, the mapping isn’t as simple as you would expect.</summary></entry><entry><title type="html">Sitecore Content Hub Page Permissions</title><link href="https://wiseman.net.au/2020-05-20/sitecore-content-hub-page-permissions" rel="alternate" type="text/html" title="Sitecore Content Hub Page Permissions" /><published>2020-05-20T00:00:00+00:00</published><updated>2020-05-20T00:00:00+00:00</updated><id>https://wiseman.net.au/2020-05-20/sitecore-content-hub-page-permissions</id><content type="html" xml:base="https://wiseman.net.au/2020-05-20/sitecore-content-hub-page-permissions">&lt;p&gt;I have been working through the Sitecore Content Hub Training and got stuck trying to configure page permissions for ages. Every time that I tried to add the &lt;strong&gt;Portal.Page&lt;/strong&gt; condition all I could select was the &lt;strong&gt;Home&lt;/strong&gt; value.&lt;/p&gt;

&lt;p&gt;It turns out it is just a slight oversight in user experience and the trick is to click on the actual name of the Home item.&lt;/p&gt;

&lt;p&gt;This affects version &lt;strong&gt;3.1.04&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;page permissions drill down&quot; src=&quot;https://wiseman.net.au/assets/img/2020-05-20/page-drill-down.gif&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I think updating it to function like the Taxonomy Selector for Asset details would be much better:&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;taxonomy selector&quot; src=&quot;https://wiseman.net.au/assets/img/2020-05-20/taxonomy-selector.gif&quot; width=&quot;450px&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;adding-page-permissions&quot;&gt;Adding page permissions&lt;/h2&gt;
&lt;p&gt;In case you are interested here is the process to add page permissions to a User Group here are the steps I use.&lt;/p&gt;

&lt;h3 id=&quot;navigate-to-the-user-group-you-would-like-to-edit&quot;&gt;Navigate to the User Group you would like to edit&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;Navigate to: Manage &amp;gt; Users &amp;gt; User Groups &amp;gt; Policies&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;create-a-new-rule&quot;&gt;Create a new Rule&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;Click New Rule&lt;/li&gt;
  &lt;li&gt;Search for “page”&lt;/li&gt;
  &lt;li&gt;Select: “Portal page (Portal.page)”&lt;/li&gt;
  &lt;li&gt;Click OK&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img alt=&quot;select new rule&quot; src=&quot;https://wiseman.net.au/assets/img/2020-05-20/01-new-rule.gif&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;add-the-portal-pages&quot;&gt;Add the Portal Pages&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;Click “Add Condition”&lt;/li&gt;
  &lt;li&gt;Search for “page”&lt;/li&gt;
  &lt;li&gt;Select: “Portal page (Portal.page)”&lt;/li&gt;
  &lt;li&gt;Click Select&lt;/li&gt;
  &lt;li&gt;Select the desired Pages: Asset Detail Page, Mass edit, Order, Reports&lt;/li&gt;
  &lt;li&gt;Click Select&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img alt=&quot;select new rule&quot; src=&quot;https://wiseman.net.au/assets/img/2020-05-20/02-add-portal-page.gif&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;add-the-rights--save&quot;&gt;Add the Rights &amp;amp; Save&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;Select the desired Permissions: Read&lt;/li&gt;
  &lt;li&gt;Click Save&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img alt=&quot;select new rule&quot; src=&quot;https://wiseman.net.au/assets/img/2020-05-20/03-add-permission.gif&quot; /&gt;&lt;/p&gt;</content><author><name>{&quot;twitter&quot;=&gt;&quot;markwiseman&quot;, &quot;picture&quot;=&gt;&quot;https://wiseman.net.au/assets/img/mark.wiseman.jpg&quot;}</name></author><category term="sitecore" /><category term="contenthub" /><summary type="html">I have been working through the Sitecore Content Hub Training and got stuck trying to configure page permissions for ages. Every time that I tried to add the Portal.Page condition all I could select was the Home value.</summary></entry><entry><title type="html">Documenting Software Architecture using the c4model and PlantUML</title><link href="https://wiseman.net.au/2020-04-22/document-software-using-c4model-and-plantuml" rel="alternate" type="text/html" title="Documenting Software Architecture using the c4model and PlantUML" /><published>2020-04-22T00:00:00+00:00</published><updated>2020-04-22T00:00:00+00:00</updated><id>https://wiseman.net.au/2020-04-22/document-software-using-c4model-and-plantuml</id><content type="html" xml:base="https://wiseman.net.au/2020-04-22/document-software-using-c4model-and-plantuml">&lt;p&gt;As someone who has always loved process improvement and finding the patterns is what we do, I am constantly on the lookout for ways to do things better. On a recent project I was documenting the Software Architecture… again, and I so I opened Visio… again and that same dread of “How the hell am I going to document this so it makes sense” hit me.&lt;/p&gt;

&lt;p&gt;I decided to do a search and find out what other people are doing now when I came across the &lt;a href=&quot;https://c4model.com/&quot;&gt;c4model&lt;/a&gt; which can be easily authored using one of my favourite documentation tools &lt;a href=&quot;https://plantuml.com/&quot;&gt;PlantUml&lt;/a&gt;. I couldn’t help but jump in.&lt;/p&gt;

&lt;p&gt;Very briefly the c4model provides 4 (as in c4) levels of abstraction for documenting a project.&lt;/p&gt;

&lt;p&gt;The top layer provides a limited set of components to keep the document simple. As we step down into each layer a few more components are added, gradually adding more detail.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;c4model overview&quot; src=&quot;https://wiseman.net.au/assets/img/2020-04-22/c4-overview.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The components are far simpler to remember than all the permutations of UML yet detailed enough to provide a consistent language for describing your application.&lt;/p&gt;

&lt;p&gt;Make sure you watch this video by Simon Brown (the creator of the model) because its a great introduction.&lt;/p&gt;

&lt;div class=&quot;embed-youtube&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/x2-rSnhpw0g&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;h2 id=&quot;combining-c4-with-plantuml&quot;&gt;Combining c4 with PlantUML&lt;/h2&gt;

&lt;p&gt;The process to generate these documents with PlantUML is really simple thanks to the &lt;a href=&quot;https://github.com/RicardoNiepel/C4-PlantUML&quot;&gt;C4-PlantUML&lt;/a&gt; extension created by RicardoNiepel.&lt;/p&gt;

&lt;h3 id=&quot;1-include-a-reference-to-the-required-extension-from-at-the-top-of-our-document&quot;&gt;1. Include a reference to the required extension from at the top of our document.&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;' Context Diagram
!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Context.puml

' Container Diagram
!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Container.puml

' Component Diagram
!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Component.puml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-start-adding-the-custom-types-included-in-the-extension-for-your-diagram&quot;&gt;2. Start adding the custom types included in the extension for your diagram.&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Person(personAlias, &quot;Label&quot;, &quot;Optional Description&quot;)
Container(containerAlias, &quot;Label&quot;, &quot;Technology&quot;, &quot;Optional Description&quot;)
System(systemAlias, &quot;Label&quot;, &quot;Optional Description&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;3-add-the-required-relationships&quot;&gt;3. Add the required relationships.&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Rel(personAlias, containerAlias, &quot;Label&quot;, &quot;Optional Technology&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;testing-it-out-online&quot;&gt;Testing it out online&lt;/h2&gt;

&lt;p&gt;You can easily test this process out online simply by using the free PlantUml Editor.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Navigate to: &lt;a href=&quot;https://www.planttext.com/&quot;&gt;https://www.planttext.com/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Paste the example Container diagram below&lt;/li&gt;
  &lt;li&gt;Hit &lt;strong&gt;Refresh&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@startuml C4_Elements
!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Container.puml

Person(personAlias, &quot;Label&quot;, &quot;Optional Description&quot;)
Container(containerAlias, &quot;Label&quot;, &quot;Technology&quot;, &quot;Optional Description&quot;)
System(systemAlias, &quot;Label&quot;, &quot;Optional Description&quot;)

Rel(personAlias, containerAlias, &quot;Label&quot;, &quot;Optional Technology&quot;)
@enduml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;setting-it-up-locally&quot;&gt;Setting it up locally&lt;/h2&gt;

&lt;p&gt;This process allows us to author the diagram directly from Visual Studio Code. I like it because everything is local, your business-sensitive diagrams aren’t going out to the interwebs.&lt;/p&gt;

&lt;h3 id=&quot;chocolatey&quot;&gt;Chocolatey&lt;/h3&gt;

&lt;p&gt;There are a few applications we need setup for this process.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;choco install plantuml
choco install graphviz
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;vs-code&quot;&gt;VS Code&lt;/h3&gt;

&lt;p&gt;Install the PlantUML Extension&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ext install plantuml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Configure PlantUML&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Navigate to: &lt;strong&gt;Extensions&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Select: &lt;strong&gt;PlantUML&lt;/strong&gt; &amp;gt; &lt;strong&gt;Extension Settings&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Update:
    &lt;ul&gt;
      &lt;li&gt;Setting: &lt;strong&gt;PlantUML: JAR&lt;/strong&gt;&lt;/li&gt;
      &lt;li&gt;Value: &lt;strong&gt;C:\ProgramData\chocolatey\lib\plantuml\tools\plantuml.jar&lt;/strong&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;formatting-plantuml&quot;&gt;Formatting PlantUML&lt;/h2&gt;

&lt;p&gt;Here is an example of how simple it is to author and preview these documents in VS Code.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;PlantUML c4model diagram generation&quot; src=&quot;https://wiseman.net.au/assets/img/2020-04-22/PlantUML-c4model-generation.gif&quot; width=&quot;500px&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;c4model: &lt;a href=&quot;https://c4model.com/&quot;&gt;https://c4model.com/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;c4model PlantUML Extension: &lt;a href=&quot;https://github.com/RicardoNiepel/C4-PlantUML&quot;&gt;https://github.com/RicardoNiepel/C4-PlantUML&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;VS Code Plant UML Extension: &lt;a href=&quot;https://github.com/qjebbs/vscode-plantuml.git&quot;&gt;https://github.com/qjebbs/vscode-plantuml.git&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;PlantUML &lt;a href=&quot;https://plantuml.com/&quot;&gt;https://plantuml.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name>{&quot;twitter&quot;=&gt;&quot;markwiseman&quot;, &quot;picture&quot;=&gt;&quot;https://wiseman.net.au/assets/img/mark.wiseman.jpg&quot;}</name></author><category term="documentation" /><category term="c4model" /><category term="plantuml" /><summary type="html">As someone who has always loved process improvement and finding the patterns is what we do, I am constantly on the lookout for ways to do things better. On a recent project I was documenting the Software Architecture… again, and I so I opened Visio… again and that same dread of “How the hell am I going to document this so it makes sense” hit me.</summary></entry><entry><title type="html">Confluence Deployment Plan Template</title><link href="https://wiseman.net.au/2020-01-09/atlassian-confluence-deployment-plan-template" rel="alternate" type="text/html" title="Confluence Deployment Plan Template" /><published>2020-01-09T00:00:00+00:00</published><updated>2020-01-09T00:00:00+00:00</updated><id>https://wiseman.net.au/2020-01-09/atlassian-confluence-deployment-plan-template</id><content type="html" xml:base="https://wiseman.net.au/2020-01-09/atlassian-confluence-deployment-plan-template">&lt;p&gt;Deployment plans are an essential part of Software development but if you ask any developer to actually do one expect to see some eyes rolling! This article details the templates that I regularly use in Confluence to make this process easier to manage and report on.&lt;/p&gt;

&lt;h2 id=&quot;the-templates-in-action&quot;&gt;The Templates in Action&lt;/h2&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan-overview.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan-overview-thumb.png&quot; alt=&quot;Confluence Deployment Plan Overview&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan-thumb.png&quot; alt=&quot;Confluence Deployment Plan&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;deployment-plan-templates&quot;&gt;Deployment Plan Templates&lt;/h2&gt;

&lt;p&gt;To ensure this is a repeatable process create a template in Confluence for this page. If you can’t, create a blank page that can be copied each time.&lt;/p&gt;

&lt;p&gt;I can’t stress enough here how valuable it is to use the Templates helpers. It will ensure that the authors of these templates know what values they should be using / what is expected in each section.&lt;/p&gt;

&lt;p&gt;I will only talk to the key configuration elements here. The rest is really just content.&lt;/p&gt;

&lt;h3 id=&quot;page-properties-macro&quot;&gt;Page Properties Macro&lt;/h3&gt;

&lt;p&gt;&lt;img alt=&quot;Confluence Deployment Plan Page Properties&quot; src=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan-page-properties.png&quot; width=&quot;500px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;At the top of the page we need a Page Properties Macro. This is what will allow us to produce the deployment plan overview report.&lt;/p&gt;

&lt;p&gt;In the template I include all the valid statuses  of a deployment plan for reference. But you can see how the template helper text will be valuable as this deployment plan moves through each environment.&lt;/p&gt;

&lt;h3 id=&quot;description-of-change-jira-issuefilter-macro&quot;&gt;Description of Change: Jira Issue/Filter Macro&lt;/h3&gt;

&lt;p&gt;&lt;img alt=&quot;Confluence Deployment Plan Description of Change&quot; src=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan-description-of-change.png&quot; width=&quot;500px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I recommend using Fix Versions in JIRA to track your deployments. These are more reliable than just referencing a sprint or tickets directly.&lt;/p&gt;

&lt;p&gt;The query I set by default: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;project = PHO fixVersion = 'XXX' ORDER BY priority DESC&lt;/code&gt;&lt;/p&gt;

&lt;h3 id=&quot;manual-steps-jira-issuefilter-macro&quot;&gt;Manual Steps: Jira Issue/Filter Macro&lt;/h3&gt;

&lt;p&gt;&lt;img alt=&quot;Confluence Deployment Plan Manual Steps&quot; src=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan-manual-steps.png&quot; width=&quot;500px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I like to use this technique to track manual steps because if developers are continually adding manual step to a deployment plan, then their feature is not included in the release, they need to come back delete and move it.&lt;/p&gt;

&lt;p&gt;If they maintain any manual steps within the related ticket(s) everything is moved as one.&lt;/p&gt;

&lt;p&gt;So, to support this technique&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Any JIRA tickets that require manual deployments need to be tagged with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;deployment-steps&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;The deployment steps should then be recorded in the ticket. I prefer to have a separate field but if that is not an option you can do things like putting them in a comment with a bold &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Deployment Steps&lt;/code&gt; title&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The default query I set in the template looks like this: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;project = PHO fixVersion = 'XXX' AND labels = deployment-steps ORDER BY priority DESC&lt;/code&gt;&lt;/p&gt;

&lt;h3 id=&quot;labels&quot;&gt;Labels&lt;/h3&gt;

&lt;p&gt;&lt;img alt=&quot;Confluence Deployment Plan Labels&quot; src=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan-labels.png&quot; width=&quot;500px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s important that our template has the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;deployment-plan&lt;/code&gt; label added by default. Otherwise it won’t show up in our report.&lt;/p&gt;

&lt;h2 id=&quot;deployment-plan-overviews&quot;&gt;Deployment Plan Overviews&lt;/h2&gt;

&lt;h3 id=&quot;create-deployment-plan-create-from-template-macro&quot;&gt;Create Deployment Plan: Create from Template Macro&lt;/h3&gt;

&lt;p&gt;&lt;img alt=&quot;Confluence Deployment Plan Create from Template&quot; src=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan-create-from-template-macro.png&quot; width=&quot;500px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The only customisation I use here is for Template Name.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Template name: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@currentDate Deployment Plan&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@currentDate&lt;/code&gt; will prefix the deployment plan’s name with today’s date which helps for default sorting.&lt;/p&gt;

&lt;h3 id=&quot;deployment-plan-list-page-properties-report&quot;&gt;Deployment Plan List: Page Properties Report&lt;/h3&gt;

&lt;p&gt;&lt;img alt=&quot;Confluence Deployment Plan Page Properties Report&quot; src=&quot;https://wiseman.net.au/assets/img/2020-01-09/confluence-deployment-plan-page-properties-report.png&quot; width=&quot;500px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The customisation we use here are&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Label: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;deployment-plan&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;In space: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Current space&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Columns to Show: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Author, Deployment Date, Version, Status&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Sort By: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Deployment Date&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Reverse Sort: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;checked&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name>{&quot;twitter&quot;=&gt;&quot;markwiseman&quot;, &quot;picture&quot;=&gt;&quot;https://wiseman.net.au/assets/img/mark.wiseman.jpg&quot;}</name></author><category term="atlassian" /><category term="confluence" /><category term="jira" /><category term="documentation" /><category term="template" /><summary type="html">Deployment plans are an essential part of Software development but if you ask any developer to actually do one expect to see some eyes rolling! This article details the templates that I regularly use in Confluence to make this process easier to manage and report on.</summary></entry><entry><title type="html">Sitecore Solr Setup Script</title><link href="https://wiseman.net.au/2019-12-06/sitecore-solr-setup-script" rel="alternate" type="text/html" title="Sitecore Solr Setup Script" /><published>2019-12-06T00:00:00+00:00</published><updated>2019-12-06T00:00:00+00:00</updated><id>https://wiseman.net.au/2019-12-06/sitecore-solr-setup-script</id><content type="html" xml:base="https://wiseman.net.au/2019-12-06/sitecore-solr-setup-script">&lt;p&gt;Running multiple versions of Solr when managing different versions of Sitecore can be a pain.&lt;/p&gt;

&lt;p&gt;To make life easier I put this script together that will allow you to install the correct version of Solr using SSL that matches your version of Sitecore.&lt;/p&gt;

&lt;p&gt;See the Git repo for full instructions details: &lt;a href=&quot;https://github.com/mawiseman/sitecore-setup-solr&quot;&gt;https://github.com/mawiseman/sitecore-setup-solr&lt;/a&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-powershell&quot; data-lang=&quot;powershell&quot;&gt;&lt;span class=&quot;n&quot;&gt;PS&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;C:\projects\sitecore-solr-setup\src&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;\install.ps1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;img src=&quot;https://wiseman.net.au/assets/img/2019-12-06-sitecore-solr-setup-script/solr-install-menu.gif&quot; alt=&quot;Solr Install Menu&quot; /&gt;&lt;/p&gt;</content><author><name>{&quot;twitter&quot;=&gt;&quot;markwiseman&quot;, &quot;picture&quot;=&gt;&quot;https://wiseman.net.au/assets/img/mark.wiseman.jpg&quot;}</name></author><category term="sitecore" /><category term="solr" /><category term="powershell" /><summary type="html">Running multiple versions of Solr when managing different versions of Sitecore can be a pain.</summary></entry><entry><title type="html">Generate a pfx using p7s and key</title><link href="https://wiseman.net.au/2019-11-18/generate-a-pfx-using-p7s-and-key" rel="alternate" type="text/html" title="Generate a pfx using p7s and key" /><published>2019-11-18T00:00:00+00:00</published><updated>2019-11-18T00:00:00+00:00</updated><id>https://wiseman.net.au/2019-11-18/generate-a-pfx-using-p7s-and-key</id><content type="html" xml:base="https://wiseman.net.au/2019-11-18/generate-a-pfx-using-p7s-and-key">&lt;p&gt;It’s the end of 2019 and I can’t believe I am dealing with this again.&lt;/p&gt;

&lt;p&gt;I can’t remember the last time I had to generate a pfx for installation in IIS but it has been frustrating enough for me to blog about so I remember for next time.&lt;/p&gt;

&lt;h2 id=&quot;pre-requisites&quot;&gt;Pre-requisites&lt;/h2&gt;

&lt;p&gt;OpenSSL. A quick way to install in on Windows is via chocolatey&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-powershell&quot; data-lang=&quot;powershell&quot;&gt;&lt;span class=&quot;n&quot;&gt;choco&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;OpenSSL.Light&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Files form client&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;my_domain.p7s&lt;/li&gt;
  &lt;li&gt;my_domain.key&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;generate-the-pks&quot;&gt;Generate the PKS&lt;/h2&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-powershell&quot; data-lang=&quot;powershell&quot;&gt;&lt;span class=&quot;c&quot;&gt;# First generate a cer file&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;openssl&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;pkcs7&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-print_certs&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-in&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;my_domain.p7s&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-out&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;my_domain.cer&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;

&lt;/span&gt;&lt;span class=&quot;c&quot;&gt;# Second generate a cer file&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;openssl&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;pkcs12&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-export&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-inkey&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;my_domain.key&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-in&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;my_domain.cer&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-out&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;my_domain.pfx&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;You can now install the pfx on the windows server!&lt;/p&gt;</content><author><name>{&quot;twitter&quot;=&gt;&quot;markwiseman&quot;, &quot;picture&quot;=&gt;&quot;https://wiseman.net.au/assets/img/mark.wiseman.jpg&quot;}</name></author><category term="iis" /><category term="ssl" /><summary type="html">It’s the end of 2019 and I can’t believe I am dealing with this again.</summary></entry><entry><title type="html">Developer Machine Setup</title><link href="https://wiseman.net.au/2019-11-17/developer-machine-setup" rel="alternate" type="text/html" title="Developer Machine Setup" /><published>2019-11-17T00:00:00+00:00</published><updated>2019-11-17T00:00:00+00:00</updated><id>https://wiseman.net.au/2019-11-17/developer-machine-setup</id><content type="html" xml:base="https://wiseman.net.au/2019-11-17/developer-machine-setup">&lt;p&gt;There are periods of your life as a developer either at home of at work where you go through a cycle of re-build your machine (and other) a seemingly high number of times and the real grind is getting your tools setup and installed each time.&lt;/p&gt;

&lt;p&gt;The Windows 10 Development environment is a good place to start if you need a VM running Visual Studio but what about all of your other sweet dev tools?&lt;/p&gt;

&lt;p&gt;The applications listed below are what I use everyday as a Sitecore developer you will want to update your to suite your situation.&lt;/p&gt;

&lt;p&gt;Here is the process.&lt;/p&gt;

&lt;h2 id=&quot;enable-powershell-scripts&quot;&gt;Enable PowerShell Scripts&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Open &lt;strong&gt;Powershell&lt;/strong&gt; as an &lt;strong&gt;Administrator&lt;/strong&gt; and run the following script&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-powershell&quot; data-lang=&quot;powershell&quot;&gt;&lt;span class=&quot;n&quot;&gt;Set-ExecutionPolicy&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Bypass&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;install-powershell-modules--windows-components&quot;&gt;Install PowerShell Modules &amp;amp; Windows Components&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Download &lt;strong&gt;powershell-iis-and-default-modules.ps1&lt;/strong&gt; file to &lt;strong&gt;c:\temp&lt;/strong&gt; &lt;a href=&quot;https://gist.github.com/mawiseman/cab07877576d5122ab3d7690266110b5&quot; target=&quot;_blank&quot;&gt;https://gist.github.com/mawiseman/cab07877576d5122ab3d7690266110b5&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Open &lt;strong&gt;Powershell&lt;/strong&gt; as an &lt;strong&gt;Administrator&lt;/strong&gt; and run the following script&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-powershell&quot; data-lang=&quot;powershell&quot;&gt;&lt;span class=&quot;n&quot;&gt;cd&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;c:\temp&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;\powershell-iis-and-default-modules.ps1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;install-applications-via-chocolatey&quot;&gt;Install Applications via Chocolatey&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Install Chocolatey: &lt;a href=&quot;https://chocolatey.org/install&quot; target=&quot;_blank&quot;&gt;https://chocolatey.org/install&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download &lt;strong&gt;chocolatey-packages.config&lt;/strong&gt; file to &lt;strong&gt;c:\temp&lt;/strong&gt; &lt;a href=&quot;https://gist.github.com/mawiseman/54fef1543f6ac8c06a16a49a15d80b36&quot; target=&quot;_blank&quot;&gt;https://gist.github.com/mawiseman/54fef1543f6ac8c06a16a49a15d80b36&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Open &lt;strong&gt;Powershell&lt;/strong&gt; as an &lt;strong&gt;Administrator&lt;/strong&gt; and isntall the applications via Chocolatey&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-powershell&quot; data-lang=&quot;powershell&quot;&gt;&lt;span class=&quot;n&quot;&gt;cd&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;c:\temp&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;choco&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;chocolatey-packages.config&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;install-sql-server-2016&quot;&gt;Install SQL Server 2016&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Download SQL Server from &lt;a href=&quot;https://my.visualstudio.com&quot; target=&quot;_blank&quot;&gt;https://my.visualstudio.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Mount the ISO&lt;/li&gt;
  &lt;li&gt;Download &lt;strong&gt;SQLServer2016ConfigurationFile.ini&lt;/strong&gt; file to &lt;strong&gt;c:\temp&lt;/strong&gt; &lt;a href=&quot;https://gist.github.com/mawiseman/e6e4143ddafa55cd9d67253af31e9937&quot; target=&quot;_blank&quot;&gt;https://gist.github.com/mawiseman/e6e4143ddafa55cd9d67253af31e9937&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Open &lt;strong&gt;Powershell&lt;/strong&gt; as an &lt;strong&gt;Administrator&lt;/strong&gt; and run the following script&lt;/li&gt;
  &lt;li&gt;Download and Install &lt;a href=&quot;https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms&quot; target=&quot;_blank&quot;&gt;SQL Server Management Studio&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-powershell&quot; data-lang=&quot;powershell&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$saPassword&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;YOUR-UNIQUE-PASSWORD&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;

&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;\setup.exe&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;/CONFIGURATIONFILE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;C:\temp\SQLServer2016ConfigurationFile.ini&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;/SQLSYSADMINACCOUNTS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;System.Security.Principal.WindowsIdentity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;GetCurrent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;/SAPWD&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$saPassword&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;install-node-modules&quot;&gt;Install Node Modules&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;Open &lt;strong&gt;Powershell&lt;/strong&gt; run the following script&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-powershell&quot; data-lang=&quot;powershell&quot;&gt;&lt;span class=&quot;n&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;windows-build-tools&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;gulp&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;gulp-cli&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;bower&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;</content><author><name>{&quot;twitter&quot;=&gt;&quot;markwiseman&quot;, &quot;picture&quot;=&gt;&quot;https://wiseman.net.au/assets/img/mark.wiseman.jpg&quot;}</name></author><category term="windows" /><category term="chocolatey" /><category term="powershell" /><category term="software" /><summary type="html">There are periods of your life as a developer either at home of at work where you go through a cycle of re-build your machine (and other) a seemingly high number of times and the real grind is getting your tools setup and installed each time.</summary></entry></feed>