As announced few days ago, I have decided to move on from SharePoint 2016 for hosting my blog.
Now, my blog is running on WordPress using SQL Server as database server, and not MySQL (even if this is still installed anyway).
As promised when I have announced the migration, here are few details about my migration which went quite smoothly, despite few issues:

  • I’m using the ProjectNami to run WordPress with SQL (https://projectnami.org) – which can be deployed on Azure or on your on-premises server
  • WordPress and his required components (PHP 7, MySql, ) using the Microsoft Web Platform Installer (available here https://www.microsoft.com/web/downloads/platform.aspx)
    • First I installed only PHP 7.2 (both x86 and x64 bits version)
    • Then I installed the Microsoft Drivers for PHP 7.2 for SQL Server in IIS (both x86 and x64 bits version)
    • Finally,I installed WordPress, which installed the additional requirements (IIS Role, URL ReWrite, MySql…)

Installing in this order helps to ensure all the requirements to get WordPress working with SQL are installed and configured properly (the Web Platform Installer is taking care of everything for you)
So then I had to identify and choose which plugins to use in order to protect my server and provide good user experience. I choose:

  • Akismet Anti-Spam to protect the comment section of the blogimage

 
 
 
 

  • All In One WP Security, to implement dedicated WordPress security measures – even if few of them apply only on Apacheimage

 
 
 

  • Easy HTTPS (SSL) Redirection, to manage the automatic redirection from HTTP to HTTPS (it is not yet configured)
  • Jetpack by WordPress (automatically recommended), to get usage statistics and improved authoring experienceimage
  • Media Library Foldes for WordPress, to organize the WP media gallery with foldersimage

 
 
 
 

  • Redirect List, to manage URL’s redirection – as the URL’s from SharePoint will no longer works
  • Redirection, mainly used to get 404 logs to update the redirection list.image

It is supposed to also handle the redirections but this part of the plugin does not work (as it uses his own table, and so is incompatible with the SQL query expected by SQL server). Quite useful anyway because of the 404 logs
 

  • SEOPress, to handle the search engines optimization; including Google Analytics integration
  • Website tools by AddThis, to keep the integration with the AddThis analytic service (previously used on the SharePoint blog for sharing)

Off course there has been another choice: which theme to use. I finally decided to keep one of the default themes provided by ProjectNami.
And last but not least, was to migrate the content of the SharePoint blog to WordPress.
In fact I had no really choice for the migration as the out of the box migration components (or even plugins) were not satisfying; either because of the SharePoint constraints (like the RSS feed) or because I have loosing all the formatting (CSV export/import).
I finally found a tool developed by René Hézser (https://www.hezser.de/blog/2014/10/01/migrate-sharepoint-blog-to-wordpress/) which did also a SharePoint blog to WordPress migration. Unfortunately I faced a blocking issue when migrating the posts; the categories were migrated successfully.
When running René’s tool, I got an access denied when creating the posts on WordPress. Obviously this was not a WordPress permission issue as I got the categories created. Thankfully René also provides the source code of his tool, so I used Visual Studio and ran the code in debug mode to identify the issue was with the blog’s attachments. Indeed, all the screenshots on my posts were attached to the post and not save to a Picture library because I’m using Live Writer.
So I isolated the code use to migrate the pictures (from the SharePoint library) to not use it (this implies few code change on multiple place) and successfully ran the full migration of my SharePoint blog to WordPress, keeping the formatting, published date (mostly, I will come back on this one later)… To fully complete the migration I opened the SharePoint blog using Windows Explorer (best is to use Map a network drive) to browse to the Posts library and copy the Attachments folder. I saved this folder in the file system on the WordPress server (ensure you are keeping the complete relative path /Lists/Posts/Attachments).
I then use Excel to generate the URL redirection list for the posts and category to map with the WordPress format (like /Lists/Categories/Category.aspx?CategoryId= or /Lists/Categories/Category.aspx?Name= to /category/).
After going live I monitored thanks to the Redirection plugin the 404 errors to handle redirection updates. This is when I discovered I got few (thankfully) posts with a published date set to 1 day after the real one (as of today I have something like 50 impacted posts, over more than 1000’s).
This is it; this was my, quite overall, easy migration from SharePoint blog to WordPress.