Posts

Travel Request in PCS - Wrapping it up!

Video – How to build a Process Cloud Service Application (Business Travel Requests) in 40 minutes – Final Part – Wrapping it Up!

Hi,

Welcome to Red Maverick’s sixth video, the third of the Business Travel Request Management Series.

In this series we’ll guide you on how to build a complete, working BPM application using  Oracle’s Process Cloud Service.

For this part, the focus is on doing the final configurations and connecting all the dots, making the application fully functional.

This scenario and video was first prepared by me for Link Consulting‘s Process Cloud event, that was held in July 2015.

Enjoy!

Cheers

José Rodrigues, a.k.a Maverick

Post image by alobos Life

TravelRequest Business Rules

Video – How to build a Process Cloud Service Application (Business Travel Requests) in 40 minutes – Part III – Business Rules Setup

Hi,

Welcome to Red Maverick’s fifth video, the third of the Business Travel Request Management Series.

In this series we’ll guide you on how to build a complete, working BPM application using  Oracle’s Process Cloud Service.

For this part, the focus is on setting Business Rules using Oracle’s PCS, to fine tune the process flow path, depending on process data.

This scenario and video was first prepared by me for Link Consulting‘s Process Cloud event, that was held in July 2015.

Enjoy!

Cheers

José Rodrigues, a.k.a Maverick

Post image by N i c o l a

Process Timers

Process Timers – Controlling the time in which your process executes

Hello everybody,

Following up a series of questions around setting timers in the Oracle Community forums, I decided to write this article to try and guide their use and how these can be used to control process execution.

Let’s start!

The Use Case

We’ll begin by setting up the scenario in which we’ll have to control our process flow.

Imagine that you want to have a part of your process that executes immediately if the current time is between 08:00am and 04:00pm (16:00 hours for us Europeans), or wait until 08:00am if it’s outside that interval.

It’s frequent to have some kind of control in parts of the processes, for instance when you want to send SMS to your customers. You certainly don’t want to do it at 03:00am.

How will we make this?

We should use a Catch Timer event, of course, and XPATH’s DateTime functions to check the current time and to set the timer to way for next morning’s 08:00.

The Catch Timer event has several ways to be configured (triggered at specific dates and times, on a specific schedule – every day at 10:28:00 (repeatable), or in a time cycle – every 2 minutes), but we’ll focus on the one where we configure the timer to wait for a specific time and date. More on the others perhaps in another article.

We’ll illustrate the use of timers with an example process. You can, of course, adapt it to your needs.

Defining the execution conditions 

So you start by defining a gateway that will split the execution between:

  • Immediate
  • Wait for 08:00am
    • This will have to be split into prior to midnight and after midnight. but for now, we’ll consider the scenario of only two options.

So, you set the expression on the conditional flow that will do the immediate execution, leaving the condition that must wait for 08:00 as the unconditional (default) branch.

The expression should be something like this:

Timer Setting

Timer Setting

xp20:hours-from-dateTime(xp20:current-dateTime()) >= 8  and xp20:hours-from-dateTime(xp20:current-dateTime()) <= 16

The function xp20:current-dateTime() gets the current Date and Time of when the decision is evaluated.

The function xp20:hours-from-dateTime(xs:dateTime) gets the ‘Hours’ integer from a dateTime object.

So you check if the current time is after 08:00am and before 04:00pm.

  • If it is, it follows the Green Light path, i.e. the immediate execution path.
  • If not, it will follow the Red Light path, and will wait on the timer for a green light (until 08:00am the next day, as per the requirements)

For the test process comprehension, check the process flow below.

Timer Test Process

Timer Test Process

So, only one more step to go: Setting the timer to the next 08:00am available.

This is achieved by setting the Timer implementation first to Type=Time Date (red arrow) and then setting the appropriate XPATH expression (orange arrow)

Timer Type Setting

Timer Type Setting

The XPATH expression is as follows:

xp20:add-dayTimeDuration-to-dateTime(xp20:current-date(),’P01DT08H’)

The add-dayTimeDuration-to-dateTime(xs:dateTime,formattingString) function adds an interval of date/time to a dateTime object.

