Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel6
outlinefalse
stylenone
typelist
printablefalse
separatorbrackets

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
nameUserIntegratorConfigFile.json

Data Consistency Check Configuration (Optional)

Sample Configuration:

Code Block
languagejs
"DataConsistencyCheckConfiguration" : {

}

Currently this configuration section is empty.

Value Mapping Configuration (Optional)

Sample Configuration:

Code Block
languagejs
"ValueMappingConfiguration": {
	"FieldNamesWithMapping": [
	  {
		"FieldName": "Rank",
		"MappingMode": "Complete",
		"MappingFileName": "ValueMapping-Rank.json"
	  }
	]
}

...

Code Block
languagejs
[
    {
   	 "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
languagejs
  "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
languagejs
"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
languagejs
  "ResetFieldsToDefaultIfEmptyConfiguration": {
    "ResetFieldsToDefaultIfEmpty": [
		"Vessel",
		"Rank",
		"EmbarkmentDate"
    ]
  }

...

Info

If ResetFieldsToDefaultIfEmptyConfiguration is not required ResetFieldsToDefaultIfEmptyarray can be left empty like this. But configuration section must exists.

Code Block
  "ResetFieldsToDefaultIfEmptyConfiguration": {
    "ResetFieldsToDefaultIfEmpty": [
    ]
  }

Data Formatting Configuration (Optional)

Sample Configuration:

Code Block
languagejs
"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
languagejs
"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
languagejs
  "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
languagejs
"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
languagejs
"AutoUserDeactivationConfiguration": {
	"MaxUsersToDeactivate": "500",
		"UserFilterFieldNames": [
			"Rank"
		]

...

Also, Deactivation users count must be less than less than MaxUsersToDeactivate

Threshold Configuration (Mandatory)

Sample Configuration:

Code Block
languagejs
  "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.

Code Block
  "ThresholdConfiguration" : {
	  "Thresholds" : [
	]
  }

User Importer Configuration (Mandatory)

Sample Configuration:

Code Block
languagejs
  "UserImporterConfiguration": {
    "BatchSize": "400"
  }

...