Private/Get-CorrectGuidForMTORelationship.ps1
Function Get-CorrectGuidForMTORelationship { param ( [SolutionComponent]$Component, [guid]$ParentObjectId, [Hashtable]$Metadata ) $ObjectId = $Component.ObjectId $type = Get-RelationshipType -Metadata $Metadata.Source.All -SolutionComponent $component -EntityObjectId $Component.parentObjectId switch ($type) { 'ManyToOneRelationship' { $entityLogicalName = ($metadata.Source.All[$Component.parentObjectId].ManyToOneRelationships | Where-Object -Property MetadataId -eq $ObjectId).EntityLogicalName $ReferencePropertyName = ($metadata.Source.All[$Component.parentObjectId].ManyToOneRelationships | Where-Object -Property MetadataId -eq $ObjectId).ReferencedEntityNavigationPropertyName $targetMetadataId = ($metadata.Target.All[$Component.parentObjectId].ManyToOneRelationships | Where-Object -Property ReferencedEntityNavigationPropertyName -eq $ReferencePropertyName).Metadataid } 'OneToManyRelationship' { $entityLogicalName = ($metadata.Source.All[$Component.parentObjectId].OneToManyRelationships | Where-Object -Property MetadataId -eq $ObjectId).EntityLogicalName $ReferencePropertyName = ($metadata.Source.All[$Component.parentObjectId].OneToManyRelationships | Where-Object -Property MetadataId -eq $ObjectId).ReferencedEntityNavigationPropertyName $targetMetadataId = ($metadata.Target.All[$Component.parentObjectId].OneToManyRelationships | Where-Object -Property ReferencedEntityNavigationPropertyName -eq $ReferencePropertyName).Metadataid } 'ManyToManyRelationship' { $entityLogicalName = ($metadata.Source.All[$Component.parentObjectId].ManyToManyRelationships | Where-Object -Property MetadataId -eq $ObjectId).EntityLogicalName $ReferencePropertyName = ($metadata.Source.All[$Component.parentObjectId].ManyToManyRelationships | Where-Object -Property MetadataId -eq $ObjectId).ReferencedEntityNavigationPropertyName $targetMetadataId = ($metadata.Target.All[$Component.parentObjectId].ManyToManyRelationships | Where-Object -Property ReferencedEntityNavigationPropertyName -eq $ReferencePropertyName).Metadataid } } if ($targetMetadataId -and ($targetMetadataId -ne $ObjectId)) { $component.OriginalObjectId = $component.ObjectId $component.ObjectId = $targetMetadataId Write-Verbose ("Set objectid {0} to target metadataid {1} for relationship {2} on Entity {3} " -f $ObjectId, $targetMetadataId, $ReferencePropertyName, $entityLogicalName) } Write-Output $Component } |