Batch Enrollments
For clients that do not want to use the Lynx Member Enrollment API, and prefer a traditional file enrollment method we have established a batch enrollment process. Our batch enrollment capabilities include:
-
File Options: Lynx provides specifications for JSON, CSV, and Delimited text file formats. The formats prescribe the model for preparing the data.
-
Location to upload enrollment files: When a client organization is onboarded onto the Lynx platform Lynx automatically creates and provides the client with an sftp user. Also a home directory for the client organization is created on the Lynx system. Under this home directory, an 'Inbound' directory is created as well. For enrollment files to be processed, they should be uploaded into this Inbound directory. Any response from Lynx is uploaded to the 'Outbound' folder which is a sibling of the 'Inbound' folder.
-
Dedicated Client SFTP: During client onboarding, Lynx establishes batch SFTP for each client. Client uploads the enrollment files securely to an SFTP endpoint. Note: Clients have their own unique SFTP endpoints within the Lynx structure.
-
Credentials Exchange
Prior to onboarding, the client is required to generate a set of public-private key pair and provide the public key to their client success partner at Lynx. This public key will be used as part of the SSH protocol to encrypt and decrypt messages. During the client org setup on Lynx, a unique user-id is generated by the Lynx Platform. This user id will be provided to the client as part of their credentials.
For clients to get the Lynx sftp server's public key, the following command is recommended:
- ssh-keyscan -t rsa sftp.prod.lynx-fh.co
- The output of this command is the public key of the Lynx sftp server
- Paste this key into your sftp client software (e.g. FileZilla or WinSCP or any other automated process)
- ssh-keyscan -t rsa sftp.prod.lynx-fh.co
-
Bulk and Change Files: Clients may provide bulk insert files and change files. An initial bulk insert file followed by change file updates is desired.
-
Batch Format Validation: Lynx evaluates the batch format once received from Client to verify compliance with the Lynx specification. If the batch format evaluation fails, the file is withheld and Client contacts are notified.
-
Data Validation: Lynx evaluates the record-level data, including verifying inclusion of mandatory data elements, conforming data types and sizing, date formats, and functional age validations. Lynx offers two options: (1) Partially process all passed records and return failed records; (2) Do not partially process and return failed records.
-
Enrollment Notification: Our clients are notified when the enrollment process is complete.
-
Process Manifest with Passed and Issue Records: Our clients receive a manifest containing processed member information and any issue records along with issue root cause.
-
File Name Description .json .csv postMemberEnrollmentRequest The enrollment file is used to enroll a member into the Lynx platform. patchMemberAccountStatusRequest Updates the member account status according to different alternatives such as close, expire, freeze, etc. patchUpdateMemberStatusRequest Updates the member status in order to deactivate or reactivate a member. BatchControlFile Used to separately validate the file contents of each batch file.
Batch Control and Data FilesA couple of things are worth noting as regards to the control file:
- The control file is a JSON file
- The name of the control file must have the text "ControlFile" within it. For example: XYZ_Client_ControlFile_123.json
- The underlying batch file could either be PIPE delimited or comma delimited.
- If file is PIPE delimited, then the file extension should be ".txt" and the fileType field in the control file should say: PIPE_DELIMITED
- If file is a CSV, then the file extension should be ".csv" and the fileType field in the control file should say: CSV
Some pointers regarding data files:
- Each field within the file is a double-quoted string (please see example below).
- Dates are of the format: RFC 3339. For example 2024-11-03 for Nov/03/2024
- Effective dates must be in the future.
- For addresses, emails and phones, the primary indicator must be set for each one. For example if there are 3 addresses, one of them must be designated as primary. Same for emails and phones.
- The country code for the phone number must be a valid country code. For example, for United States, the country code is '1'
- The phone number must not contain any hyphens or spaces. Please see the sample data file below for guidance.
Sample Control File (for a PIPE delimited data file) - XYZ_Client_ControlFile_123.json
{
"clientOrgName": "XYZ_Client",
"processType": "MANAGE_ENROLLMENT",
"validationOnlyIndicator": false,
"processAllOrNothingIndicator": false,
"count": 3,
"batchProcessDetail": {
"fileName": "Actual_Batch_Filename.txt",
"fileType": "PIPE_DELIMITED"
}
}
Following is a sample of a pipe delimited file (the file has 3 records). Note that the required fields for each record within the file follow the same validation principles as mentioned in the API reference for member enrollments here: Member Enrollment
Sample Data File
"/data/member/clientMemberId"|"/data/member/clientOrg/name"|"/data/member/dateOfBirth"|"/data/member/firstName"|"/data/member/lastName"|"/data/member/memberCardPreferences/planName"|"/data/member/memberCardPreferences/cardPackageName"|"/data/member/addresses/0/line1"|"/data/member/addresses/0/line2"|"/data/member/addresses/0/city"|"/data/member/addresses/0/stateProvince"|"/data/member/addresses/0/postalCode"|"/data/member/addresses/0/postalCodeExtension"|"/data/member/addresses/0/country"|"/data/member/addresses/0/primaryIndicator"|"/data/member/emails/0/emailAddress"|"/data/member/emails/0/primaryIndicator"|"/data/member/emails/0/typeDescription"|"/data/member/phones/0/phoneNumber"|"/data/member/phones/0/countryCode"|"/data/member/phones/0/phoneExtension"|"/data/member/phones/0/primaryIndicator"|"/data/member/memberProducts/0/effectiveDate"|"/data/member/memberProducts/0/product/name"|"/data/member/memberProducts/1/effectiveDate"|"/data/member/memberProducts/1/product/name"|"/idempotency/idempotencyKey"
"9475800"|"XYZ_Client"|"1944-10-16"|"E"|"S"|"XYZ_Client MHAFS1"|"XYZ_Client OTC Card"|"1231 E Some Ave NE"||"Grand Rapids"|"MI"|"41145"||"US"|"true"||||"7001724416"|"1"||"true"|"2025-01-01"|"Product1"|||"Idempotency_1"
"9479680"|"XYZ_Client"|"1948-11-19"|"V"|"S"|"XYZ_Client MHAFS1"|"XYZ_Client OTC Card"|"1231 E Some Ave NE"||"Grand Rapids"|"MI"|"41145"||"US"|"true"||||"6972922616"|"1"||"true"|"2025-01-01"|"Product1"|||"Idempotency_2"
"9479-00"|"XYZ_Client"|"1947-12-30"|"P"|"P"|"XYZ_Client MHAFS1"|"XYZ_Client OTC Card"|"1231 E Some Ave NE"||"Grand Rapids"|"MI"|"41145"||"US"|"true"||||"0008967616"|"1"||"true"|"2025-01-01"|"Product2"|||"Idempotency_3"Updated 4 months ago
