Table of Contents | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
User Importer Configuration
Registry
A registry entry at HKEY_LOCAL_MACHINE\SOFTWARE\MarineLS\Integrators\[NameOfIntegrator]
(e.g. NIUserCsvIntegrator)must be created and a new String Value added with Key Enabled
and Value true
...
NavPage Attributes
Following NavPageAttribute needs to be added to configure user Importer. Where “NIUserCsvIntegrator
“ will be replaced by the name of any other user integrator.
...
Code Block |
---|
AddNavPageAttribute /Root/NI System.Customer.NIUserCsvIntegrator.IsTestMode True AddNavPageAttribute /Root/NI System.Customer.Integrator.NIUserCsvIntegrator.CsvDelimiter "," AddNavPageAttribute /Root/NI System.Customer.Integrator.NIUserCsvIntegrator.ImportFilePath "E:UserImporter\incomingFile\incomingFile" AddNavPageAttribute /Root/NI System.Customer.Integrator.NIUserCsvIntegrator.ImportFileBackupPath "E:UserImporter\incomingFile\backupFile" AddNavPageAttribute /Root/NI System.Customer.Integrator.NIUserCsvIntegrator.SchedulePeriod "1" AddNavPageAttribute /Root/NI System.Customer.Integrator.NIUserCsvIntegrator.PollingInterval "1" AddNavPageAttribute /Root/NI System.Customer.Integrator.NIUserCsvIntegrator.CsvTranslations "OrgLoginId=UniqueUserID,FirstName=FirstName,LastName=LastName,Password=DateOfBirth,ContactEmail=PersonalEmailAddress" AddNavPageAttribute /Root/NI System.Customer.Integrator.NIUserCsvIntegrator.UserImportMode "Partial" |
User Integrator Config
User importer is configured using a JSON file (i.e UserIntegratorConfigFile.json). It has multiple sections which are called activities. Every configured activity is being executed in order (can’t be changed via configuration). The order the activities are executed is the order this document describes the activity configurations.. Every section is described below, also a sample configuration file is attached.
...
View file | ||
---|---|---|
|
Data Consistency Check Configuration (Optional)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"DataConsistencyCheckConfiguration" : { } |
Currently this configuration section is empty.
Value Mapping Configuration (Optional)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"ValueMappingConfiguration": { "FieldNamesWithMapping": [ { "FieldName": "Rank", "MappingMode": "Complete", "MappingFileName": "ValueMapping-Rank.json" } ] } |
...
Code Block | ||
---|---|---|
| ||
[ { "SourceValue": "Capt.", "TargetValue": "Captain" }, { "SourceValue": "Captain", "TargetValue": "Captain" }, { "SourceValue": "1st Eng.", "TargetValue": "First Engineer" }, { "SourceValue": "2nd Eng.", "TargetValue": "Second Engineer" } ] |
Data Sanitation Configuration (Optional)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"DataSanitationConfiguration": { "FieldsToSanitize": [ { "FieldName": "DeptCode", "ReduceToSingleWhiteSpace": "true", "SanitizeValues": [ { "Original": "XT", "Replacement": "xt" }, { "Original": ",", "Replacement": "+" } ] } ] } |
...
Original = "(", Replacement = "["
Original = ")", Replacement = "]"
Original = ",", Replacement = "-"
Original = "\\", Replacement = "/"
Original = ":", Replacement = "-"
Original = "|", Replacement = "/"
Reduce To One Email Address Configuration (Mandatory)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"ReduceToOneEmailAddressConfiguration": { "MultipleEmailsDelimiter": "," } |
If there are multiple email address provided for one user AND those are separated by the MultipleEmailsDelimiter only the first email is imported if this configuration is present.
Reset Fields To Default If Empty Configuration (Mandatory)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"ResetFieldsToDefaultIfEmptyConfiguration": { "ResetFieldsToDefaultIfEmpty": [ "Vessel", "Rank", "EmbarkmentDate" ] } |
...
Info | ||
---|---|---|
If ResetFieldsToDefaultIfEmptyConfiguration is not required
|
Data Formatting Configuration (Optional)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"DataFormattingConfiguration" : { "FieldFormatting" : [ { "FieldName" : "DateOfBirth", "Type" : "DateTime", "InputFormat" : "MM-dd-yyyy", "OutputFormat" : "dd-MM-yyyy" } ] } |
...
Supported data types:
String
DateTime
Number
Data Assembler Configuration (Optional)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"DataAssemblerConfiguration": { "FieldConfigurations" : [ { "FieldName" : "OrgLoginId", "Segments" : [ { "IsField" : "true", "Value" : "Operating Line" }, { "IsField" : "false", "Value" : "-" }, { "IsField" : "true", "Value" : "OrgLoginId" } ] } ] } |
...
For example, Above configuration adds a prefix to an user property "OrgLoginId" which consists of 3 different segments, “Operation Line” “-“ & “OrgLoginId“. If IsField=true, that means it will get the value provided in the csv, Otherwise whatever the value provided in the configuration value property it will consider that. Please consider that any previous data manipulation will have taken effect (i.e. DataSanitization). It may not be the original value from the CSV anymore.
Data Validation Configuration (Mandatory)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"DataValidationConfiguration": { "IdentifierFields": [ { "Name": "OrgLoginId", "Type": "String" } ], "CriticalFields": [ { "Name": "Vessel", "Type": "String" }, { "Name": "FirstName", "Type": "String" }, { "Name": "LastName", "Type": "String" }, { "Name": "Rank", "Type": "String" } ], "RegularFields": [ { "Name": "EmailAddress", "Type": "EmailAddress" }, { "Name": "DeptCode", "Type": "String" }, { "Name": "Password", "Type": "String" } ] } |
...
IdentifierFields": "OrgLoginId"
CriticalFields": "Rank", "Vessel", "FirstName", "LastName"
RegularFields: "EmailAddress", "ContactEmail", “Deactivate (X)”, “UserLanguage”, “CanViewReports”, “ForcePasswordChange”, “Password“
Password Configuration (Mandatory)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"PasswordConfiguration": { "UserReactivationAction": "ForcePasswordChange", "UseRandomPassword": "false", "ExpireInitialPasswordForNewUser": "true", "PasswordFormat": [ { "Value": "Password", "IsField": "true" }, { "Value": "aA!", "IsField": "false" } ] } |
...
All the values inside the PasswordFormat will be concatenated for password creating for new user only. If IsField=true, that means it will get the value provided in the csv (Also can be modified in previous activities), Otherwise whatever the value provided in the configuration value property it will consider that.
Auto User Deactivation Configuration (Optional)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"AutoUserDeactivationConfiguration": { "MaxUsersToDeactivate": "500", "UserFilterFieldNames": [ "Rank" ] |
...
Also, Deactivation users count must be less than less than MaxUsersToDeactivate
Threshold Configuration (Mandatory)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"ThresholdConfiguration" : { "Thresholds" : [ { "Name" : "MaxUsersPerImport", "Value" : 1, "Action" : "StopImport" }, { "Name" : "MaxDeactivateUsers", "Value" : 1, "Action" : "GenerateWarning" }, { "Name" : "MaxNewUsers", "Value" : 4, "Action" : "StopImport" }, { "Name" : "MaxOrgProfileValueUpdates", "Value" : 1, "Action" : "GenerateWarning" }, { "Name" : "MaxReactivateUsers", "Value" : 1, "Action" : "GenerateWarning" }, { "Name" : "MaxInvalidUsers", "Value" : 1, "Action" : "None" } ] } |
...
Info | ||
---|---|---|
If Threshold Configuration is not required Thresholds array can be left empty like this. But configuration section must exists.
|
User Importer Configuration (Mandatory)
Sample Configuration:
Code Block | ||
---|---|---|
| ||
"UserImporterConfiguration": { "BatchSize": "400" } |
...