During the time of deployment, we may in a need to export and import the workflows from our DEV environment to the higher environment. In this article, let us see how to Export Nintex Workflows in SharePoint using CSOM PowerShell Script.
The code is self-explanatory.
01.ExportNintexForms
function Export-NintexWorkflow { <# .SYNOPSIS Export a Nintex workflow .nwf file to a local directory .DESCRIPTION Export a Nintex workflow .nwf file to a local directory #> [CmdletBinding()] param( [string]$WebUrl = $(throw "Required parameter -WebUrl missing"), [string]$listName = $(throw "Required parameter -ListName missing"), [string[]]$workflowNames = $(throw "Required parameter -WorkflowNames missing"), [string]$FilePath = $(throw "Required parameter -FilePath missing") ) begin { if(!(Get-PnPConnection)) { throw "There is no PnPConnection" } Write-Host "---- Exporting Nintex workflow for '$($List.Title)' ----" -ForegroundColor Yellow } process { $List = Get-PnPList -Identity $listName $timeStampString = [DateTime]::Now.ToString("yyyyMMdd-HHmmss") # Get XML New File path $xmlFilePath = "$FilePath$($List.Title)-$timeStampString.nwf" $webServiceUrl = "$WebUrl/_vti_bin/NintexWorkflow/Workflow.asmx" $webServiceProxy = New-WebServiceProxy -Uri $webServiceUrl -UseDefaultCredential $webServiceProxy.URL = $webServiceUrl $ctx=Get-PnPContext $ctx.load($List.WorkflowAssociations) $ctx.ExecuteQuery() #Get all workflows that are associated with the current list foreach($listassociation in $List.WorkflowAssociations) { if($workflowNames.Contains($listassociation.Name)){ $WorkflowName = $listassociation.Name $workflowContent = $webServiceProxy.ExportWorkflow($WorkflowName, $List.Title, "list") $xmlFilePath = "$FilePath$WorkflowName.nwf" #Save XML File to Disk $workflowContent | Out-File $xmlFilePath Write-Host "Nintex workflow '$WorkflowName' exported successfully to '$xmlFilePath'" -ForegroundColor Green } } } end { } }
Run.ps1
#=========================================== Description Start ========================================= # # Deploy from a List # Author : Sathish Nadarajan # Date : 03-Feb-2021 #=========================================== Description End====================================== # # ============================================ PreRequisites Start ================================= # #Get-Module -Name *pnp* #Pre Req - SharePoint PnP PowerShell Version 2.25.1804.1 #=============================================PreRequisites End =============================== # #============================================= Initial Setup Start =============================== # cls $Host.UI.RawUI.WindowTitle = "-- Deploy Assets --" $StartDate = Get-Date Write-Host -ForegroundColor White "------------------------------------" Write-Host -ForegroundColor White "| Deploy Assets |" Write-Host -ForegroundColor White "| Started on: $StartDate |" Write-Host -ForegroundColor White "------------------------------------" #Add-PSSnapin Microsoft.SharePoint.PowerShell $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm-ss $scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent Set-Location $scriptBase # Create Log File Folder3 if(!(TEST-PATH ".Logs-$LogTime")){ NEW-ITEM ".Logs-$LogTime" -type Directory } # Assign the Log and Progress Files $TranscriptFile = ".Logs-$LogTimeDeploy.Transcript.rtf" try{ stop-transcript|out-null } catch [System.InvalidOperationException]{} start-transcript $TranscriptFile #============================================= Initial Setup End =============================== # # ============================================ Setup Input Paths Start ================================= # #connect to the SharePoint list $sourceWebUrl = 'http://SourceSiteURL/sites/newsite/' $sourceListname = "AssetRegisterV2" $outputFolderPath = ".Logs-$LogTime" $targetWebUrl = 'http://TargetSiteURL/sites/newsite/' $targetListname = "AssetRegister_Test" $workflowNames = @('Send Notification When Child is Promoted as Parent','Send Notification When Asset is deleted') # ============================================ Setup Input Paths End ================================= # Import-Module ".3.ExportNintexWorkflows.ps1" Write-Host "Begin to Execute.." -ForeGroundColor Yellow "Begin to Execute..." | Out-File -FilePath $TranscriptFile -Append Connect-PnPOnline -Url $sourceWebUrl -CurrentCredentials -ErrorAction Inquire Export-NintexWorkflow $sourceWebUrl $sourceListname $workflowNames $outputFolderPath Disconnect-PnPOnline Write-Host "Update Completed.. Press Enter to Exit" -ForeGroundColor Green try{ stop-transcript|out-null } catch [System.InvalidOperationException]{}
Happy Coding
Sathish Nadarajan
Leave a comment