Public/Get-ADPFirstName.ps1

function Get-ADPFirstName {
    <#
    .SYNOPSIS
        Get a user's First Name from ADP
    
    .DESCRIPTION
        Get a user's First Name from ADP

    .PARAMETER ADPObject
        Object which holds the First Name

    .EXAMPLE
        Input Object: ADP Object
        Return String: <First Name>
        
    .NOTES
        This is used when passing the full adp worker object from ADP's APID

    .LINK
        https://google.com

    .FUNCTIONALITY
        Powershell Language
    #>

    [CmdletBinding()]
    param (
        [Parameter( Mandatory = $true,
                    Position = 0,
                    ValueFromPipeline = $true )]
        $ADPObject
    )

    $localFirstName = $null
    try {
        $localFirstName = $ADPObject.person.preferredName.givenName
    } catch {}

    try {
        if (!$localFirstName) {
            $localFirstName = $ADPObject.person.legalName.givenName
        }
    } catch {}

    return ( $localFirstName | Get-ValidADPReturn)
}