It’s time to pay the debts - returning to cross-functional processes modeling as promised.
Remindment: the first part stated that it’s usually impossible to implement cross-functional processes by orchestration only (i.e. within a single BPMN pool). The borders betwen departments are material, they mark differences in manner and rhytm of different kinds of work. Because of these differences the fragments of a process belonging to each department are technically implemented by separate pools while the cross-functional process as a whole is implemented by a set of such pools communicating via messages and data.
In this article we’ll consider common cross-functional process patterns.
Let’s use the following example:
Under routine financial planning all bills received by a company are processed by the finance department first: they determine validity of the claim, check the amount and date, assign priority in accordance with established business rules. Then the bill is submitted for approval to CFO or some other manager who makes a decision about payment taking into account priority, amount and term.
The simplest process diagram may look like this:
Fig. 1. Synchronous Process
In reality companies use to establish different routines for different bills: e.g. the bills below certain amount or tax claims may pass without approvals. Besides some bills may be rejected by the first check and not get to the CFO but we’ll leave it apart.
1. Single Resource Planning
We are interested in another aspect: let’s suppose that company has limited working capital. So it may happen that the bills not disputable by either amount nor term can’t be paid in due time and the company postpones them.
The key point: it’s impossible to make a qualified decision regarding a single bill. The reasonable alogirthm for a decision maker is to collect all bills for the given period (e.g. for today or this week), analyze the situation as a whole - the amount available vs. the bills total - and decide which bills to pay and which to postpone.
Here is the process diagarm implementing this algorithm:
Fig. 2. Resource Planning
Comments for those who aren’t comfortable with BPMN:
- After passing the check the bill is placed into the database and bill processing waits first of three events: the income message that the bill is approved; the income message that the bill is rejected (we won’t pay) or timeout (added for generality).
- The bills are approved within a separate process which is launched periodically (e.g. daily or weekly). At the first stage the bills for the given period are selected from the database. A list of selected bills is then presented to CFO to choose from three options: “approve”, “reject”, “postpone”.
- When it’s done and the button is pressed the process instances corresponding to the bills marked as approved or rejected automaticallt get appropriate message and corresponding database records are marked as processed. Postponed bills remain untouched and the next run of the scheduling process selects them again.
- If the bill is approved then the financial transaction is made automatically.
Process diagrams like at the fig. 2 appear at this blog on a regular basis. If asked what is the single most useful process pattern I’d pick this one.
- Alexander Samarin calls it “CPP - Collect and Periodically Process”.
- I prefer “Resource Planning”.
- Yet another name for the same pattern:”Orders Buffer”.
It’s generally good to have several names for a single pattern: more names, more “pictures” of the outer world we associate with it, more often we utilize the pattern.
- Some use term “Group Processing” but I don’t like it: too general, may mean nearly anyting.
2. Optimistic Planning
Which of the diagrams depicted at fig. 1 and 2 is better? More correct? There is no definite answer because it depends on our priorities:
- if the priority is processing speed then the diagram at fig. 1 should be preferred
- if the priority is resource utilization then the diagram at fig. 2 should be preferred
Besides these options aren’t exclusive - here is a combined scheme:
Fig. 3. Optimistic Planning
Each bill is considered twice: first synchronously under the bill processing then - if necessary - within payments sheduling.
- The payments scheduling process checks if there is enough money to pay all preliminarily approved bills and assign the approval task to the CFO only at those presumably rare cases when there the balance would become negative.
This scheme is practical when the resource is not confining “almost always”. It benefits from the bills approved without delays yet when there isn’t enough money there is an option to reject some bills at the last moment.
- When the preliminary approval is received the process may perform some activities (not depicted at the diagram) like informing the supplier that the bill is scheduled for the payment.
- If the exception occurs and the payment was rejected at the last moment then the supplier must be informed about this event, too.
3. Multiple Resources Planning
Another possible development direction for the diagram is generalization for multiple resources case. For example the company may make payments using different accounts at different banks.
Fig. 4. Multiple Resources Planning
Now finance not only checks the bill but also figures out what bank account should be used (probably on the basis of defined business rules).
- CFO may agree with the plan or switch the bill to another account.
- When the decision about all bills is made the scheduling process creates a list of payments for each bank and initiate a payment process for each list - not an instance for every bill but an instance for all bills scheduled for a given bank at a given date.
At this diagram we separated bill processing, payments scheduling and payments per se. It makes possible to schedule either multiple resources or a single resource for multiple dates: for example, CFO would be able to schedule payments for today and tomorrow. The payment execution process will wait for the assigned time (note the timer at the diagram) and then pay all bills.
OK, this is a bit artifitial for payments but imagine scheduling of multiple production lines. The output of the scheduling process at this case are daily schedules for each line: each schedule lists all orders to be processed by the given line at the given date. It’s natural to consider the execution of each schedule as a separate process. The scheduling process launches the execution process for each line and exits. From Monday to Thursday the schedules are created for the next day while on Fridays the production may be scheduled for Saturday, Sunday and Monday.
Generally speaking, the example used isn’t a cross-functional because both finance and CFO are really the same department. But that’s not the point: the point is that there is a process utilizing some limited resource - working capital for the case.
- This is the case whenever the process crosses the boundaries between departments: the customer’s order needs an activity from the manufacturing, manufacturing depends on materials purchasing, new product development needs marketing research, claim processing needs the user manual to be corrected etc.
- But it’s the same at a smaller scale: e.g. the manager’s time may be a limited resources. Top managers are very busy all the time so if some process needs director’s approval or signature then be prepared that he’d prefer to approve a list at once rather than many separate requests.
From this point of view, we increased the efficiency of two resources at once: the working capital and CFO.
To Be Completed
In the final part I’m going to speculate about what should be taken into account when choosing one pattern or another.