Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Fee/Fine Data Structures

In Folio, fee/fine information is stored as accounts and actions

  • Accounts are where the core charge is held and created when a fee/fine is created and applied to a user account.
    • The associated JSON schema is accountdata.json (https://github.com/folio-org/mod-feesfines/blob/master/ramls/accountdata.json)
    • An individual account record has a required userId - that's how it's linked to the user record
    • An individual user may have zero, one, or more accounts - e.g., if they've never had a fine charged, they would have no account records.
    • Accounts have feeFineId and ownerId - this links to the fee fine owner, and the type of fee/fine that was charged. Types of fines are configurable for manual charges in Settings → Users → Fee Fines. For automatic charges, they are configured in FOLIO itself. Types of fee/fines in the system can be retrieved via an API call (GET /feefines)
    • Note that as of Honeysuckle, a materialTypeId and itemId must be provided, even if you are not trying to tie a fee/fine to an individual item. When creating a fee/fine, you will have to set a value for those attributes no matter what. The FOLIO UI uses "0" as a value if no item is provided. See
      Jira Legacy
      serverSystem Jira
      serverId01505d01-b853-3c2e-90f1-ee9b165564fc
      keyUIU-2070
      for the status of this issue.
    • Also note that as of Honeysuckle, a loanId must be provided to prevent odd UI behavior for a migrated fee/fine. The FOLIO UI uses "0" as a value for the loanId for a manual fee/fine. This is the case even if your fee/fine is not being tied to a loan record. See
      Jira Legacy
      serverSystem Jira
      columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
      columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
      serverId01505d01-b853-3c2e-90f1-ee9b165564fc
      keyUIU-2071
      for the status of this issue. 
    • Hardcoded attributes (with allowed values) include:
      • Status
        • Open
        • Closed 
      • Payment Status
        • Outstanding
        • Paid partially
        • Paid fully
        • Waived partially
        • Waived fully
        • Transferred partially
        • Transferred fully
        • Refunded partially
        • Refunded fully
        • Cancelled as error
  • Actions are where transactions are kept on the account
    • The associated JSON schema is feefineactiondata.json (https://github.com/folio-org/mod-feesfines/blob/master/ramls/feefineactiondata.json)
    • Accounts will always have at least one action, created when the account was created
    • A feefineactiondata record has a required attribute of accountId which links it to the account.
    • Hardcoded attributes (with allowed values) include
      • TypeAction
        • Outstanding
        • Paid partially
        • Paid fully
        • Waived partially
        • Waived fully
        • Transferred partially
        • Transferred fully
        • Refunded partially
        • Refunded fully
        • Cancelled as error
        • Staff info only
    • If you want the action to properly update the account, you must post the action to the appropriate API endpoint.
      • staff info - POST /feefineactions
      • payments - POST /accounts/{accountId}/pay
      • waives - POST /accounts/{accountId}/waive
      • refunds - POST /accounts/{accountId}/refund
      • transfers - POST /accounts/{accountId}/transfer
      • cancelled - POST /accounts/{accountId}/cancel


Considerations for Migration

Migrating as an account, versus an account plus fee fine actions

Depending on your source data, you may want to explore transferring fines from your old ILS to FOLIO only as accounts rather than trying to also bring over historical transactions.

...

Note that migrating only as an account and not also creating JSONs does break some functionality (as of Honeysuckle) - you are not able to see the Staff Info Only button, for example. 

Migrating feefines as manual instead of automatic charges

You could consider migrating fee/fines from your system as manual instead of automatic charges. If you do so, the recommendation is to create a charge type for each fee/fine owner that can help you identify which fee/fines were migrated from your old system.