The interval is set using the format ‘PyyYmmMddDThhHmmMssS‘.

The xp20:current-date() function returns the current date without the time associated, meaning it considers time = 00:00:00.

So, we’re stating that we want to add to the current date the amount of 01 day and 08 hours.

Warning

You would think that this solves the issue, but not quite. It solves the issue if the process reaches the decision point until midnight. After midnight, you can’t add a whole new day and then another 08 hours.

So you should split your flow further to handle these two scenarios:

  • Wait occurs prior to midnight => XPATH Expression interval = ‘P01DT08H’
  • Wait occurs after midnight => XPATH Expression interval = ‘P00DT08H”

I’m pretty sure there are other ways to do it, but I decided to do it like this:

Timer Process Final

Timer Process Final

In which I set the XPATH for Time Date type of the other Timer (Red Light / After Midnight) as

xp20:add-dayTimeDuration-to-dateTime(xp20:current-date(),’P00DT08H’)

So this should solve the case.

I added the project file for this:

CommunityTimerDefinition

Cheers

Maverick (José Rodrigues)

Post Header image by Henrique Simplicio

Manage your Travel Requests

Video – How to build a Process Cloud Service Application (Business Travel Requests) in 40 minutes – Part II – Process Form

Hi,

Welcome to Red Maverick’s fourth video, the second of the Business Travel Request Management Series.

In this series we’ll guide you on how to build a complete, working BPM application using  Oracle’s Process Cloud Service.

This second part is about designing the form that is the data foundation for your process.

In the next parts, you’ll see how to build advanced rules, conduct escalations and going up management chains.

This scenario and video was first prepared by me for Link Consulting‘s Process Cloud event, that was held in July 2015.

Enjoy!

Cheers

José Rodrigues, a.k.a Maverick

Post image by Mac Qin

Travel Request Application Demo

Video – How to build a Process Cloud Service Application (Business Travel Expense) in 40 minutes – Part I – Designing your process

Hi,

Welcome to Red Maverick’s third video.

In this one, we’ll guide you on how to build a complete, working BPM application using  Oracle’s Process Cloud Service.

The first part is about designing your process from a functional/business point of view

In the next parts, you’ll see how to setup a process start form, build advanced rules, conduct escalations and going up management chains.

This scenario and video was first prepared by me for Link Consulting‘s Process Cloud event, that was held in July 2015.

Enjoy!

Cheers

José Rodrigues, a.k.a Maverick

Post image by Paul Nelhams

Video – How to import a Visio model (or any other) into BPM 12c

Hi,

Welcome to Red Maverick’s first video.

In this video, we’ll guide you on how to import an existing Visio BPMN model into Oracle BPM12c, using Process Composer.


Enjoy!

Cheers

Maverick

Data Objects and Form Header

Process Data Definition – Part II… and Web form introduction

Hi there,

So here’s our new article, completing the data definition series. We’ll build the remaining Business and Data Objects as well as build our first web form based on those objects.

Using your data inside the Request a Parking Space process

Last time, we saw how we defined the data that will be governed by our Business Process.

Now it’s time to make use of it during the process execution. It’s this data that will be input, manipulated and condition the actual process flow for every process instance.

If you remember from the last article, you had some homework 🙂

You had to build the Parking Space Business Object. Check what you did against our proposal. It should feature the same attributes, give or take a few…

Parking Space

  • Space Nr.
  • Reservation Start Date&Time
  • Reservation End Date&Time
  • Reserved for
  • AllSpacesOccupied?
  • Meeting with
  • Employee Nr

Important Note: Remember that processes govern data, they don’t keep it. Data is kept in the database. That’s how you have to think.

Again, the purpose of this series is to help business analysts and process owners model and automate processes without writing any code, so we’ll assume that the IT department did their work and expose some services that check if there’s a parking space available for the time slot that the requester wishes to reserve and, if so, returns the information defined in the Parking Space Business Object, and if not, returns an response that indicates all parking spaces are occupied.

Remaining Data Objects

Let’s create our remaining data objects: one for the parking space and one of our special data objects that help us govern the process flow, an instance of the ProcessStatusBO.

Inside the process BPMN diagram, click on the Data Objects option

Access the Data Object definition window

