SharePoint Designer 2013 has a button to publish SharePoint 2010 reusable workflows globally so that they can be used in any library.
This button is greyed out for the SharePoint 2013 workflow platform and so appears to not be supported.
We can, however, get a similar result by saving the SharePoint 2013 reusable workflow as a template and deploying it as a solution to a Site or Farm.
The SharePoint 2013 workflow platform has many great features, including the ‘Call HTTP Web Service’ which you can use to call the SharePoint 2013 REST service to access and update SharePoint data across any site.
My workflow utilises many REST calls and so the 2010 platform was not sufficient.
1.) Create a reusable workflow with platform type ‘SharePoint 2013 Workflow’.
2.) Once you happy to deploy your workflow; on the workflow settings page, click ‘Save as Template’ button on the ribbon.
4.) To deploy to a Site Collection:
Site Settings > Solutions > Upload Solution > Activate.
5.) To deploy to a Farm
Open SharePoint 2013 Management Shell
Add-SPSolution C:tempworkflowfilename.wsp
Central Administration > System Settings > Manage farm solutions
From here you should now be able to see your workflow listed.
Click on its name and click deploy.
Once deployed the workflow will be available at each site as a feature that needs enabling in order to add it to a library.
To get the identity of your new workflow feature, deploy it manually on one site and then look it up with PowerShell:
Site Settings > Manage site features > find your workflow feature and enable
Get-SPFeature -web http://site/web | Format-Table DisplayName
Where http://site/web is the URL of your web that you enabled the feature at.
Take note of the correct name of your feature.
$web = $Web = Get-SPWeb http://Site/Web $Web.webs | ForEach-Object { $_.webs | ForEach-Object { try{ $_.url Enable-SPFeature -URL $_.url -Identity "Inwards Mail ProcessListInstances" write-host "InwardsMail feature added" Enable-SPFeature -URL $_.url -Identity "PublishingWeb" write-host "publishing feature added" } catch{ write-host "Failed to add feature to" $_.url } } }
To enable at every site in the Site Collection, paste the above try catch statement into the Web loop on this post.
Next; Associate the workflow to every library/list using PowerShell