Private/Get-Payload.ps1
Function Get-Payload { Param ( [hashtable]$Metadata, [Microsoft.Xrm.Tooling.Connector.CrmServiceClient]$SourceConn, [Microsoft.Xrm.Tooling.Connector.CrmServiceClient]$TargetConn ) $sourceComponents = Get-CrmSolutionComponent -Conn $sourceConn -SolutionName $solutionName $targetComponents = Get-CrmSolutionComponent -Conn $targetConn -SolutionName $solutionName Write-Verbose 'Updating source components against metadata...' $updatedSourceComponents = Update-ComponentAgainstMetadata -Component $sourceComponents -Metadata $metadata -SourceConn $sourceConn -TargetConn $targetConn if ($updatedSourceComponents -and $targetComponents) { $sourceOnlyComponents = Compare-CrmSolutionComponent -ReferenceComponent $updatedSourceComponents -DifferenceComponent $targetComponents $targetOnlyComponents = Compare-CrmSolutionComponent -ReferenceComponent $targetComponents -DifferenceComponent $updatedSourceComponents } if ($sourceOnlyComponents) { $payload = Compare-ComponentsWithTargetOrg -Component $sourceOnlyComponents -Metadata $metadata -SourceConn $SourceConn -TargetConn $targetConn } else { $payload = Compare-ComponentsWithTargetOrg -Component $updatedSourceComponents -Metadata $metadata -SourceConn $SourceConn -TargetConn $targetConn } $payload["Remove"] = $targetOnlyComponents $payload["Original"] = @{"Source" = $sourceComponents; "Target" = $targetComponents} Write-Output $payload } |