Do not let any software impress you!

Only let it convince your intellect.
Slider img 1
Do not look for a business paradise!

It is a waste of time.
Slider img 2
Only yourself can push you uphill.

There is no easy road to prizes.
Slider img 3
Productivity is the name of the game.

And you have to conquer it.
Slider img 4
As long as you understand it,

you will start to build your know-how.
Slider img 5
We can help with that.

We have the tools and the method.
Slider img 6

How the ISO process of Customer Complaints can be automated



How the ISO process of Customer Complaints can be automated

Customer Complaints Process Automation

This application is about “Customer Complaint Management,“ as we would describe it by any company‘s “ISO procedure.“ The requirement for the application is to automate the “procedure“ of “customer complaint.“ That means that the successive “steps“ of the procedure are automatically forwarded from one employee to another without any “manager“ intervention (the “procedure“ is the manager). At any time, the manager can see what tasks (steps) the employees are assigned. He can also see what tasks are “scheduled“ for the next few days. After a period, the manager has a complete report on what tasks the system has assigned each employee. And when he has started and has finished the tasks.

The requirements put on the application for the “Customer Complaint Procedure“ are the following:

1. Every employee can take calls from customers to fill in the form of customer complaints. The employee puts the complaint subject, the customer name, the problematic product, the quantity, and a description of the problem. It is also required to define the “Sales Inspector“ responsible for the customer.

2. After posting the form, a task is assigned to the “sales inspector“ to “accept“ or “reject“ the complaint.

3. The forwarding of the complaint goes to the “Quality Assurance Manager“ to categorize the complaint and give the rank number for that. At the same time defines the company‘s department that is responsible for inspecting the cause of the complaint. At this stage, we also define the employees who will respond to the customer about the complaint.

4. The procedure sends the complaint to the defined department, where the inspector inspects the cause of the complaint.

5. The employee who will respond to the customer gets the work and writes whatever is said to the customer.

6. The procedure sends the complaint to the company‘s CEO. There he is informed of the complaint and places some comments on that.


We place all of the above requirements on a coordinator agent. The action_code of the agent is the following:

start_action

     compl_id = Mykosmos Technology {...the first parameter is the complaint record id}
     call bpm_setprocedureowner(__activation_user) {.....set the procedure owner}

     {.........................give the registering associate and complaint number.......................}

     assos_id = SelectFrom(SELECT AU_USER FROM AU_USER WHERE (UNAME=‘‘“,__activation_user,“‘‘))
     num = SelectFrom(SELECT MAX(COMPLAINT_NUM) FROM P10001_CUST_COMPLAINT“)
     num = num + 1
     call UpdateField(“P10001_CUST_COMPLAINT“,compl_id,“COMPLAINT_NUM“,num,“IDATE“,crDate,“REG_ASSOSIATE“,assos_id)

     cust_id = LookUpId(“P10001_CUST_COMPLAINT“,compl_id,“CUSTOMER_ID“)
     cust_name = LookUpId(“AU_BUSINESS“,cust_id,“TITLE“)

     call bpm_setprocedurebusiness(cust_id) {....we can relate processes with businesses!}

     {...........................complete the initial form completion...............................}

     call bpm_openatonce(0)
     callwait bpm_assign_job ( “New Customer Complaint“ , __activation_user , ““ , 0 , compl_id )

     sinsp_id = LookUpId(“P10001_CUST_COMPLAINT“,compl_id,“SALES_INSP_ASSOSIATE“)
     sinsp_name = LookUpId(“AU_USER“,sinsp_id,“UNAME“)
     subj = LookUpId(“P10001_CUST_COMPLAINT“,compl_id,“COMPLAINT_SUBJECT“)

     comm = strcat(cust_name,“ / “,subj)
     comm = Copy(comm,1,80)
     call bpm_setprocedurecomment(comm) {.....set the procedures comment}

     {.............Sales Inspector approves or rejects the complaint.....................}

     callwait bpm_assign_job ( “Inspect Complaint Valitity“ , sinsp_name, ““ , 0 , compl_id )

     accept_flag = LookUpId(“P10001_CUST_COMPLAINT“,compl_id,“INSPECTOR_YES“)

     {............. the sales inspector has accepted the complaint................}

     if (accept_flag = 1) then

       {to the Quality Assurance Manager to assign the responsible associates }

       callwait bpm_assign_job ( “Assign Complaint Roles“ , ““, “QUALITY ASSURANCE MANAGER“ , 0 , compl_id )
 
       {.....inspecting position}
       insp_pos_id = LookUpId(“P10001_CUST_COMPLAINT“,compl_id,“POS_INSPECTOR“)
       insp_pos_name = LookUpId(“AU_POS“,insp_pos_id,“POS_D“)
       {.....responding assosiate}
       resp_assos_id = LookUpId(“P10001_CUST_COMPLAINT“,compl_id,“CUSTOMER_RESP_ASSOSIATE“)
       resp_assos_name = LookUpId(“AU_USER“,resp_assos_id,“UNAME“)

       { inspect complaint }

       callwait bpm_assign_job ( “Inspect Complaint“ , ““, insp_pos_name, 0 , compl_id )

       { respond to customer..................}

       callwait bpm_assign_job ( “Respond Customer for Complaint“ , resp_assos_name, ““ , 0 , compl_id )

       { to CEO..................}

       callwait bpm_assign_job ( “Customer Complaint Information“ , ““, “CEO“ , 0 , compl_id )

    endif

    {.......define the complaint as finished.......}
    call UpdateField(“P10001_CUST_COMPLAINT“,compl_id,“FINISHED_FLAG“,𔄙“)

