I have a solution on a development server with a custom list with Managed Metadata fields that reference Managed Metadata term sets (from the standard Managed Metadata Service (MMS)).

The term sets seem to get unique IDs when created in the MMS, the very same unique IDs that the custom list in the solution seem to bind to when connecting its Managed Metadata fields to the term sets available in the MMS. So far so good.

However, when performing a backup (through powershell, e.g. by using the Backup-SPSite command) and then doing a restore on a different server (Restore-SPSite cmd), the Managed Metadata term sets do not seem to follow. And if I recreate the term sets manually in the MMS on the new server, the term sets will have different IDs, thus the custom list from the backup on the new server will not recognize the connection and the solution fails...

I have tried several projects on codeplex to achieve this export/import of metadata, both to xml and cvs, but none of them seemed to work. ( http://termsetimporter.codeplex.com/ didn't find the term store at all, whereas http://metadataexportsps.codeplex.com/ found the term store in our standalone development farm...but not in the actual environment where we need to use it).

Is there a better way to achieve export/import of both the site collection and the managed metadata term sets it references to a new environment, e.g. from dev to test?


Have you tried the Export/Import Tool from Eric Khaw? I've used it with success. Should do about the same as the other tools out there though.


Powershell approach: you can try to export mms as cab file from source server and then import this cab file at the destination server, using powershell.

The powershell script for this is as under:

$mmsApplication = Get-SPServiceApplication | ? {$_.TypeName -eq "Managed Metadata Service"}
$mmsProxy = Get-SPServiceApplicationProxy | ? {$_.TypeName -eq "Managed Metadata Service Connection"}
Export-SPMetadataWebServicePartitionData $mmsApplication.Id -ServiceProxy $mmsProxy -Path "\\server\share\mmsdata.cab"

$mmsApplication = Get-SPServiceApplication | ? {$_.TypeName -eq "Managed Metadata Service"}
$mmsProxy = Get-SPServiceApplicationProxy | ? {$_.TypeName -eq "Managed Metadata Service Connection"}
Import-SPMetadataWebServicePartitionData $mmsApplication.Id -ServiceProxy $mmsProxy -Path "\\server\share\mmsdata.cab" -OverwriteExisting

Another alternate approach as given in this site: http://www.andrewconnell.com/blog/SP2010-Managed-Metadata-MovingCopying-MMS-Instances-Term-Stores-between-Environments

Check whatever approach suites you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.