Get the SID from an Azure Active Directory (AAD) user
        Get the generated SID that an Azure Active Directory (AAD) user will get in relation to Dynamics 365 Finance & Operations environment
    .PARAMETER SignInName
        The sign in name (email address) for the user that you want the SID from
    .PARAMETER Provider
        The provider connected to the sign in name
        PS C:\> Get-UserSIDFromAad -SignInName "" -Provider "ZXY"
        This will get the SID for Azure Active Directory user ""
        Author: Rasmus Andersen (@ITRasmus)
        Author: Mötz Jensen (@Splaxi)

function Get-UserSIDFromAad {
    param     (
        [string] $SignInName,
        [string] $Provider

    try {

        $productDetails = Get-ProductInfoProvider

        Add-Type -Path "$Script:AOSPath\bin\Microsoft.Dynamics.BusinessPlatform.SharedTypes.dll"
        Add-Type -Path "$Script:AOSPath\bin\Microsoft.Dynamics.ApplicationPlatform.PerformanceCounters.dll"
        Add-Type -Path "$Script:AOSPath\bin\Microsoft.Dynamics.ApplicationPlatform.XppServices.Instrumentation.dll"
        Add-Type -Path "$Script:AOSPath\bin\Microsoft.Dynamics.AX.Security.SidGenerator.dll"

        if ($([Version]$productDetails.ApplicationVersion) -ge $([Version]"10.0.13")) {
            $SID = [Microsoft.Dynamics.Ax.Security.SidGenerator]::Generate($SignInName, $Provider, [Microsoft.Dynamics.Ax.Security.SidGenerator+SidAlgorithm]::Sha1)
        else {
            $SID = [Microsoft.Dynamics.Ax.Security.SidGenerator]::Generate($SignInName, $Provider)
        Write-PSFMessage -Level Verbose -Message "Generated SID: $SID" -Target $SID


    catch {
        Write-PSFMessage -Level Host -Message "Something went wrong while working against the database" -Exception $PSItem.Exception
        Stop-PSFFunction -Message "Stopping because of errors"