Sep 01 2016 08:36 AM
Sep 01 2016 08:36 AM
Is there a way to export custom properties with Export-SPOTaxonomy for a particular TermSet, we are currently trying to use custom properties to determine the order of menu items in taxonomy and would like to know if there is a way to export the same so that we can make changes to them as needed and import with Import-Taxonomy.
Thanks in advance
Sep 02 2016 12:55 AM
You can use this below script for this. You dont need to Export / Import from one to another. This script will automatically copy Term Group with custom property.
# Change the following to reflect your environments # 1) Source Site $sUrl = "https://<sourcedomain>.sharepoint.com/" $sAdmin = "admin@<domain>.onmicrosoft.com" $sPwd = "<password>" # 2) Destination Site $dUrl = "https://<destivation>.sharepoint.com/" $dAdmin = "admin@<domain>.onmicrosoft.com" $dPwd = "<password>" # 3) What Term Group do you want to synchronize? $sTermGroupName = "<Termgroupname>" ## Stop here $lcid = "1033" $sSecurePwd = ConvertTo-SecureString $sPwd -AsPlainText -Force $dSecurePwd = ConvertTo-SecureString $dPwd -AsPlainText -Force # these aren't required for the script to run, but help to develop Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" # doh Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll" # connect/authenticate to SharePoint Online and get ClientContext object.. $sCtx = New-Object Microsoft.SharePoint.Client.ClientContext($sUrl) $sCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($sAdmin, $sSecurePwd) $sCtx.Credentials = $sCredentials $dCtx = New-Object Microsoft.SharePoint.Client.ClientContext($dUrl) $dCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($dAdmin, $dSecurePwd) $dCtx.Credentials = $dCredentials $continue = 0 if (!$dCtx.ServerObjectIsNull.Value) { Write-Host "Connected to DESTINATION SharePoint Online site: " $dCtx.Url "" -ForegroundColor Green $dTaxonomySession = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($dCtx) $dTaxonomySession.UpdateCache() $dCtx.Load($dTaxonomySession) $dCtx.ExecuteQuery() if (!$dTaxonomySession.ServerObjectIsNull) { Write-Host "Destination Taxonomy session initiated: " $dTaxonomySession.Path.Identity "" -ForegroundColor Green $dTermStore = $dTaxonomySession.GetDefaultSiteCollectionTermStore() $dCtx.Load($dTermStore) $dCtx.ExecuteQuery() if ($dTermStore.IsOnline) { Write-Host "...Default Term Store connected:" $dTermStore.Id "" -ForegroundColor Green # $termStoreId will be the SspId in the taxonomy column configs $continue = 1 } } } if (!$sCtx.ServerObjectIsNull.Value -and $continue -eq 1) { Write-Host "Connected to the SOURCE SharePoint Online site: " $sCtx.Url "" -ForegroundColor Green $sTaxonomySession = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($sCtx) $sTaxonomySession.UpdateCache() $sCtx.Load($sTaxonomySession) $sCtx.ExecuteQuery() if (!$sTaxonomySession.ServerObjectIsNull) { Write-Host "Source Taxonomy session initiated: " $sTaxonomySession.Path.Identity "" -ForegroundColor Green $sTermStore = $sTaxonomySession.GetDefaultSiteCollectionTermStore() $sCtx.Load($sTermStore) $sCtx.ExecuteQuery() if ($sTermStore.IsOnline) { Write-Host "...Default Term Store connected:" $sTermStore.Id "" -ForegroundColor Green # $termStoreId will be the SspId in the taxonomy column configs $sCtx.Load($sTermStore.Groups) $sCtx.ExecuteQuery() foreach ($sTermGroup in $sTermStore.Groups) { if ($sTermGroup.Name -eq $sTermGroupName) { Write-Host ".....Term Group loaded: " $sTermGroup.Name "-" $sTermGroup.Id "" -ForegroundColor Cyan $sCtx.Load($sTermGroup.TermSets) $sCtx.ExecuteQuery() #create this group in the destination context $newGroup = $dTermStore.CreateGroup($sTermGroup.Name, $sTermGroup.Id) $dCtx.Load($newGroup) $dCtx.ExecuteQuery() Write-Host ".....Term Group copied to destination:" $newGroup.Name "" -ForegroundColor Magenta foreach($sTermSet in $sTermGroup.TermSets) { try{ Write-Host ".......Term Set found: " $sTermSet.Name "-" $sTermSet.Id "" -ForegroundColor Cyan $sCtx.Load($sTermSet.Terms) $sCtx.Load($sTermSet.CustomSortOrder) $sCtx.Load($sTermSet.Description) $sCtx.ExecuteQuery() } catch {} #create new term set in destination context $newTermSet = $newGroup.CreateTermSet($sTermSet.Name, $sTermSet.Id, $lcid) $newTermSet.CustomSortOrder=$sTermSet.CustomSortOrder $newTermSet.Description=$sTermSet.Description $dCtx.Load($newTermSet) $dCtx.ExecuteQuery() Write-Host ".......Term Set copied to destination:" $newTermSet.Name "" -ForegroundColor Magenta #create termstore Custom Properties copy foreach($TScp in $sTermSet.CustomProperties.GetEnumerator()){ try{ $newTermSet.SetCustomProperty($TScp.Key,$TScp.Value) $dCtx.Load($newTermSet) $dCtx.ExecuteQuery() } catch {} } foreach($sTerm in $sTermSet.Terms) { Write-Host ".........Term found: " $sTerm.Name "-" $sTerm.Id $sTerm.CustomProperties "" -ForegroundColor Cyan $sCtx.Load($sTerm.Labels) $sCtx.ExecuteQuery() #create new term in destination context $newTerm = $newTermSet.CreateTerm($sTerm.Name, $lcid, $sTerm.Id) $newterm.SetDescription($sTerm.Description,$lcid) # $newterm.CreateLabel($sTerm.Labels) $dCtx.Load($newTerm) $dCtx.ExecuteQuery() #create term Custom Properties foreach($cp in $sTerm.CustomProperties.GetEnumerator()){ try{ $newTerm.SetCustomProperty($cp.Key,$cp.Value) $dCtx.Load($newTerm) $dCtx.ExecuteQuery() } catch {} } foreach($lable in $sTerm.Labels){ try{ $newterm.CreateLabel($lable.Value,$lcid,$lable.IsDefaultForLanguage) $dCtx.Load($newTerm) $dCtx.ExecuteQuery() } catch {} } Write-Host ".........Term copied to destination:" $newTerm.Name "" -ForegroundColor Magenta } } } } } } }
Sep 02 2016 09:51 AM
Sep 02 2016 09:51 AM