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 patron

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

 

Patron Registration Process (Tier 2 + Tier 2)

  • Step 1 Patron fills in a complete registration form (Tier 1 + Tier 2):
    The patron begins by filling out a comprehensive registration form that includes both Tier 1 and Tier 2 information in one go.

  • Step 2 Send patron data (Tier 1 + Tier 2):
    The filled-out registration data is sent to the FOLIO platform, which processes the combined registration request.

  • Step 3 Check if e-mail already exists:
    FOLIO checks whether the email provided by the patron is already present in the FOLIO platform.

    Alternate Path: If the e-mail is not found

    • Step 4: Store patron data (Tier 1 + Tier 2) in FOLIO - Since no existing record with the same email is found, FOLIO stores the entire patron data.

    • Step 5: Patron data has been stored - Confirmation that the patron data has been successfully stored in FOLIO.

    • Step 6: Persist patron data (Tier 1) - Locate ensures that the patron data from Tier 1 is saved persistently.

    • Step 7: Send email verification - An email verification message is sent to the patron to confirm his/her email address.

    • Step 8: Registration needs to be completed onsite - The patron is informed that the final step of the registration needs to be completed in person.

    Alternate Path: If a single patron record with this email address is found

    • Step 9: Store patron data (Tier 1 + Tier 2) - The patron data is stored in FOLIO since only one existing record with the same email is found.

    • Step 10: Patron data has been stored - Confirmation that the patron data has been successfully stored in FOLIO.

    • Step 11: Persist patron data (Tier 1) - Locate ensures that the patron data from Tier 1 is saved persistently.

    • Step 12: Send email verification - An email verification message is sent to the patron.

    • Step 13: Registration needs to be completed onsite - The patron is informed that the final step of the registration needs to be completed in person.

    Alternate Path: If multiple records are found for the email

    • Step 14: Error: Multiple records with the email address found - The system detects multiple patron records associated with the email.

    • Step 15: Error: Invalid email address. Use another email - The patron is prompted to use a different email address because the provided one is associated with multiple records.

    • Note 1: At this stage, the patron cannot log in to Locate until the email verification is completed.

    • Note 2: This registration can be done onsite using a self-service point or with the help of the registration desk staff.

    • Note 3: Unverified e-mail does not block onsite registration completion.

  • Step 16 Verify email:
    The patron verifies his/her email by following the link sent in the email verification message.

  • Step 17 Activate patron (Tier 1):
    Once the email is verified, Locate activates the patron's account for Tier 1.

  • Step 18 Send patron activated (Tier 1):
    Locate notifies FOLIO that the patron account has been activated for Tier 1.

  • Step 19 Mark patron activated (Tier 1):
    FOLIO marks the patron's data as activated for Tier 1 in its dedicated table.

 

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

  1. Create a staging table with fields:

    1. First name

    2. Last name

    3. Email

    4. Tier: 1,2

    5. Status: describes if the patron has verified their email address (true/false)

    6. Etc. fields from Tier 2 registration form

  2. Add (edge) GET API to check the registration status in users table:

    1. When the record is found in FOLIO

      • Return 200 - If active

      • Return 404 - If inactive (With a message indicating that it's expired)

    2. When the record is NOT found in FOLIO

      • Return 404 - (With a message indicating that it's NOT FOUND)

  3. Modify (edge) POST API to store data in the staging table and accept:

    1. Tier 1 data (insert): only store First/Last name and email address

    2. Tier1 data (update): the record is activated on Locate side

    3. Tier 2 data (update): store full data

  4. Create GET API for staging table to search/filter data by email/first name/last name

  5. Create UI for staging table to search/filter data by email/first name/last name

  6. Create PUT API to link patron record with staging record

    1. Create a patron record if not present in user table and move it from staging to user table

    2. Update existing patron record with staging record and remove staging record

  7. Create UI dialog to:

    1. Confirmation to update existing patron record with staging data

    2. Dialog to choose one of the existing patron records and update it with staging data

    3. 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

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 users table is already used for storing patron and user information

Patron records in FOLIO users only appear after id confirmation onsite

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

  1. Do we need to keep invalid tier 2 data in the staging table?

  2. How do we update the records? How do we handle renewal? - no update

  3. How do we update the staging record if we update email updates in the users table?