Try my Topology Generator at http://topologygenerator.azurewebsites.net/

Topology Generator
Generator for Topology Manager

In preparation for taking my SDL certification(s) I came across a need for something to make setting up the topology in SDL Web 8 easier, as it can currently only be run using powershell scripts, which are prone to error, and prove quite labourous to write.

I started doing something with spreadsheets, which was a definite improvement, but still prone to errors.

When you start digging into the Topology Manager for SDL Web 8 you'll find that even just to setup a very basic topology you'll have to run 5 powershell cmdlets to get up and running.

Add-TtmCdTopologyType -Id TTID -Name NAME -EnvironmentPurposes "PURPOSE"
Add-TtmCdEnvironment -Id CDEID -EnvironmentPurpose PURPOSE -DiscoveryEndpointUrl http://.../ -AuthenticationType OAuth -ClientId CLIENTID -ClientSecret CLIENTSECRET
Add-TtmCdTopology -Id TID -Name NAME -CdTopologyTypeId TTID -CdEnvironmentIds  "CDEID"
Add-TtmWebsite -Id WID -CdEnvironmentId CDID -BaseUrls "http://site.com"
Add-TtmMapping -Id MID -PublicationID tcm:... -WebApplicationId WID_RootWebApp

When you started to consider multi-site and localization, the number of cmdlets increases dramatically. I am working on a site with only ~25 localized sites and there is in excess of 100 cmdlets to run. This was a nightmare to setup, and ended up with an excel fileto try and map it all, but one typo and all the dependencies would break and then a lot of time would be lost working back through the process using the delete cmdlets.

It was also a good excuse to get up to speed with Angular 2, so a nice 2 for 1 bonus!

List of SDL Topology Manager cmdlets

  • Add-TtmCdEnvironment
  • Add-TtmCdTopology
  • Add-TtmCdTopologyType
  • Add-TtmCmEnvironment
  • Add-TtmMapping
  • Add-TtmSiteTypeKey
  • Add-TtmWebApplication
  • Add-TtmWebsite
  • Clear-TtmCdEnvironment
  • Clear-TtmMapping
  • Disable-TtmCdEnvironment
  • Enable-TtmCdEnvironment
  • Export-TtmCdStructure
  • Get-TtmCdEnvironment
  • Get-TtmCdTopology
  • Get-TtmCdTopologyType
  • Get-TtmCmEnvironment
  • Get-TtmMapping
  • Get-TtmWebApplication
  • Get-TtmWebsite
  • Import-TtmCdStructure
  • Remove-TtmCdEnvironment
  • Remove-TtmCdTopology
  • Remove-TtmCdTopologyType
  • Remove-TtmCmEnvironment
  • Remove-TtmMapping
  • Remove-TtmSiteTypeKey
  • Remove-TtmWebApplication
  • Remove-TtmWebsite
  • Set-TtmCdEnvironment
  • Set-TtmCdTopology
  • Set-TtmCdTopologyType
  • Set-TtmCmEnvironment
  • Set-TtmMapping
  • Set-TtmWebApplication
  • Set-TtmWebsite
  • Sync-TtmCdEnvironment

What next?

Next I want to make a way you import the JSON produced by Export-TtmCdStructure and remap the text boxes and regenerate the powershell.

I also want to consider the option to update and remove with the generator, but I am not sure if this is really needed.