end_action

We can see the callwait (or split_in_branch) keywords. Those keywords allow the agent to wait until the associates finish the job. Those are capabilities that do not exist in a script. Notice that the callwait “calls“ the user‘s activity as it would be a “program‘ s subroutine.“ Notice also that we have a flow of procedures that we define by conditions into the code. That is a case of ad hoc control flow (not known in advance to the programmer!)

We have to admit that the effect (coordination and historical data collection of the procedure) is far too significant for the lines of code that the application programmer writes. To be precise, the code is a little bigger (the agent contains the code that “describes“ the task (activities) assigned to employees).

We can view the agent prototype from right-mouse Click on Application‘s Background->Developer->Resources->Agent Prototypes. For every “service“ requested, the system creates a new “alive“ agent that starts to execute his action_code.

Where do we define users and roles?

Another issue is the jobs are assigned to users by name but mainly by their roles in the company. The users and roles as we have defined them in the application are at Menu->System->Users/Positions.

How do we activate the agent?

A “new customer complaint“ can be activated on the application from the “New Action“ button in the left of the application window. For the users to see the activities (jobs) assigned to them, exit the demo application, and log in as the user in question.

How can the user see the incoming jobs?

Every user has the incoming activities window defined as “Tasks“ in the menu. Notice that the system sends the same activity to all users who have the same role in the company or organization. When the user “completes“ the activity required data, he “forwards“ the completed activity to the next step. Then the activity disappears from the window.

To see activities assigned to him for today or uncompleted from yesterday, he must activate “Finished Tasks.“

How does the manager can see the current jobs?

By activating Menu->CPO Control Panel->Active Tasks, we see every activity (job) that is assigned at the time and is in the phase of completion, i.e., presented to users “incoming activities.“

How do we can evaluate our employees?

When we activate Menu->System->Associates, we can see a button captioned “Has Done.“ We get all the activities that the user (employee) has finished and by which role by activating it. The time of starting and completing each activity is also available—this way, the actual effort that the user has given to the company can be estimated.

How do we can improve the demo application?

The demo application comes with “Developer“ capabilities. That means we have the opportunity to change the database schema (Right Click->Developer->Resources->Database Manager->Edit Schema). We can also change the forms (Right Click over a form->Designing).