When setting up custom controls there are several points to remember in addition to those mentioned in the previous discussions of the configuration pages:
Insert constraints on Budget Level Control for the lowest required budget level of a structure that should control spending and not upper levels as those levels will only issue duplicate errors. This guidance assumes you have guidelines in place to prevent more budget authority to be given at lower levels than at the parent upper levels.
Do not place parent to child amount guidelines on the lowest budget level as there is no level below that one for the system to accurately calculate the guideline so that the system will always issue the guideline error.
Ensure that control ID #13, #14 or #29 is inserted on Budget Level Controls for the each level in a reimbursement budget structure with a default violation of Reject with none of the Allow flags checked. This control ID on Budget Level Controls should be the same one that is the Application Parameter for Reimbursement Budget Availability (REIM_BUD_AVAIL).
Give security access to the Load Constrains action in a very restricted fashion for better budget control.
Where possible, build with calculated amounts instead of stand alone amounts for performance reasons.
Do not change delivered controls unless you will track the change and reapply with an upgrade, or when upgrading you will not be taking delivered controls. The recommended approach is to copy the constraint you want to change and create a new one with an ID that is four-digits.
Do not include the same budget amount twice within a side or in the left and right sides simultaneously, unless intended. This may sound simplistic if only stand alone amounts are used, but calculated amounts may cause this mistake if the full calculation formula is not evaluated.
Avoid recursive formulas where the application will get caught in a loop trying to calculate a control. This problem can occur within the LHS or RHS definitions or be inherited from faulty Budget Formula setup. To create an example, the following letters were used to denote budget amount fields. The following example shows a recursive problem as A has to be calculated from an amount (F) that already includes A.
LHS: A (calculated amount)
Operator: >=
RHS: 0
Formula for A = B (calculated amount) - C - D - E (C, D, & E are stand alone)
Formula for B = F (calculated Amount) - G
Formula for F = A + H
When determining the settings for the Include Pending Increases and Decreases flags on Budget Tracking Amount, remember that most transactions perform a liquidation of another. If the pending increases for the referencing transaction and not the pending decreases for the referenced transaction are checked, a budget error could be issued in the situation where the liquidation is needed to cover the liquidating entry.