Public/New-SingleFieldEnrichment.ps1

function New-SingleFieldEnrichment {
    [OutputType([PSCustomObject])]
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [ValidatePattern('^([A-z]*)\.(#[A-z]*)$')]
        [ValidateScript({[Int[]]($_.Split('.')).Count -eq 2})]
        [String]$FieldName,

        [Parameter(Mandatory=$true)]
        [ValidatePattern('^([A-z]*)\.([A-z]*)$')]
        [ValidateScript({[Int[]]($_.Split('.')).Count -eq 2})]
        [String]$ObjectName,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [hashtable]$ObjectValues
    )
    $enrichments = [System.Collections.ArrayList]::new()

    $fieldId = Get-FieldID -Name $fieldName

    $objectId = $MAIN.EnrichmentIDMap.$ObjectName
    if ($null -eq $objectId) {
        $message = "Invalid Object Selection: $ObjectName"
        Write-CustomLog $message -Severity "ERROR"
        throw $message
    }
    
    Write-CustomLog -Message "Enriching Field $fieldId of $objectId " -Severity "DEBUG"
    foreach ($Object in $ObjectValues.Keys) {
        Write-CustomLog -Message "Adding ${Object}:$($ObjectValues.$Object)" -Severity "DEBUG"
        $identification = [PSCustomObject]@{
            name = $objectId
            value = $Object
        }
        $fields = [PSCustomObject]@{
            name = $fieldId
            value = $ObjectValues.$Object
        }
        $enrichments.Add([PSCustomObject]@{
            identification = @($identification)
            fields = @($fields)
        }) | Out-Null
    }

    [PSCustomObject]@{
        enrichments = $enrichments
        domain = 'ps_custom_fields'
    }
    return
}