I'm working on my first game, visit the landing page for The Lonely Helmet.

Snow Document Migrator

A few weeks ago, I posted about my Snow System User Migrator that allows me to migrate users from one Snow License Manager platform to another instead of having to manually re-create them, which has saved a ton of time. In that post I mentioned that a few of the worst things to migrate from one platform to another was System Users and Auto connect Rules, something that I forgot about was attachments to Licenses, Computers, Users and Agreements (“Objects”). So as usual, we all know what I did next. 😊

The Problem

Much like moving System Users being an absolute pain, moving attachments is an even bigger pain. The method of downloading documents from Snow isn’t great and once downloaded in mass, there is no easy way of relinking them to the Objects in the new platform. There is no official Snow Solution either for moving attachments from one platform to another outside of downloading them in mass from the License Manager portal.

The Solution

Why move things manually when you can build something to do it for you? The way the application works is simple, due to the size of the data and the way that Snow stores documents in the database (as VARBINARY) however, you can only migrate data from databases that you have access to on the same network – so ideally something like SPE to SPE, or dedicated to SPE etc.

Depending on the size of the attachments that you have it can either be very quick or very slow, there is obviously other things to take into account as well such as RAM, CPU and SQL Server power, but moving around 500 attachments of around 1MB takes around 15 minutes. The fastest I got it to was 500 in 5 minutes, but this again depends on the environment itself. The longest was 45 minutes due to a 350MB attachment with a VARBINARY length of something like 2,349,493 characters – insane. 😲

Snow Document Migrator Main View

When creating the attachment in the new platform, it checks for the below things before doing anything with the data

  • Does the attachments parent Object exist in the new platform?
  • Does an identical attachment already exist against that parent Object?

If the parent Object exists and the attachment doesn’t exist already, it is moved to the new platform and assigned to the parent object with all existing information from the old platform.


There are a few prerequisites, as you can imagine, for this to work.

Before migrating over the attachments, you must first migrate the parent Objects that you wish to move the attachments for. So, Licenses, Computers, Users and Agreements, if migrating their documents, must be in the new platform already before anything can be moved.


I’ve used this for a few tests and not seen any problems with it yet for all types it can migrate, which is great.

The big benefit of this is now Softcat, my employer, can migrate attachments across platforms without needing to manually upload each of them. Some calculations were done and the length of time it would take to do this manually is insane, this tool brings the time down about 95% at a minimum.

I have another migration tool that is in the works that I will likely post about soon also, but until then, hope you enjoyed the read!

P.S I’ve started adding random songs I’m addicted to at the moment to the bottom of my posts. I’m currently addicted to this: Haunted - Laura Les … parental advisory, explicit.

This tool is not/will not be released to the public.