Public/get-AllegisIDNAccountAttributeProblemInTransforms.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function get-AllegisIDNAccountAttributeProblemInTransforms ($sourceOrg, $sourceAuthHeader){
    function get-child ($children,$parent){ 
        foreach ($item in $children){
            sleep -Milliseconds 1
            if ($item.id -ne $null){$parent=("\$($children.id)\")}
            if ($item.attributes -eq $null)
            {
                $item | select -prop attributes,id,type,@{n='parent';e={$parent}}
            }
            else
            {
                $item | select -prop attributes,id,type,@{n='parent';e={$parent}}
                get-child -children $item.attributes.values -parent ($parent + $item.type + "\")   
            }
        }
    }
    $transforms=get-AllegisIDNtransform -orgName $sourceOrg -accessToken $sourceAccessToken
    $validsources=get-AllegisIDNsource -orgName $sourceOrg -accessToken $sourceAccessToken
    $validsources | foreach {$_ | add-member -NotePropertyName importSchema -NotePropertyValue (get-AllegisIDNsourceSchemaImport -orgName $sourceorg -accessToken $sourceAccessToken -sourceid $_.id) -Force}
    $rule=$transforms.items | foreach{get-child $_}
    $invalidTransform=$rule.where{($_.type -eq 'accountAttribute' -and $_.attributes.sourceName -notin $validsources.name)}
    #$invalidtransform
    $accounttransforms=$rule.where{($_.type -eq 'accountAttribute')}
    foreach ($accountattribute in $accounttransforms)
    {
        $validattributes=$null
        $validattributes=$validsources.where{$_.name -eq $accountattribute.attributes.sourcename}.importSchema.attributes.name
        if ($validattributes -eq $null){
            $accountattribute | select *,@{n='error';e={'missing source'}}
        }
        elseif($accountattribute.attributes.attributeName -notin $validattributes){
            $accountattribute | select *,@{n='error';e={'missing attribute'}}
        }
    }
}