Access the Data Object definition window

and create a new process data object called v_parkingSpace, of the type object -> parkingSpaceBO, and another one called v_processStatus of the type object->ProcessStatusBO.

Add a new process Data Object

Add a new process Data Object

Adding the 2 new Data Objects

Adding the 2 new Data Objects

I use the prefix “v_” to indicate that it’s a variable, something that holds data, of my process.

From this moment on, your process has all the data placeholders that it needs.

All 3 Data Objects created

All 3 Data Objects created

Now there’s one more step…

Collecting the information

We’ll need to collect the data first, to get the process rolling. There are, in fact, several ways to start processes, but the vast majority will necessarily collect information at the start, either from a user (through a form, …) or from other systems, and places it in the process data objects. In our case, we’ll build a form to collect that information from the requester.

Designing web forms is a breeze since Oracle BPM 11.1.1.7. The frevvo platform was introduced to help business users design the interaction forms themselves, reducing the need for IT to build applications for that specific purpose that typically take a lot of time to be ready, increasing the overall agility and decreasing the time-to-market of a process.

So, to build our own forms, we’ll go into the web forms option in Oracle’s BPM Process Composer, click over the “+” sign and give it a name, for instance RequestInfoFRM.

Creating your first form

Creating your first form

We’re adopting what we call the “Form first method”, so we’ll design the form first, and let Oracle BPM generate the data structures for itself. Then, we’ll just need to connect these self-generated structures to our own data objects.

There’s also the “Data First method”, that allows you to specify the specific data objects for forms and allows widget auto generation, effectively generating the web form in a single click. You only have to adjust the looks, if you don’t like the way the widgets are placed.

For our form, we’ll collect the information that we defined in our RequestBO.

 As you can see, the web form designer has a drag-and-drop interface, which allows even complex forms to be designed in a very short timeframe.

And so, we completed our data object definition and built our first web form for it. On the next post, we’ll look into more detail about web form creation, namely focusing on both form creation methods and looking into the various form widgets. Until then…

Cheers,

Maverick

Post Header image by Garry Ing

Process Optimization - A diamond in the rough

Refining your BPM process

Ah… The holiday season! Time to be with your family, eat like an elephant, getting stuck in endless traffic jams and moving in overcrowded shopping malls. No better time to write BPM articles, right? Actually, wrong! Curiously, a peak in activity actually absorbed me completely and we couldn’t do all the stuff that we wanted to. Anyway, we’re back.

Last time, we defined and modeled our first business process in BPMN. It modeled the “Request a parking space” process, with the behavior described in the textual process description. Now we’ll refine that process so that when we decide to implement it, we’ll take less time to do so.

Optimize before implementation VS implement before optimization

There’s an interesting debate as to whether or not should the first version of the BPM model be optimized before the implementation.

Some say “of course…why would you put a substandard process in production?”, while others argue “don’t worry and put the first version of the process in production ASAP, because the BPM lifecycle will guarantee an optimized version by itself in the second iteration, based on facts, not perceptions”.

Both approaches are valid and you can choose either one. Just don’t over do it if you go with the first one, or you’ll never get a version in production.

We typically choose the first approach, but we put a (half) day cap on the optimization work (one full day if the process is complex), to limit what we do. By the end of that (half) day the process goes on for implementation with whatever optimizations done in that time. This also help us focus and go for quick wins instead of nitpicking.
With our experience, we can look at a business process and quickly identify possible improvements. In time, you will too.

See any patterns?

If you look at the process version from the last article, you’ll see somethings that appear to be repeated. These are typically good candidates for optimization.
If you can factorize these into a reusable piece, you would only need to implement it once and then reuse it as many times as you want.
Check the notifications to the requester.

Some activities are repeated. A few are actually the same, others are very much alike with only small details different

Some activities are repeated. A few are actually the same, others are very much alike with only small details different

Most of them are basically the same, with only minor changes to the message itself. So, let’s start optimizing this.

No matter what the case, the notification task will send a message to a recipient of our choice. The content and recipient may differ, but the process will always send a message. This translates to a much cleaner process, because all of these notification tasks can be transformed into a single one.

Process after merging all notifications into a single one

