Converting Causal Loop Diagrams (CLD) into stocks and flows diagram.
This is a technical post that explains how to convert Causal Loop Diagrams (CLD) into “Stocks and Flows” diagram. We used InsightMaker to develop this example. Our next post will explain how to use Stocks and Flows Diagram to run a simulation.
Let’s create a new simple causal diagram as an example for this post. This diagram will depict the causality between an IT department (IT) and the internal customers (Customers). Customers will generate more and more requests that will impact IT.
Diagram 1: Causal loop.
IT also has to keep the Lights On (KTLO), which generates demand. Internally, IT spends time on projects and KTLO that can be a need coming from customers or a need for KTLO. IT has both positive impacts on projects and KTLO tasks, but those two generate too much pressure (negatively) on IT. Therefore, there are two balancing loops between IT, projects and KTLO tasks. Both projects and KTLO provide value to customers, which is a positive impact. As a result, you can see two positive reinforcing loops between customers->new requests->IT->Projects and customers->new requests->IT->KTLO tasks.
Stocks and Flows Diagram
In this post, we are not getting into the logic and insight behind the causal diagram. The focus is on how to convert this CLD into a stocks and flows diagram, to get a better understanding and to run a simulation.
There are five steps to translate CLD into stocks & Flows:
- Identifying the units used in any CLD variable
- Identifying and creating stocks
- Identifying and creating flows
- Connect stocks and flows
- Add and link remaining CLD variables
Let’s take the CLD example and use it to walk through the steps and create a stock and flow diagram.
Identifying the units used in any CLD variable:
I’ll start with the easy variables and move to the more complicated one.
- Projects in Hours
- KTLO Tasks in Hours
- New Requests in Hours
- Customer in Business Value
- KTLO Activities in Hours
- Projects in Hours
- IT in hours
The complexity hides in the impact of projects and KTLO activities (hours) on customers (business value). This complexity helped us to realize that we missed a variable: business value.
Diagram 2: Changed causal diagram
Identifying and creating stocks
Identifying stocks is probably one of the hardest steps. There are several rules that you can follow. Stocks are like sinks, and flows are pipes that connect sinks. Every variable that can accumulate any units is a good candidate for a stock. In an organization, stocks are every group (division, department, team), role or person (not recommended to get to this level). The last rule is using units. As a rule of thumb, every variable that involves time is a flow.
Follow those rules we have two stocks: IT and customers (other business units that consume IT services). Let’s move on with those two and see how creating the diagram will open our eyes to missing stocks.
Identifying and creating flows:
After we identify the stocks, we left with variables that will become pipes (flows) and variables that will stay variables in stock and flow diagrams. I mentioned that flows are like pipes that impact stocks. They can have a positive impact (when they control flow into the stock) and they can have a negative impact by enabling flow out of the stock. Variables that control the flow in and out should be “flows” (pipes). Other variables should stay as variables. The variables are usually constants or logic that impact the flow.
Customers have a line coming in (business value) and a line coming out (new requests/projects). Therefore, there will be flow into business value and flow out hours (or requested hours to work on projects)
The same logic applies to IT. We will transfer the variable that connected as a positive impact to a pipe (requested projects that translated to requested hours). The two variables that connected with a negative impact will translate into “hours on KTLO activities” and “hours on projects”.
Diagram 3: “Customers” Stock
Connect stocks and flows:
After creating the easy connections between pipelines and stocks, it is time to connect all the dots and reflect the same impacts depicted in the causal diagram. This is a tricky part, especially when there is a translation from one unit to another.
In this example, we need to connect the hours spent on projects and KTLO (flowing out of IT) into a business value that flows into customers. To resolve this challenge, we can add two new stocks that will help us do the translation. One stock will be the number of ready-to-use projects. The other one is Platform availability. Each one of them will have “spend hours” as an incoming pipe and business value as an outgoing pipeline.
Diagram 4: Stocks, flows (pipes) and variables
Now we need to connect all the flows to depict the same loops we defined in our causal diagram. One rule to remember is that flows connected to two stocks will remove defined quantity from one stock and add it to the other stock. Therefore, it makes sense to connect directly customer and IT with the “projects requests – hours” pipe. But because the unit of customers is business value and the unit of IT is hours, we can’t connect them. If we do that, we define for the simulation engine that we are reducing customer business value when requesting IT for more hours. In reality, customers are requesting for more new business value. To prevent this behavior, we just linked the two lines (according to the flow). This linkage will enable us, when we will define the simulation, to use the values of the pipeline going out of customers.
Add and link remaining CLD variables:
The variable KTLO activities represent the percentage of work that IT needs to perform to keep the platform up and running. This variable will be a variable in the new diagram. Because it has a negative impact on IT, we will link it with the “Hours on KTLO” pipe.
The same applied to “hours on projects” flows from IT and into projects. We didn’t connect those two lines to projects and platform availability for two reasons. First, each line has a conversion from one unit to another. The second reason is that two pipelines connected to two different stocks will create behavior during simulation that won’t reflect our needs.
The business value flows can now connect directly from project and platform availability to customers. The same units flow between projects, platform availability, and customers. Setting those pipes will define the behavior that we want when we will run the simulation.
We need to use links to connect IT to projects and IT to Platform availability. Those two links depict the two balancing loops between projects, KTLO tasks and IT.
As you can see in “Diagram 5”, we have a stock and flow diagram that depicts our causal diagram. The next step is to add behavior over time and function diagrams to give more colors to the model.
Diagram 5 – final stocks and flow diagram