About the ITranslatePerson interface
The ITranslatePerson interface is used to translate LIS Person Requests into a Brightspace IPSIS UserObject.
The interface implementation is D2L.IM.IPSIS.LIS.PMS.ITranslatePerson.
The following configuration list provides a starting point for any implementation:
Template, IPSIS
- PersonRequestBaseTranslator (Sort Order = 10)
- PersonRequestFirstAndLastNameRequiredTranslator (Sort Order = 20)
- PersonRequestInstitutionRoleOptionalTranslator (Sort Order = 30)
- PersonRequestEmailPrimaryOptionalTranslator (Sort Order = 40)
- PersonRequestFirstUserIdAndPasswordOptionalTranslator (Sort Order = 50)
PersonRequestBaseTranslator
The PersonRequestBaseTranslator requires and maps the person identifier.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.PMS.Default.PersonRequestBaseTranslator
Expected behavior
The translator performs the following tasks:
- Sets the OrgDefinedId to the value provided in the sourcedGUID.sourcedid.
- Processing continues to the next translator.
Property
|
Translation Result Object
|
LIS Request Mapping
|
OrgDefinedId
|
result.Entity.OrgDefinedId
|
sourcedGUID.sourcedId
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator (or an alternative Base translator) must be configured first in the list of translators.
PersonRequestIsActiveTranslator
The PersonRequestIsActiveTranslator sets the user's status based on the field value.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.PMS.Default.PersonRequestIsActiveTranslator
Expected behavior
The translator performs the following tasks:
- Reads the LIS message for extension fields where the fieldName = "IsActive".
- The field value must either be 0 or 1, or true or false.
- Processing continues to the next translator (Return True).
Property
|
Translation Result Object
|
LIS Request Mapping
|
Status
|
result.Entity.Status
|
extension.extensionField.fieldValue[IsActive]
|
Error behavior
No errors are thrown for this translator.
Configuration note
This translator must be configured anywhere after the PersonRequestBaseTranslator.
PersonRequestFirstAndLastNameRequiredTranslator
The PersonRequestFirstAndLastNameRequiredTranslator requires and maps first and last names.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.PMS.Default.PersonRequestFirstAndLastNameRequiredTranslator
Expected behavior
The translator performs the following tasks:
- Attempts to populate the First Name based on the following vocabulary matches:
- If name.nameType.instanceName.textString = (Contact or Full)
- and name.partName.instanceName.textString = (First or Given)
- Attempts to populate the Last Name based on the following vocabulary matches:
- If name.nameType.instanceName.textString = (Contact or Full)
- and name.partName.instanceName.textString = (Last, Family, or Surname)
- Processing continues to the next translator.
Property
|
Translation Result Object
|
LIS Request Mapping
|
First Name
|
result.Entity.FirstName
|
person.name.partName.instanceValue.textString
when person.name.partName.instanceName.textString = (First or Given)
|
Last Name
|
result.Entity.LastName
|
person.name.partName.instanceValue.textString
when person.name.partName.instanceName.textString = (Last, Family or Surname)
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator can be positioned anywhere after the Base translator.
PersonRequestInstitutionRoleOptionalTranslator
The PersonRequestInstitutionRoleOptionalTranslator attempts to map a role and primary role property.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.PMS.Default.PersonRequestInstitutionRoleOptionalTranslator
Expected behavior
The translator performs the following tasks:
- Adds the roles from the institutionRole elements to the result role list.
- If an institutionRole value is indicated as a primaryroletype, the role is used as the primary role.
- If a role is not provided, processing moves to the next translator.
- Processing continues to the next translator.
Property
|
Translation Result Object
|
LIS Request Mapping
|
Roles
|
result.SISRoles(*).Name
|
person.roles.institutionRole(*).institutionroletype.instanceValue.textString
|
Primary Role
|
result.SISRoles(*).Primary
|
person.roles.institutionRole(*).institutionroletype.instanceValue.textString
when person.roles.institutionRole(*).primaryroletype = true
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator can be positioned anywhere after the Base translator.
PersonRequestEmailPrimaryOptionalTranslator
The PersonRequestEmailPrimaryOptionalTranslator attempts to map an email address.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.PMS.Default.PersonRequestEmailPrimaryOptionalTranslator
Expected behavior
The translator performs the following tasks:
- If an email address has not already been set up, the translator uses vocabulary and gets the first EmailPrimary value found.
- Processing continues to the next translator.
Property
|
Translation Result Object
|
LIS Request Mapping
|
Roles
|
result.Entity.ExternalEmail
|
person.contactinfo.contactInfoValue.textString
when person.contactinfo.contactInfoType.instanceValue.textString = EmailPrimary
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator can be positioned anywhere after the Base translator.
PersonRequestFirstUserIdAndPasswordOptionalTranslator
The PersonRequestFirstUserIdAndPasswordOptionalTranslator attempts to map the userid and password.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.PMS.Default.PersonRequestFirstUserIdAndPasswordOptionalTranslator
Expected behavior
The translator performs the following tasks:
- The user name is populated from the userId if it was provided.
- If a user name is provided, the password is populated.
- If a password encryption type was provided, the password encryption is populated.
- Processing continues to the next translator.
Property
|
Translation Result Object
|
LIS Request Mapping
|
Username
|
result.Entity.Username.value
|
person.userId.userIdValue.textString
|
UserIdType
|
result.Entity.UserIdType
|
person.userId.userIdType.textString
|
Password
|
result.Entity.Username.Password.Value
|
person.userId.password.textString
|
EncryptionMethod
|
result.Entity.EncryptionMethod
|
person.userId.pwEncryptionType.textString
|
Authentication Type
|
result.Username.AuthenticationType
|
person.userId.authenticationType.textString
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator can be positioned anywhere after the Base translator.
PersonRequestSystemRoleOptionalTranslator
The PersonRequestSystemRoleOptionalTranslator attempts to map the system role.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.PMS.Default.PersonRequestSystemRoleOptionalTranslator
Expected behavior
- Adds the role from the system elements to the result role list.
- Processing continues to the next translator.
Property
|
Translation Result Object
|
LIS Request Mapping
|
Roles
|
result.SISRoles(*).Name
|
person.roles.systemRole.instanceValue.textString
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator can be positioned anywhere after the Base translator.
PersonRequestEmailSecondaryOptionalTranslator
The PersonRequestEmailSecondaryOptionalTranslator attempts to map an email address based on the secondary emails in the message if an email hasn't already been set.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.PMS.Default.PersonRequestEmailSecondaryOptionalTranslator
Expected behavior
- If an email address has not already been set, use vocabulary and get the first EmailSecondary value found.
- Processing continues to the next translator.
Property
|
Translation Result Object
|
LIS Request Mapping
|
Roles
|
result.Entity.ExternalEmail
|
person.contactinfo.contactInfoValue.textString
when person.contactinfo.contactInfoType.instanceValue.textString = EmailSecondary
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator can be positioned anywhere after the Base translator.
PersonRequestCreateRecordFromSourcedIdRequiredTranslator
The PersonRequestCreateRecordFromSourcedIdRequiredTranslator creates a valid person request if all that was passed in was the sourcedId.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.PMS.Default.PersonRequestCreateRecordFromSourcedIdRequiredTranslator
Expected behavior
The translator performs the following tasks:
- If a valid person record does not exist on the request, the translator builds out a dummy person request, using the sourcedId for the first name, last name, and user id.
- Processing continues to the next translator.
Configuration notes
- This translator must be positioned directly after the Base translator.
- This translator is used only when it is expected that insufficient information is received from the SIS to build out a person in Brightspace.