Process after merging all notifications into a single one

much simpler, hum?

But now you may ask: “How will the notification know what message to send?”

If you notice the previous version, you already had the same issue. What determined which path the process followed was the result of the Check Parking Space Availability activity. No changes there. What changes is the logic behind the Check Parking Space Availability and the Notify Requester of result activities, so we’ll handle this in our next articles, trying to keep code at bay.

And with this simple optimization, the process became so simple, that there’s no need to perform any other optimizations… or is there?

At least for now, we’ll keep things as they are.

On the next post, we’ll start  working on process data, the first step towards process execution. Stay tuned.

Cheers,

Maverick

Post header image by Jeff-o-matic

Tools and prep for work

Know your tools and prepare for work

Hi and welcome to another article of the Akino Fishing Company BPM initiative series.

Last week we described our pilot process in plain english. We wrote what is the process, what does it do, what are the expected inputs and outputs and how the information is processed.

Today we’ll start with that description, do a little preparation work around it and we’ll get to know the tools we’ll be using to build our BPM project.

Preparation for Work

A quick recap

Parking Space

Parking Spaces. Image by Maarten

So, our pilot process is the now famous “Request a parking space” process. After starting with a very simple/direct description (the happy path):

This process starts with a request from someone, either internal or external to the company. The requester fills in a small form with his name, his company name and the period in which he will need the parking space. The system will check if there are available parking spaces in that period and returns a response to the requester: Either “Please park on parking space X” or “We’re sorry but there are no parkins spaces available for that period”

we then elaborated it, adding depth and “not so happy” paths, without going overboard with the complexity to reach this:

This process starts with a request from an external entity or an employee, by filling and submitting a simple form with the following fields:

  • Name
  • Company name
  • Period to use the parking space
    • Date
    • Start Time
    • End Time

The system will then check if there are any parking spaces available for that period.

If the requester is NOT an Akino Fishing Co. employee and

  • The system returns that the requester can take parking space X, then
    • The requester is presented with a message stating “Your parking space is reserved. Please park on space X. Thank you”
  • The system returns that there are no spaces available, then
    • The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number.
    • If the requester chooses to submit the contact information, the system should create a task to a group of people, called “concierge”, that will try internally to arrange a space.
      • If they can, they’ll mark the task as OK and give the information about the parking space number. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that they can use parking space X.
      • If they can’t, they’ll mark the task as NOT OK. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that despite the efforts they couldn’t arrange a space.
  • The system doesn’t return anything, then
    • The requester is presented with a message stating “We’re sorry but we can’t check parking space availability right now. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number.
    • If the requester chooses to submit the contact information, the system should create a task to a group of people, called “concierge”, that will try internally to arrange a space.
      • If they can, they’ll mark the task as OK and give the information about the parking space number. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that they can use parking space X.
      • If they can’t, they’ll mark the task as NOT OK. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that despite the efforts they couldn’t arrange a space.

If the requester is an Akino Fishing Co. employee and

  • The system returns that the requester can take parking space X, then
    • The requester is presented with a message stating “Your parking space is reserved. Please park on space X. Notice that you may need to give up your seat, if it’s deemed necessary to receive visitors.Thank you”
  • The system returns that there are no spaces available, then
    • The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Thank you”
  • The system doesn’t return anything, then
    • The requester is presented with a message stating “We’re sorry but we can’t check parking space availability right now. Check back later. Thank you”

This is the process we’ll model.

The Analyst Method

At Red Mavericks we like to exercise our creativity, do things out of the ordinary, but sometimes, we need to do things with a certain consistency, with a certain methodology. For instance, to pickup information from a plain English description into structured information we follow a certain method. Now, again, there are other ways to do it, but we like to do it like this.

We go through a series of steps:

  1. Identify the verbs in the process description
  2. Identify the nouns in the process description
  3. Identify decision words (if, then, else, while, when, until, or, and, not)
  4. Identify time associating words (after, before, during, at start, in the end, prior)
  5. Build a table with your findings, identifying for each finding their type(1, 2, 3, or 4) and try to answer the 3W1H (What, Who, When and How)

