LoC Patron Registration (with Staging) Use Cases
Assumptions
Renewal should be same as new patron registration. Has to come on-site
Email verification WILL NOT be done for walk in on-site registration
Presence of an active User Record automatically implies that the patron is Tier 2. If the patron only has staging record, then they are Tier 1
Tier 1 staging record WILL NOT have pre-registration data initially. But, gets updated when patron submits Tier 2 pre-registration form
Staging record type (Tier 2) WILL be used to locate records to complete on-site registration
Inactive users from the existing system WILL NOT be imported
Patron records having duplicate email address WILL NOT be supported
ExternalPatronId WILL be the email address
ExternalPatronId in FOLIO MUST be unique
When multiple user records are found in FOLIO with same email address, it is assumed that it represents a situation where a library staff has 2 records one with type “Patron“ and another with type “Staff“ and the Staff record WILL NOT have an ExternalPatronId
Barcode generation for the user happens outside FOLIO. WILL be entered manually during on-site workflow
Design Notes
Use custom attributes for storing information about patron type (Tier 1 or Tier 2) in Locate
Send errors in the following format
{ "code" : "ACCOUNT_EXPIRED", "message" : "Patron account has expired" }
Implementation Details
FOLIO
edge-patron
POST /patron - Supports creating Tier 1 record in the staging table and returns
externalSystemId
PUT /patron/{externalSystemId} - supports update operation for staging records independently of the Tier
GET /patron-registration-status - query by Email Address or by
externalSystemId
(New End point)Check FOLIO Users
When multiple active records are found in FOLIO (only for querying by email)
Return 400 - (With Message indicating that multiple records were found)
When record is found in FOLIO
Return 200 - If active
Return 404 - If inactive (With Message indicating that its expired)
When record is NOT found in FOLIO
Return 404 - (With Message indicating that its NOT FOUND)
Locate
Frontend
Display expiration message when Tier 2 account has expired upon login
Hide pre-registration link for Tier 2 patron
On-site registration form
Backend
Listen for kafka messages
Open Questions
How to handle scenario where a staff is using the same email address multiple times (Patron and Staff accounts)?
Captcha required ?
What happens when an active patron loses library card ?
Is there a need to verify email for walk in onsite registration ?
Can we send error codes with 404 along with text ?
Yes, we can do it
What exactly will happen when the patron account is renewed?
This might get complicated when we deal with SSO and Native Auth using username/password. Which record actually controls the expiration ? Will it be FOLIO or Locate ?
Can we remove kafka by updating patron record upon login and when the patron-registration-status returns a 200
Login Use cases
Case 1 - When Tier 1 Patron logs in - Reviewed
Call edge-patron (GET /patron-registration-status by
externalSystemId
) to check the active status of patron Returns 404Display link to pre-register
Case 2 - When Tier 2 Patron logs in - Reviewed
Call edge-patron (GET /patron-registration-status by
externalSystemId
) to check the active status of patron Returns 200Hide link to pre-register
Case 3 - When Tier 2 Patron (with expired account status) logs in - Reviewed
Call edge-patron (GET /patron-registration-status by
externalSystemId
) to check the active status of the patron Returns 404 with Status Text “Account Expired“Locate displays a message
Display link to pre-register
Case 4 - When patron registered on-site (Tier 1 + Tier 2) logs in - Reviewed
Same as case 2
Case 5 - When a staff logs in (with 1 record in FOLIO) - TBD?
Staff logins through SSO (assumption: user email as
externalSystemId
)Staff logins through username/password
Case 6 - When a staff logs in (with multiple accounts in FOLIO)
Case 7 - When a VIP patron logs in
Case 8 - Migrated patron logs in (both FOLIO and Locate accounts are created through migration scripts)
Registration Use cases
Case 1 - Brand New - Reviewed
Patron self-registers for Tier 1 without logging in
When the patron fills in Tier 1 registration form and submits, Locate
Calls edge-patron (GET /patron-registration-status by email ). Expect 404
Calls edge-patron (POST /patron) to create the staging record
Create Locate patron record with
isActive
set toFalse
Sends activation link to the email address
The patron clicks activation link and gets verified
Locate patron record is updated to set
isActive
flag to trueLocate calls edge-patron to update staging record with patron status (Active)
Patron can now login as Tier 1
Case 2 - Tier 1 patron pre-registering for Tier 2 for first time
Call edge-patron (GET /patron-registration-status ). Call returns 404
Patron fills in and submits pre-registration form for Tier 2 account. Locate
Calls edge-patron (patron POST) to update staging record with Tier 2 data
Locate notifies on screen that the patron has to go on site to complete registration
On-Site Workflow is completed in FOLIO
Staging record WILL BE removed
FOLIO sends notification via Kafka
Locate listens for CREATE/UPDATE messages with the flag (new flag to introduced)
Locate updates patron record to indicate now that it is a Tier 2 patron and the on site registration is now complete
Case 3 - Walk In Patron (Getting Tier 2 access bypassing Tier 1)
Staff instructs the patron to fill in registration form by going to https://<some host>/onsite-registration
Once the registration is complete, create patron record with isActive set to False
Locate calls edge-patron to create the staging record
Patron has to walk back to the staff desk to inform that the registration is complete
On-Site Workflow is completed in FOLIO
Staging record will be removed
Locate listens for CREATE/UPDATE messages with the flag (new flag to introduced)
Locate updates patron record to indicate now that it is a Tier 2 patron and mark the record as active and the and the on site registration is now complete
Case 4 - Tier 1 patron pre registering for Tier 2 for second time( pre-registered but didn’t go on site to complete)
Call edge-patron (GET /patron-registration-status ) to check active status of patron. Call returns 404.
Locate calls edge-patron to update (overwrite existing record) staging record with Tier 2 data
Follow steps from Case 2
Case 5 - Tier 2 patron pre registering for Tier 2 (With active patron account)
Avoid this scenario by hiding the link to pre-register once the locate patron has completed Tier 2 On site registration
Case 6 - Tier 2 patron pre registering for Tier 2 (With expired patron account)
Call edge-patron (GET /patron-registration-status ). Expect 404 with expired account message
Locate needs to display a message when the user logs indicating that the account’s Tier 2 status is inactive
Patron fills in pre-registration form
Locate calls edge-patron (patron POST) to create staging record with Tier 2 data
Follow steps from case 2
Case 7 - Patron imported from the existing system. Accessing Locate for the first time (No Tier 1 account)
Pre-Conditions
FOLIO record will be created via data import from another system
FOLIO patron record will be active
FOLIO patron record WILL already have all of Tier 2 data
Library staff will email patrons informing them that they need to self register for Tier 1 account
When the tier 1 registration form is submitted Locate calls edge-patron (GET /patron-registration-status ). Expect 200
No need to create a staging record
Create Locate patron record with isActive set to False
Locate sends activation link to the email address
Patron clicks email and activates Locate Patron record
Update Patron type to Tier 2 in Locate
Case 8 - When multiple patron records are found (not sure how we will end up with this case)
Patron WILL NOT be to complete Tier 1 registration
Can display a message indicating an issue with registration. Go on site to resolve.
Patron goes on site
Staff somehow resolves the issue
Resolution can be made by deleting the user record. Will the staff have delete privileges at the desk
Continue steps similar to Case 3 (Walk in on-site registration)
Case 9 - Tier 1 Patron goes on-site without completing pre-registration
Staff instructs patron to use library workstation to complete Tier 2 Pre-registration form
Patron has to walk back to the staff desk to inform that the registration is complete
Continue steps similar to Case 3 (Walk in on-site registration)
On Site Registration workflow
Step 1 - Patron walks up to the registration Desk
Patron with no registration
Tier 1 Patron with no registration
Step 2. - Library Staff verifying the patron data
Search by name or email
Manually verify documents provided.
Outcome - Change patron group (Manually change), Assign Barcode (Generate barcode outside FOLIO )
Step 3 - Taking photo
Take photo outside FOLIO
Transfer photo to workstation running FOLIO
Upload to FOLIO via user app
Done with implementation for Go Live. Webcam integration will come as part of Sunflower
Step 4 - Print Library Card
Use Users App.
Select Print Library Card
Data gets exported as 2 files. Data and photo
Manually upload to Zebra print studio
Step 5 - Renewal
Similar process to Initial registration