Persons import script
In the persons import script, you retrieve the raw personnel data that you'll use in Source mappings to generate your Persons and Contracts objects. It runs during the Imports process.
Note
Changes to the persons and/or departments import scripts do not have any effect during snapshots. They only have an effect during Imports.
To get started, Customize the persons import script.
Write your retrieval logic (i.e., query your external HR database) in the if(-Not($dryRun -eq $True)) { }
statement at the beginning of the script. When you are editing and previewing the script, HelloID sets $dryRun to false. When the script runs in production, HelloID sets it to true.
How, and from where you retrieve this information is up to you. For example:
For systems that provide a REST API, use the
Invoke-WebRequest
cmdlet to launch aGET
request.For flat files, use the
Import-CSV
cmdlet to read the data into memory.
Subsequently, using the retrieved raw personnel data, construct a $persons array. Each person is a hash table in this array. The requirements for each person are:
- ExternalId
A unique identifier of your choice (e.g., a GUID)
- DisplayName
A display name for the person (e.g.,
John Doe
)- contracts
An array containing at least one hash table. Hash tables in this array define the person's Contracts. Each contract must have a
DepartmentCode
, which must correspond to theExternalId
of a department defined in the Departments import script.
You can add as many additional custom key/pair values to these hash tables as needed, to accommodate whatever data is in your external HR database.
After building your $persons
array, send it to HelloID. Loop through the array and send each person individually via the Write-Output
cmdlet (converted to a JSON string). For example, if you have 1,000 persons, Write-Output
must be called 1,000 times. This is demonstrated in the for
loop, below.
$numberOfPersons = 5 if(-Not($dryRun -eq $True)) { # Write real import logic here $numberOfPersons = 25 } Write-Verbose "Starting person import" -Verbose for ($i=0; $i -lt $numberOfPersons; $i++) { $persons = @( @{ ExternalId = "JohnD-$i" DisplayName = "John Doe" FirstName = "John" LastName = "Doe" Convention = "B" Contracts = @( @{ SequenceNumber = "1" DepartmentName = "Administration" DepartmentCode = "ADMINISTR" TitleName = "Manager" TitleCode = "Man" StartDate = Get-Date("2018-01-01") -Format "o" EndDate = $null } ) }, @{ ExternalId = "JaneD-$i" DisplayName = "Jane Doe" FirstName = "Jane" LastName = "Doe" Convention = "B" Contracts = @( @{ SequenceNumber = "1" DepartmentName = "Administration" DepartmentCode = "ADMINISTR" TitleName = "Secretary" TitleCode = "Sec" StartDate = Get-Date("2015-03-02") -Format "o" EndDate = $null } ) } ) foreach ($person in $persons) { Write-Output $person | ConvertTo-Json } } Write-Verbose "Person import completed" -Verbose