it may not seem like it at the moment, but 80% of what you need to know to model your process is right here. Now eliminate any repitions that mean the same. For instance, in the description you have “…The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number. If the requester chooses to submit the contact information…“. In this case keep only e.mail and mobile number, as the contact information already refers to these two fields.

I’ll let you do the work for now, and identify them for yourself. Come back in 10 minutes when you’re finished. 🙂

10 Minutes

You should end up with a list similar to this one, give or take a few:

  1. Verbs – filling form, submitting form, check available spaces, returns message, submitting contact information, create a task, generate e-mail or SMS,
  2. Nouns – Request, Requester, Form, Name, Company Name, Period Date, Period Start Time, Period End Time, External Entity, Employee, Parking Space, Message, E-mail, Mobile Number, System, Task, Concierge
  3. Decisions – if there are any parking spaces, if the requester is NOT an Akino Fishing Co. employee, if the system returns that the requester can take parking space X, if the system returns that there are no spaces available, if the requester chooses to submit the contact information, “if they can, they’ll mark the task as OK”, “if they can’t, they’ll mark the task as NOT OK”, if the system doesn’t return anything
  4. Time Associations – This process starts with a request, the system will then check, “from then, the system will generate an e-mail”

The Tools and Artifacts

My Lego

Designing a BPMN process model is a bit like playing with Legos. You have your building blocks and you have rules to connect them (in the Lego blocks the rules are Physics). You can configure and change your blocks, so that their behavior changes, which is something you can’t do with your normal Legos. Consider it a bonus.

BPMN: Business Process Modelling Notation.

It’s a notation to represent process models that ensures a relatively easy way of understanding a process and that allows an actual implementation. Oracle BPM Suite uses BPMN models to represent and actually automate and execute processes, so there’s never a gap between what is designed and what is actually running. And because it’s a standard, it ensures easy import/export from several tools because the process models are the same.

As with all games, you first need to know the pieces you use, the rules of the game and the playing field/board, so that’s what we’ll do now.

There are 6 different types of pieces/blocks

  • Tasks to be performed by users
  • Automated tasks to be done by systems
  • Groups of tasks built together that do something self contained – subprocesses
  • Decision points where, depending on conditions, the process does different things
  • Tasks that represent events
  • Measurement instruments, used to collect information on specific parts of the process

There are several subtypes that belong to a given block type, each with a specific behavior. For instance, users tasks can be:

  • A “normal” user task, where a user fills in the associated information and registers the task result
  • For your information (FYI) tasks, meant to give some information to the user and for him to confirm he received it. This task type doesn’t wait for a user intervention to allow the process flow to continue
  • The initiator task, which has built-in capabilities to allow someone to start a process on their own
  • Approval cycle tasks, a.k.a. Management tasks, which are tasks that need to be performed by several persons inside an approval cycle. For instance, I respond, my superior confirms my decision, his superior also confirms and so on.
  • Voting tasks, which consider that the task is performed when a voting result is reached. You can configure the expected voting result. This task is sent to a group of people. For instance, you can set the if 3 out of 5 people vote yes, the task is marked as done with a “Yes” result.
  • Manual tasks are tasks that are performed without any control of any system. We use manual tasks to represent work that needs to be done, but without actual interaction with any system or the BPM Suite.

We’ll provide a list of the most common building blocks of Oracle BPM Suite in a nice poster so that you can print it, and a wallpaper for your PC and mobile devices. It will be available in the next few days.

Connecting the description with your Lego pieces

Now that you know your Lego pieces, let’s connect them to what we found out about our process description:

  • The verbs with tasks (automated and human)
  • The nouns with roles, groups (refers to “who”) or data (refers to “what”)
  • Decision words with decision points (gateways)
  • Time associated words order the previous points (one after the other)

The Oracle Process Composer

We know our process, we know our building blocks, we now need to know our playing field: the Oracle BPM Process Composer.

The Oracle BPM Process Composer

The Oracle BPM Process Composer

