Private/New-UserWritebackOperation.ps1

function New-UserWritebackOperation {
    [CmdletBinding()]

    Param(
        # The action to perform. Possible values are 'Create', 'Update', 'Delete'.
        [Parameter(Mandatory = $true)]
        [ValidateSet("Set-ADUser", "Remove-ADUser", "New-ADUser", "Rename-ADObject", "Move-ADObject", "Patch Entra ID User")]
        [string]$Action,

        # The user object from Entra ID.
        [Parameter(Mandatory = $false)]
        [object]$EntraIDUser,

        # The user object from Active Directory.
        [Parameter(Mandatory = $false)]
        [object]$ADUser,

        # A hashtable of parameters required for the operation.
        [Parameter(Mandatory = $false)]
        [hashtable]$Parameters,

        # The identity of the object to operate on (e.g. sAMAccountName or DistinguishedName).
        [Parameter(Mandatory = $false)]
        [string]$Identity
    )

    Process {
        return [PSCustomObject]@{
            Identity    = $Identity
            Action      = $Action
            EntraIDUser = $EntraIDUser
            ADUser      = $ADUser
            Parameters  = $Parameters
        }
    }
}