LoC Patron registration (with staging)
This design uses the approach of creating a patron record at the later registration stage during the onsite registration completion. Thus, two different terms are used here:
Patron / Registration data - the information a patron enters into the registration forms in Locate. This information will be stored in a dedicated table in the FOLIO (preliminary mod-users)
Patron record - the actual record in the mod-users.users table created based on the Patron / Registration data during the onsite registration completion stage on a successful patron verification.
Option 1. Online registration Tier 1, Tier 2
Patron Registration Process (Tier 1)
Step 1 Patron fills in an initial registration form (Tier 1):
The patron begins by filling out the required information in a registration form to initiate their registration process in Locate.Step 2 Check if e-mail already exists:
Locate calls edge-patron (GET /patron-registration-status ) to check the active status of the patronStep 3 Return registration status:
FOLIO performs checks on FOLIO users to return a current registration status. Registration status may be of the following:When the record is found in FOLIO
Return 200 - If active
Return 404 - If inactive (With a message indicating that it's expired)
When the record is NOT found in FOLIO
Return 404 - (With a message indicating that it's NOT FOUND)
Alternate Path: 404 - no records found (or inactive record found)
Step 4 Store patron data (Tier 1) - The patron data is stored in FOLIO since no existing record with the same email is found.
Step 5: Patron data has been stored - Confirmation that the patron data is stored in FOLIO.
Step 6: Persist patron data (Tier 1) - The system ensures that the patron data is saved persistently in Locate.
Step 7: Send email verification - An email verification message is sent to the patron to confirm his/her email address.
Step 8 Verify email:
The patron verifies their email by following the link sent in the email verification message.Step 9 Activate patron (Tier 1):
Once the email is verified, the system activates the patron's account in Locate.Step 10 Send patron activated (Tier 1):
Locate notifies FOLIO that the patron account has been activated.Step 11 Mark patron activated (Tier 1):
FOLIO marks the patron's data as activated in its dedicated table.
Alternate Path: 200 - active record found
Step 12 Locate hides the pre-registration link:
If the patron is already Tier 2, locate hides the pre-registration link.
Patron Registration Process (Tier 2)
Step 13 Login to Locate:
The patron logs in to the Locate system after successfully completing the Tier 1 registration.Step 14 Fill in a Tier 2 registration form:
The patron fills out a more detailed registration form required for Tier 2 registration.Step 15 Send patron registration data (Tier 2):
The registration form data is sent to the FOLIO for further processing.Step 16 Store patron registration data (Tier 2):
The patron's Tier 2 registration data is stored in FOLIO.Step 17 Patron data has been stored (Tier 2):
Confirmation that the patron's Tier 2 data has been stored.Step 18 Registration needs to be completed onsite:
The final step of the registration process needs to be completed in person at the registration desk for verification of identity, card printing, and other formalities.
Option 2. Online registration Tier 1 + Tier 2
Onsite registration completion
Patron Onsite Registration Completion (Tier 2)
Step 1 Provide identity confirmation (Driver's license, ID card, etc.):
The patron arrives at the registration desk and provides valid identification to verify his/her identity.Step 2 Search for patron registration data using patron name or email:
The registration desk staff enters the patron's name or email into the FOLIO to search for the previously stored registration data.Step 3 Retrieve patron registration data:
FOLIO attempts to retrieve the patron's registration data based on the provided information. The search is done only in the staging table for Tier 2 records.Step 4: Return patron registration data - FOLIO displays the patron's registration data to the registration desk staff.
Step 5: Verify patron registration data - The registration desk staff reviews and verifies the accuracy of the patron's data.
Step 6: Request FOLIO patron account creation - The staff confirms the data requests FOLIO to create the patron's record.
Step 7: Check if e-mail already exists in the users table - FOLIO performs another search using the email to check if there is an existing patron record.
Alternate Path: No records found with the email address
Step 8: Create a new patron record in the users table - If no record is found, FOLIO creates a new patron record in the platform.
Alternate Path: A single record found
Step 9: Dialog: Proceed with the existing FOLIO account - If there is already a FOLIO account (e.g. migrated from the previous platform), then the registration desk staff can link Tier 2 registration data with existing record
Alternate Path: Staff confirms
Step 10: Confirm proceeding - The registration desk staff verifies and confirms that the Tier 2 registration can be linked with the existing patron record
Step 11: Update patron record with staging data - FOLIO updates user record with data from staging table
Alternate Path: Staff rejects
Step 12: Error: Invalid e-mail address. Use another e-mail - Tier 2 registration data does not match the existing account. The patron should use another e-mail address for registration
Alternate Path: Multiple records found
Step 13: Dialog: Choose existing FOLIO account - If there are multiple FOLIO accounts (e.g. migrated from the previous platform), then the registration desk staff can link Tier 2 registration data with one of the existing records
Alternate Path: Staff chooses one account
Step 14: Choose the existing FOLIO account - The registration desk staff verifies and confirms that the Tier 2 registration can be linked with one of the existing patron records
Step 15: Update patron record with staging data - FOLIO updates user record with data from staging table
Alternate Path: Staff rejects
Step 16: Error: Invalid e-mail address. Use another e-mail - Tier 2 registration data does not match the existing account. The patron should use another e-mail address for registration
Step 17: Remove record from staging table - FOLIO platform removes the record from the staging table as the patron is moved to the user table
Step 18: Notify about creation/changing of the user record - FOLIO platform posts a message to a specific Kafka topic to notify Locate
Step 19: Return record from users table - FOLIO platform returns data about newly created/updated patron record. Switch to the Users App with the newly created patron as a current selection.
Step 20: Provide photo - The registration desk staff makes a photo and attaches it to patron’s record
Step 21: Assign the appropriate Patron Group to the patron - The new patron record is assigned to the correct patron group based on the registration details. If needed the patron record is moved to the active state.
Step 22 Patron is active:
The patron's status is set to active in the system.Step 23 Print Patron Card:
The registration desk staff prints a physical patron card for the patron, which includes details like the barcode and photo.Step 24 Patron registration completed:
The registration process is officially completed, and the patron is now fully registered and activated in the system.Note: At this stage, the patron cannot log in to Locate until the email verification is completed.
Self-registration Kiosk
The following functionality covers the case when a patron comes to LoC registration desk without prior creation of Tier 1/2 Locate account. The Kiosk should be implemented in Locate as a separate form allowing patrons to directly fill in Tier 2 registration data and proceed with registration without e-mail address verification.
Work Breakdown Structure
Create a staging table with fields:
First name
Last name
Email
Tier: 1,2
Status: describes if the patron has verified their email address (true/false)
Etc. fields from Tier 2 registration form
Add (edge) GET API to check the registration status in users table:
When the record is found in FOLIO
Return 200 - If active
Return 404 - If inactive (With a message indicating that it's expired)
When the record is NOT found in FOLIO
Return 404 - (With a message indicating that it's NOT FOUND)
Modify (edge) POST API to store data in the staging table and accept:
Tier 1 data (insert): only store First/Last name and email address
Tier1 data (update): the record is activated on Locate side
Tier 2 data (update): store full data
Create GET API for staging table to search/filter data by email/first name/last name
Create UI for staging table to search/filter data by email/first name/last name
Create PUT API to link patron record with staging record
Create a patron record if not present in user table and move it from staging to user table
Update existing patron record with staging record and remove staging record
Create UI dialog to:
Confirmation to update existing patron record with staging data
Dialog to choose one of the existing patron records and update it with staging data
Go to user app with the selected patron record
Comparison with patron-group based solution
Attribute | Registration with non-circulating patron group | Registration with staging table | |
---|---|---|---|
1 | Security | Edge API exposes possibility to create a big number of Tier 1 registration in exceptional cases | The possibility to create big number of registrations in users table is isolated to staging table only |
2 | Performance | Unfinished registration records can lead to performance degradation as | Patron records in FOLIO |
3 | Analytics | Information on Tier 1 registration is available in Locate. And only information on Tier 2 registration will be in FOLIO | Information on Tier1 and Tier2 registration is available in FOLIO |
4 | Estimation | Medium: mostly reuses existing FOLIO implementations and mechanisms FOLIO side is already implemented | Extra Large: Requires additional UI and implementation of staging table Reuqires rework on the implemented option |
Questions
Do we need to keep invalid tier 2 data in the staging table?
How do we update the records? How do we handle renewal? - no update
How do we update the staging record if we update email updates in the users table?