In the latest 12c version, the process composer suffered a major overhaul, with a large number of new features brought in, a new Business Architecture area, and a man improvement on robustness, performance and ease of use. You can now really do a complete end-to-end process, from design to modelling, to implementation, to testing, to deployment without the use of any other tool (No more of that JDeveloper – good news to business analysts) and in a very easy way. That’s what we’ll be focusing on this pilot project: how to get business users, not IT staff, to do all of these things by themselves.
So, the process composer is now a tool divided into two areas: the business architecture area, suitable to model an Enterprise-wide BPM initiative, with the use of enterprise process maps, strategy models and value chain diagrams;

The Business Architecture part of Process Composer

The Business Architecture part of Process Composer

and the BPM project area, suitable to model, implement and deploy BPM processes.
We’ll be working on the BPM project area for now.

Process Composer BPM Project Area

Process Composer BPM Project Area

Let’s take a closer look at it.

The BPM project area

This area is divided into logical concepts:

Process Composer's BPM project area detail

Process Composer’s BPM project area detail

  1. Artifacts type choice – where’s you choose what kind of artifacts do you want to see, create or change
  2. Artifacts list – the list of already created artifacts
  3. Overall definitions – Enterprise and process wide definitions
  4. Project settings – Project definition and settings
  5. Project File Management – toolset to allow project file management and project actions

We’ll need most artifacts, so we’ll learn about the assets as we go along with our pilot project.

Wrap up

You now know everything you need to start designing your process in the Oracle BPM Suite Process Composer. Our next article will cover the first part of a step-by-step build of our pilot process.
Next week I’ll be travelling, so next article will probably only go out in a fortnight, by the end of December’s 1st week.

Cheers,

Maverick

Post header image by zzpza

Pilot Project

The Pilot Project

Welcome back for the 3rd episode of the Akino Fishing Co. BPM initiative saga.

About this article’s head image, we’re sorry, but the relation between Mavericks and pilot was too good to miss… 🙂

Anyway, today we’re going to describe our pilot project, the famous “Request a parking space” process. You can read about how and why we chose this process in last week’s article.

Let’s get started!

The process description

We’ll begin with a quick textual description of what the process is. So, the consultants met with some sales personnel and secretaries that typically manage these requests by hand. The idea is to let them describe how this process works. Once the consultants understand the process from their perspective they’re ready to describe it in their own words, which will then be modeled in Oracle BPM Suite.

Take note that getting to an adequate process description is an iterative, methodical and creative work. Now, “methodical” and “creative” not always get along, but they do coexist. The creative part comes into play when using problem solving to find improved ways of doing the processes’ activities, while the methodical approach tries to ensure that the whole process is captured and described.

Happy, happy, happy path

It’s quite normal that the first iteration focus on the so-called “Happy Path”. The happy path is the sorted list of process activities that are completed to achieve the process objective, when everything goes according to plan, without any issues or problems along the way.

Happy Path

The Happy path. No obstacles or deviations. Image by Vincent.

So, for instance, if you have a loan process, the happy path would be something like this:

  1. Customer applies for a loan
  2. Bank checks documentation
  3. Bank evaluates the credit rating
  4. Bank concedes or rejects the loan

When you ask someone to describe you a given process, the happy path is typically the first description that they give you.

A methodical approach

Although the creative process is very important in problem solving and optimization, the way a process description is created should follow some rules, guidelines and principles.There are literally tenths or hundreds of ways to do this. We’ll use one that we think works well, that consists on capturing the happy path first and then questioning the users and making them think of things that can go wrong along the way.

So, for our first iteration, we’ll start to describe the pilot process in plain English first, without using any specialty tools. We confess that we like to do it first on pen and paper, but you can use a word processing software, the notepad, whatever you feel comfortable with.

Drafting on pen and paper

We love using pen and paper, Helps with our creative process. Image by Nathanael Coyne

Now try to think for yourself, what would be your description of a process to request a parking space. Take 30 seconds to think about it and then continue reading this article. Remember… plain english! Don’t go thinking on User tasks, events and gateways (more on these subjects in the next posts).

Ready? Set? Go!

30 Seconds

Done? Great!

Your description should be something like this:

This process starts with a request from someone, either internal or external to the company. The requester fills in a small form with his name, his company name and the period in which he will need the parking space. The system will check if there are available parking spaces in that period and returns a response to the requester: Either “Please park on parking space X” or “We’re sorry but there are no parkins spaces available for that period”

