As an entitlement system, it is necessary to track the lines of accounting which fund the items invoiced by vendors, which is the core function of the system. Since several variants exist within DoD's public documentation alone, these must be seamlessly supported through FACET-Acq and be extensible into the general Federal space.
Approach
While the basic flow of
Agreement obligates funding
Deliveries expense against that funding
Payments disburse that funding
is intuitive and logical, the complexities of various implementations across agencies, upstream producers (contract writing systems) and downstream accounting systems of record (ERPs) result in an ecosystem which is difficult to manage.
To solve this, all accounting line types tie back to funding basics and implement a standardized interface which allows the system to support any number of accounting line types simultaneously.
Lessons Learned
Interface allows various types of funding to be hot-swappable as accounting lines continue to evolve
Polymorphic relations are perfect for various types of funding
SLOA documentation explanations are quite esoteric. It is extremely difficult to understand the purpose of those fields. While this does not impact the ability to track the data, usage of these fields beyond free-form text queries will require identification of their system of record across the service's use cases
To dry up some of the model code, I created a UuidModel abstract class which each concretion can extend and stop the repetition
Support Funding and SLOA
Purpose
As an entitlement system, it is necessary to track the lines of accounting which fund the items invoiced by vendors, which is the core function of the system. Since several variants exist within DoD's public documentation alone, these must be seamlessly supported through FACET-Acq and be extensible into the general Federal space.
Approach
While the basic flow of
is intuitive and logical, the complexities of various implementations across agencies, upstream producers (contract writing systems) and downstream accounting systems of record (ERPs) result in an ecosystem which is difficult to manage.
To solve this, all accounting line types tie back to funding basics and implement a standardized interface which allows the system to support any number of accounting line types simultaneously.
Lessons Learned
UuidModel
abstract class which each concretion can extend and stop the repetition