The Project Management Institute (PMI) encourages its members to advance the profession. One of the ways to do this is by helping others increase their project management skills. The target audiences for this blog are professional PM’s early in their careers as well as those who manage projects but are not PM’s by title or trade. I will be posting every week or so, offering practical tips and tools on the full range of project management topics. I hope you will find this useful and help you advance your career.
This is Part 4 in my series on Event Discovery techniques. In this post, I will describe how to use the major entities that you have identified as a starting point.
In the course of your requirements analysis you will have identified some entities for which you will be required to keep persistent data (these entities will translate into tables in your database when you are in the Design Phase). For each of these entities, you can discover the life-cycle (and therefore, the Events) by asking these questions:
- What are the Create Events for an instance in this Entity? These are the Events in which your “business” first becomes aware of a specific instance of this Entity, and stores initial data.
- What are the Read Events for an instance in this Entity? These are the Events that trigger usage of the data for this Entity without modifying the data.
- What are the Update Events for an instance in this Entity? These are the Events which cause any of the data elements stored for this Entity to be modified.
- What are the Delete Events for this Entity? These are the Events which cause “end of life” (defined as “there will be no more need to read or modify this instance”) for an instance in this Entity.
An acronym sometimes used for this analysis is “CRUD” (Create, Read, Update, Delete).
Here are some examples:
Let us say the scope of our “business” is to add the selling of refrigerated beverages in retail stores. Some Entities you might have identified are “Store” and “Product”. Let us examine each of these using CRUD.
- The Create Event might be “Store is opened”. That would lead you to ask questions such as “How do we get refrigerators to new stores?” and “How do we get the initial inventory of product to new stores?”. The answers lead to more Events.
- Some Read Events are “Inventory or Sales requests by Store, Region, or Territory”.
- Some Update Events can be “Store temporarily closed for remodel” or “Store commencing a going out of business sale”. This would lead you to ask questions such as “What do we do with existing inventory of refrigerated product?”.
- A Delete Event would be “Store is closing”. This leads you to questions such as “What do we do with the refrigerators and the inventory contained within?”
- The Create Event could be “Product is ordered”. This would lead you to ask questions such as “How do you know you need to order product?” and “How do you know how much of each type to order?”. The answers will certainly lead to new Events.
- A Read Event might be “Requests for Sales by product type”.
- Some Update Events are “Product is sold” and “Product is restocked”.
- A Delete Event could be “Specific Product type discontinued”.
Keep doing this for all of your identified Entities. You may be surprised how enlightening this is, revealing many Events that other forms of analysis would miss. Keep in mind, once you have identified new Events and added them to your Event List, you will fill in the detail for each column in the list and do the analysis of the Event Outputs described in a prior post.
In the next post I will describe how to use the data elements in the Entities to discover more Events.
This is the third part in the series on Event discovery. In the first two parts I covered discovering Events using (1) the Context Diagram and (2) the Outputs listed on the Event List. In this post, I will cover using a technique known as “State-Transition”.
In specific cases of analysis where there is a central entity that moves to a variety of “states” during its life, the State-Transition diagram can be very useful in discovering Events. Let us take the example of a retail product where the project sponsor wishes to track the product in all of its possible states. The following are possible examples of the states of this product:
- Shipped / In-Transit
- Arrived at Distribution Center
- In Inventory
- Allocated to Store
- Shipped to Store
- Arrived in Store
- Available for Sale
Each of these states has a corresponding Event that causes the product to transition from one state to the next. For example, the transition from “In Inventory” to “Allocated to Store” could be triggered by the data event “Store Inventory Level for this Product drops below reorder point”. Now that you have the Event, you can fill in the rest of the row on the Event List in discussion with the SME’s (Subject Matter Experts).
Note that it is possible and allowed for an Entity in a given State to transition to more than one possible State, depending on the Event. For example, an Employee can transition to a new job (via promotion or transfer) or transition to full-time or part-time, or transition to terminated.
Knowing all of the relevant States of an Entity can be very useful to filling out the Event List in certain analysis situations.
In the next post, I will present another Event discovery technique involving the life cycle of key Entities.
In the previous post I discussed how to use the Context Diagram for initial Event discovery. In this post I will present how to use the outputs from your Event List to discover more events.
The fifth column in your Event List (the one labeled “Which creates this…”) are the outputs of your business processes. You can use these outputs to discover more Events by asking the following questions for each output:
- Does the output go to a “Customer”? (an entity outside of the center bubble in the Context Diagram). If yes, then that is where the output ends. If no, then that means it must be input to another event or the output has no purpose. Ask your SME’s (Subject Matter Experts) what other business processes use this data. For each identified business process, you can flesh out the Event List row for that process.
- What are the “Create” Events for this output? These are the Events that result in the establishment of a new row (or rows) of data in the output in question. For example, the sale of a product creates a Sales Transaction record. Note there may be more than one Event that creates rows in this output.
- What are the “Change” Events for this output? For this you may need to examine each data element in the output. For each element, ask the SME’s what business processes change this data. Use these answers to continue to build the Event List.
- What are the “Delete” Events for this output? These are the Events that result in the logical or physical removal of a row in the output. For example, if the record retention requirement for the output is 5 years, then the time-based event “Record Retention Limit Reached” will be added to your Event List.
Now that you have added many more rows to your Event List, you will have more outputs to examine. Cycle back thru the Event List outputs and ask the same questions listed above. You will find your Event List grows very quickly!
In the next post I will continue to present additional techniques for Event Discovery.
In prior posts I introduced the Context Diagram and the Event List. In this and the upcoming series of posts, I will define some techniques you can use to discover events and complete the Event List and Context Diagram.
The very first place to start defining events is the Context Diagram. Every input arrow on the diagram represents an event to which your “business” must respond. Remember, our definition of your “business” is the boundary of the business area under study. Inside of the business bubble on the Context Diagram, you have control over the business processes and data flows. Outside the boundary, you can negotiate the interfaces with the Suppliers and Customers but have little or no control over their business processes.
Let’s examine an example of how the Context Diagram can provide events. For this example, let us say the Supplier is an Employee and the input arrow is “Travel Expense Details”.
Our first column on the Event List is “When this happens”. In this example, you would state “Travel Expense Report Submitted”.
The second and third columns are “This Source” and “Gives us This”. In this example, the Source is “Employee”, and “Gives us This” is “Travel Expense Details”.
The fourth column is “Then we do this”. These are the labels of the business processes your “business” will execute upon receipt of the “Travel Expense Details”. You might have a list of processes that looks like this:
- Verify expenses comply with business policy
- Approve/Reject Expenses
The fifth column is “Which creates this”. These are the outputs of each business process. The outputs of the first process listed above might be “Valid Expenses” and “Invalid Expenses”. The outputs of the second process listed above might be “Approved Expenses” and “Rejected Expenses”.
The sixth column is “… and we give it to …”. These are the recipients of the outputs listed in the fifth column. In this case the recipient of the Valid and Invalid Expenses could be “Employee’s Manager”. The recipient of “Rejected Expenses” would be the Employee while the recipient of “Approved Expenses” could be the Travel Expense Data Repository.
Be sure to keep implementation details out of this analysis. You don’t want solutions to be constrained by using specifics such as “email:, “reports”, “database”, etc.
In the next post, I will continue the discussion of Event Discovery and show how, once you have a few events listed, you can use these events to discover more events and get the complete scope of the project.
I recommend setting up the Event List using Excel. Remember, when I refer to your “business” it means the scope of the area under study. Here are the columns you will need along with their descriptions:
- Event ID – use a numbering system for your Events so they will be easy to track thru design and testing. I use a scheme where the main number puts the event in context and a number after the decimal point is just a sequential number within that context. For example, Event ID 3.1 where “3” represents sales events and “.1” is the first event in that context.
- “When This Happens” – this is a brief description of the event that causes your “business” to react with a planned response. For example, “Customer initiates check out”.
- “This Source” – one or two nouns describing the entity responsible for directly providing data/information to your “business”. Examples are “Associate” or “Customer”. This will match your “Suppliers” on the Context Diagram.
- “Gives us This” – a brief description of the data/information being provided. Examples are “Time off request” or “Product ID”. This will match the input arrows on your Context Diagram.
- “Then we do this” – the name of the business process(es) you will execute to respond to this event. For example “Time off request approved/denied” or “Record Sale”.
- “Which Creates This” – the permanent output(s) of the business process(es). For example “Time off approval” or “Product Inventory Update”. This will match your output arrows on the Context Diagram.
- “And is Given to…” – The recipients of the output(s). These could be systems, departments, roles, or vendors. This will match the “Customers” on your Context Diagram.
Remember to keep the event items free of technical and implementation jargon. Note my example “Customer Initiates Check Out”. This could be in a store, online or some other means. The “How” will be decided later, in design, and not here.
In the subsequent posts I will show how to do Event Discovery to elicit a complete set of requirements.
For the purpose of this analysis approach, “Business Events” are anything that occurs that causes your “business” to initiate a business process. Defining all of the Business Events in scope will lead to discovery of the business process in scope.
There are three main types of Business Events:
- External: These come from outside of your business and you have little or no control as to when or how often these events occur. Examples are “Customer purchases Product” or “Associate requests time off”.
- Temporal: These events happen at regular predetermined intervals. These intervals are required, they are not a business or design decision. Don’t let technology limitations determine the interval. Good Example: “It is time to file quarterly taxes”. Bad Example: “Every two hours the HR system sends employee information to the Financial System”.
- Data/System State: Occur when the data or system reaches a predetermined condition. These are usually Business Rules or Policy decisions. Example: “Product is re-ordered when the inventory level reaches 5”.
The input arrows on the Context Diagram are the starting point for event discovery. In the next post I will define the elements of the “Event List”.
The Context Diagram is the place to start when doing your analysis. It should be done in conjunction with the stakeholders that are most knowledgeable about the business processes for the domain under study. The initial list of Business Events will be derived from the Context Diagram.
Start with a circle in the middle of the diagram. This represents the area of the business in the scope of the project. All of the processes within this circle are in scope and are able to be modified or added to as part of the project scope. Think of it as if this business function were outsourced to a service provider and the Executive Sponsor of the project is the CEO of this service provider. What would they need to know to create a business model?
First, you would want to define “who are my Customers?”. Your Customers are recipients of your business’s outputs (in most projects, these are flows of information and data). Ask the key stakeholders “who are the current recipients of information your business function?”. Draw the Customers as rectangles on the right hand side of the diagram. It is not important at this time that you have the complete list of Customers, only that you have some. We will complete the list of Customers in an iterative process in conjunction with the Event/Response Model.
Next, define the types of information that flow to each Customer. Draw these as arrows from the center circle and connecting to the Customer rectangle. Have a short, high level description of the flow on each arrow.
After that you need to define “who are your Suppliers?”. The Suppliers are providers of the business’s information and data. Ask the key stakeholders “who are the current providers of information for your business function?”. Draw the Suppliers as rectangles on the left hand side of the diagram. It is not important at this time that you have the complete list of Suppliers, only that you have some. We will complete the list of Suppliers in an iterative process in conjunction with the Event/Response Model.
Next, define the types of information that flows from each Supplier. Draw these as arrows from the Supplier rectangles and connecting to the center circle. Have a short, high level description of the flow on each arrow.
Rules for Suppliers and Customers:
- They can be individuals, roles, departments, organizations, systems, vendors, etc. Anything that is a net originator or receiver of data or information from your “business”.
- Some entities can be both Suppliers and Customers. so they will have arrows going in both directions.
- If you are struggling with whether a Supplier or Customer is inside or outside the circle, the general rule is for entities outside the circle, the project has no control over their processes. The project can only change the nature and content of the information flows to and from these entities.
- There are no flows represented that go from entity to entity. They may exist but they are of no concern to the project.
Here is an example of a Context Diagram: