/
LoC Patron Registration (with Staging) Use Cases

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 404

  • Display 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 200

  • Hide 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

Case 5 - When a staff logs in (with 1 record in FOLIO) - TBD?

  1. Staff logins through SSO (assumption: user email as externalSystemId)

  2. 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 to False

    • 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 true

  • Locate 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

Related content