Simple enough, no?

The second iteration

That was our first iteration, the “happy path”.Now we start to think on what can happen in that process that may influence the activities in the process or the overall process objective: grant a parking space. Maybe there are things that are missing, or that you feel that should be treated differently, like for instance:

  • How do you want to treat external entity requests? Do you want them to have priority over employee requests?
  • Do you just want to respond that there’s no parking space available or do you want to do some kind of action to see if someone can still try and find an alternative?
  • (…)

Trust no one!

There are other points that you need to think about when doing a process description. One of the most important is sometimes, we would dare to say often, neglected and has to do with responsibility. Let’s say that the system that checks if there are parking spaces available  doesn’t respond for whatever reason (network issues, system is down, power outtage, …). What should we present the requester? What kind of response should the process give?

So, a golden rule is Never expect that systems, or people for that matter, respond at all to a request you make, let alone respond in a timely fashion. As with anything else in this world, systems and people will fail and fall short of expectations. Engrave this sentence into your mind, and have this in consideration whenever you create/design business processes.

Next iterations

There are still a lot of new things you can add to your process:

  • Do we need to have a specially reserved VIP space that no one can request?
  • Do I want the possibility to manage unused management parking spaces, so that I can use them as available parking seats?
  • Do I need to account for things like earthquakes, fires and floods?

The list goes on and on, so as the complexity.

complexity illustration

“It seemed a good idea to add some more lines at the time…”. Image by Armando Alonso.

There’s another golden rule about business processes: Business Processes are never perfect and can always be improved. So, although the list of things you can remember to improve a process is large, you’ll need to judge what makes sense to implement, and what doesn’t. Try to remember the Pareto’s Principle:

80% of results are achieved with 20% of the effort. 

Carefully evaluate if the additional 3, 4, 5, 6% you’ll get with some of these improvements justify the cost of adding 30% more effort. Keep it as simple as possible.

The final description

So, we end up with a final process description that looks something like this:

This process starts with a request from an external entity or an employee, by filling and submitting a simple form with the following fields:

  • Name
  • Company name
  • Period to use the parking space
    • Date
    • Start Time
    • End Time

The system will then check if there are any parking spaces available for that period.

If the requester is NOT an Akino Fishing Co. employee and

  • The system returns that the requester can take parking space X, then
    • The requester is presented with a message stating “Your parking space is reserved. Please park on space X. Thank you”
  • The system returns that there are no spaces available, then
    • The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number.
    • If the requester chooses to submit the contact information, the system should create a task to a group of people, called “concierge”, that will try internally to arrange a space.
      • If they can, they’ll mark the task as OK and give the information about the parking space number. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that they can use parking space X.
      • If they can’t, they’ll mark the task as NOT OK. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that despite the efforts they couldn’t arrange a space.
  • The system doesn’t return anything, then
    • The requester is presented with a message stating “We’re sorry but we can’t check parking space availability right now. Would you care to leave us your contacts and we’ll try to arrange a parking space for you?”, together with 2 fields: e-mail and mobile number.
    • If the requester chooses to submit the contact information, the system should create a task to a group of people, called “concierge”, that will try internally to arrange a space.
      • If they can, they’ll mark the task as OK and give the information about the parking space number. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that they can use parking space X.
      • If they can’t, they’ll mark the task as NOT OK. From then, the system will generate an e-mail and/or an SMS to the requester, depending on the contact data they filled in, stating that despite the efforts they couldn’t arrange a space.

If the requester is an Akino Fishing Co. employee and

  • The system returns that the requester can take parking space X, then
    • The requester is presented with a message stating “Your parking space is reserved. Please park on space X. Notice that you may need to give up your seat, if it’s deemed necessary to receive visitors.Thank you”
  • The system returns that there are no spaces available, then
    • The requester is presented with a message stating “We’re sorry but currently there aren’t any parking spaces available in the requested period. Thank you”
  • The system doesn’t return anything, then
    • The requester is presented with a message stating “We’re sorry but we can’t check parking space availability right now. Check back later. Thank you”

 

With this description we wrap up this article.

On our next article, we’ll take this description and start to model the process in Oracle BPM Suite. This is where the fun part begins. Until then…