Page tree
Skip to end of metadata
Go to start of metadata
AuthorAndrei Makaranka
JIRA task
Business Requirements

UXPROD-772 - Getting issue details... STATUS

Architects Review
PO review

Revision History

VersionDateOwnerDescriptionReason
v1.007.27.2020Andrei MakarankaInitial version
v1.107.31.2020Andrei MakarankaFill gapsGrooming session 29.07.2020

Overview

 In order to start the next fiscal year the user must be able to transfer or close outstanding encumbrances for orders that have not yet been resolved. This is generally done based on order type.

Use cases:

  • Library has ongoing orders that must be re-encumbered in the upcoming fiscal year. The library will want to encumber money next year based on what was spent in the current year and potentially increase it by a specific percentage.
  • Library has ongoing orders that must be re-encumbered in the upcoming fiscal year. The library will want to encumber money differently for continuations that for subscription orders. Increasing them by different percentages.
  • Library has one-time orders that could not be close and must be re-encumbered in the upcoming fiscal year. The method of encumbrance may differ from that of on-going orders. For one-time orders the library would rollover remaining encumbrances.

High-Level Requirements:

  • Adjust the date of encumbrances without affecting monies that have already been expended against this encumbrance
  • Release encumbrances without affecting the monies that have already been expended
  • Capture the original amount encumbered based on the purchase order line
  • Track the amount expended against this encumbrance
  • Track the current encumbrance
  • Note the currency?
  • Note the exchange rate if applicable?

Constraints

  • The fund must contain only one active budget.

Assumptions, dependencies

  • API for changing and creating a budget is ready.
  • API for changing, creating and releasing encumbrances is ready. 
  • API for re-encumbered is ready. (Confirmed by Dennis Bridges on grooming 29.07.2020)
  • It is likely that we will be creating upwards of 75000 - 100000 encumbrances during this process. (statistics from Library) 

Out of Scope

  • Automatically trying to resolve issues which occurred in rollover time.

Architecturally Significant Requirements

  • Fiscal year rollover is a process which must happen for all ledgers separately and this process started manually by user.  
  • Ledger rollover includes : Budgets rollover and encumbrances rollover and those rollovers are independent processes.
  • The system after rollover must be in a consistent state. All budgets and encumbrances must be processed and as result rollover end successfully or with errors.
  • An error report will be generated after the process completes.

Solution Design

Rollover flows

Fiscal year rollover flows

Data Model

Draft encumbrances_fiscal_year_rollover

PropertyTypeDefaultRequiredNotes
idstring
NUUID - System generated if not specified
fromFisclaYearIdstring
YUUID of the fiscal year from which rollover will be happened
toFisclaYearId
string
YUUID of the fiscal year to which rollover will be happened
currencystring
YCurrency for rollover

restrictEncumbrance

booleanfalseYIf true, imposes restrictions on encumbrances

restrictExpenditures

booleanfalseYIf true, imposes restrictions on payments
statusrollover_statusPendingYStatus of rollover process Pending, In Progress, Error
metadata
metadata
NANoSystem generated record metadata

APIs

Draft Business Logic Module

MethodPathRequestResponseDescriptionNotes
POST/finance/ledgers/{id}/rollover

encumbrances_fiscal_year_rollover

encumbrances_fiscal_year_rollover

Create an encumbrances_fiscal_year_rolloverStatus : 201
GET/finance/ledgers/{id}/rollover
encumbrances_fiscal_year_rollover

Get an encumbrances_fiscal_year_rollover

Status : 200


Draft Storage Logic Module

MethodPathRequestResponseDescriptionNotes
POST/finance/ledgers/{id}/rollover

encumbrances_fiscal_year_rollover

encumbrances_fiscal_year_rollover

Create an encumbrances_fiscal_year_rolloverStatus : 201
GET/finance/ledgers/{id}/rollover
encumbrances_fiscal_year_rollover

Get an encumbrances_fiscal_year_rollover

Status : 200

Design


Open Items

QuestionAnswer

Andrei Makaranka : How many users can start rollover at the same time?

Dennis Bridges Each ledger could rollover independantly but most would roll one at a time. Generally there is one user that handles the rollover at each institution. However, for a multi library instance each Ledger could be rolled over by a different user.

Andrei Makaranka: Could you clarify what "unfinished orders" are and what encumbrances should we choose for a rollover?

Dennis Bridges Any "Open" orders should be considered in the rollover. However, some may not have encumbrances. Closed and pending orders will not need encumbrances created during rollover for the new fiscal year.

Andrei Makaranka: There are to approaches how to rollover budgets:

  1.  After the start of the rollover all selected active budgets will be blocked(Status = "Closed") for any operations and then all new budgets start to be created.
  2.  After the start of the rollover, the budgets are blocked(Status = "Closed") and new ones are created for them one by one.

Example : Block first budget and then create new budget. Block second budget and then create new budget.

What is the right approach from business view?

Dennis Bridges This process is generally done while all other system activity is frozen. Meaning the expectation would be that if I am rolling over Ledger A no one can spend money against any of the budgets assigned to Ledger A. Option 1 seems like the appropriate approach.

Andrei Makaranka: Do we need set "Active" status for new budgets immediately after creation or only when rollover will be finished?

Dennis Bridges So long as the system can still create the necessary encumbrances I believe we should activate the budget last. So the users can be sure no one is able to order or invoice against them during rollover.

Andrei MakarankaWe need set of checks which we can use for building error report.

Also it's needed for estimating the scope an effort what we need for implementing a rollover check process.

Could you please provide this set of checks? 

Dennis Bridges The checks would include:

Were budgets closed successfully for previous fiscal year?

Were budgets created successfully for new fiscal year?

Were budgets activated successfully for new fiscal year? Note: if Fund status is Frozen, then new budget should be created in status Frozen.

Were allocations created against all new budgets successfully for new fiscal year?

Were encumbrances created for all POLs against new budgets for new fiscal year?

Andrei Makaranka: Library will want to release all remaining encumbrances in the fiscal year that is being closed?

Dennis Bridges No, I have confirmed that the encumbrances should remain as they are in the fiscal year being closed, for reporting purposes. 

Andrei Makaranka: What field need to be included in the error report?

Dennis Bridges 

Order error table

POL Number (Hyperlink)

Failed action(s) (Eg. Create Encumbrance)

Amount (Eg. $104.03)

Fund Code (Eg. ECON) (Hyperlink)

Error message (Eg. Not enough money available in the Fund to create encumbrance)

Fund error table

Fund Code (Hyperlink)

Failed action(s) (Eg. Create allocation)

Amount (Eg. $1000)

Error message (Eg. System error: server could not be reached)



Aliaksandr Pautau : What should happen to invoices during a rollover, specifically with Pending payments?

Dennis Bridges : 
Any invoice with a pending payment that IS NOT in the workflow state "Approved" should be moved into the next fiscal year (Note: Currently this is not an issue, but we will be implementing a feature in the future that will mean creating pending payments for all invoices that are Open).

Any invoice with pending payment(s) that are in the workflow state "Approved" should NOT rollover pending payments into the next fiscal year. Important: Also, any payment or credit for the invoice should be created for the FY during which the invoice was approved.

  • Eg. Invoice 1234 is approved in FY2020. The ledger is rolled over into FY2021 and then the invoice is transitioned to paid. Payments are created for FY2020 budget.





  • No labels