Public/Associate.txt
|
#CreateEntityAssociation
function Add-CrmRecordAssociation{ # .ExternalHelp Campgemini.Xrm.Data.PowerShell.Help.xml [CmdletBinding()] PARAM( [parameter(Mandatory=$false)] [Microsoft.Xrm.Sdk.IOrganizationService]$conn, [parameter(Mandatory=$true, Position=1, ParameterSetName="CrmRecord")] [PSObject]$CrmRecord1, [parameter(Mandatory=$true, Position=2, ParameterSetName="CrmRecord")] [PSObject]$CrmRecord2, [parameter(Mandatory=$true, Position=1, ParameterSetName="NameWithId")] [string]$EntityLogicalName1, [parameter(Mandatory=$true, Position=2, ParameterSetName="NameWithId")] [guid]$Id1, [parameter(Mandatory=$true, Position=3, ParameterSetName="NameWithId")] [string]$EntityLogicalName2, [parameter(Mandatory=$true, Position=4, ParameterSetName="NameWithId")] [guid]$Id2, [parameter(Mandatory=$true, Position=5)] [string]$RelationshipName ) $conn = VerifyCrmConnectionParam -conn $conn -pipelineValue ($PSBoundParameters.ContainsKey('conn')) if($CrmRecord1 -ne $null) { $EntityLogicalName1 = $CrmRecord1.logicalname $Id1 = $CrmRecord1.($EntityLogicalName1 + "id") } if($CrmRecord2 -ne $null) { $EntityLogicalName2 = $CrmRecord2.logicalname $Id2 = $CrmRecord2.($EntityLogicalName2 + "id") } try { $AssociateRequest = [Microsoft.Xrm.Sdk.Messages.AssociateRequest]::new(); $AssociateRequest.Target = [Microsoft.Xrm.Sdk.EntityReference]::new($EntityLogicalName1,$Id1); $AssociateRequest.Relationship = $RelationshipName; $RelatedEntityReference = [System.Collections.Generic.List[Microsoft.Xrm.Sdk.EntityReference]]::new() $RelatedEntityReference.Add(([Microsoft.Xrm.Sdk.EntityReference]::new($EntityLogicalName2,$Id2))) $RelatedEntityCollection = [Microsoft.Xrm.Sdk.EntityReferenceCollection]::new($RelatedEntityReference) $AssociateRequest.RelatedEntities = $RelatedEntityCollection $result = $conn.Execute($AssociateRequest) if(!$result) { throw $_.Exception } } catch { throw $_.Exception } } #CreateMultiEntityAssociation function Add-CrmMultiRecordAssociation{ # .ExternalHelp Campgemini.Xrm.Data.PowerShell.Help.xml [CmdletBinding()] PARAM( [parameter(Mandatory=$false)] [Microsoft.Xrm.Sdk.IOrganizationService]$conn, [parameter(Mandatory=$true, Position=1, ParameterSetName="CrmRecord")] [PSObject]$CrmRecord1, [parameter(Mandatory=$true, Position=2, ParameterSetName="CrmRecord")] [PSObject[]]$CrmRecord2s, [parameter(Mandatory=$true, Position=1, ParameterSetName="NameWithId")] [string]$EntityLogicalName1, [parameter(Mandatory=$true, Position=2, ParameterSetName="NameWithId")] [guid]$Id1, [parameter(Mandatory=$true, Position=3, ParameterSetName="NameWithId")] [string]$EntityLogicalName2, [parameter(Mandatory=$true, Position=4, ParameterSetName="NameWithId")] [guid[]]$Id2s, [parameter(Mandatory=$true, Position=5)] [string]$RelationshipName, [parameter(Mandatory=$false, Position=6)] [bool]$IsReflexiveRelationship ) $conn = VerifyCrmConnectionParam -conn $conn -pipelineValue ($PSBoundParameters.ContainsKey('conn')) if($CrmRecord1 -ne $null) { $EntityLogicalName1 = $CrmRecord1.logicalname $Id1 = $CrmRecord1.($EntityLogicalName1 + "id") } if($CrmRecord2s -ne $null) { if($CrmRecord2s.Count -ne 0) { $EntityLogicalName2 = $CrmRecord2s[0].logicalname $Ids = New-Object 'System.Collections.Generic.List[System.Guid]' foreach($CrmRecord2 in $CrmRecord2s) { $Ids.Add($CrmRecord2.($EntityLogicalName2 + "id")) } $Id2s = $Ids.ToArray() } else { Write-Warning 'CrmRecords2 does not include any records.' break } } try { $result = $conn.CreateMultiEntityAssociation($EntityLogicalName1, $Id1, $EntityLogicalName2, $Id2s, $RelationshipName, [Guid]::Empty, $IsReflexiveRelationship) if(!$result) { throw $_.Exception } } catch { throw $_.Exception } } #DeleteEntityAssociation function Remove-CrmRecordAssociation{ # .ExternalHelp Campgemini.Xrm.Data.PowerShell.Help.xml [CmdletBinding()] PARAM( [parameter(Mandatory=$false)] [Microsoft.Xrm.Sdk.IOrganizationService]$conn, [parameter(Mandatory=$true, Position=1, ParameterSetName="CrmRecord")] [PSObject]$CrmRecord1, [parameter(Mandatory=$true, Position=2, ParameterSetName="CrmRecord")] [PSObject]$CrmRecord2, [parameter(Mandatory=$true, Position=1, ParameterSetName="NameWithId")] [string]$EntityLogicalName1, [parameter(Mandatory=$true, Position=2, ParameterSetName="NameWithId")] [guid]$Id1, [parameter(Mandatory=$true, Position=3, ParameterSetName="NameWithId")] [string]$EntityLogicalName2, [parameter(Mandatory=$true, Position=4, ParameterSetName="NameWithId")] [guid]$Id2, [parameter(Mandatory=$true, Position=5)] [string]$RelationshipName ) $conn = VerifyCrmConnectionParam -conn $conn -pipelineValue ($PSBoundParameters.ContainsKey('conn')) if($CrmRecord1 -ne $null) { $EntityLogicalName1 = $CrmRecord1.logicalname $Id1 = $CrmRecord1.($EntityLogicalName1 + "id") } if($CrmRecord2 -ne $null) { $EntityLogicalName2 = $CrmRecord2.logicalname $Id2 = $CrmRecord2.($EntityLogicalName2 + "id") } try { $DisassociateRequest = [Microsoft.Xrm.Sdk.Messages.DisassociateRequest]::new(); $DisassociateRequest.Target = [Microsoft.Xrm.Sdk.EntityReference]::new($EntityLogicalName1,$Id1); $DisassociateRequest.Relationship = $RelationshipName; $RelatedEntityReference = [System.Collections.Generic.List[Microsoft.Xrm.Sdk.EntityReference]]::new() $RelatedEntityReference.Add(([Microsoft.Xrm.Sdk.EntityReference]::new($EntityLogicalName2,$Id2))) $RelatedEntityCollection = [Microsoft.Xrm.Sdk.EntityReferenceCollection]::new($RelatedEntityReference) $DisassociateRequest.RelatedEntities = $RelatedEntityCollection $result = $conn.Execute($DisassociateRequest) if(!$result) { throw $_.Exception } } catch { throw $_.Exception } } |