Episode 558: Ingeniousness in Numbering of "Reception Number" to Reduce Complainer

Sunday, October 22, 2017

Operation: Reception of "Information request"

  1. Number of received information requests
  2. Number of submitted estimates
  3. Number of concluded contracts

Although it is a classic marketing method, "1) Number of received information requests" is an index that directly linked to "3) Number of concluded contracts". The correlation is extremely strong. Therefore, many companies set it up as KPI. Car dealer, insurance company, moving company, design office, and so on. It does not matter whether the scale is big or small or which type of business it is.

In the meantime, in order to realize a smooth Workflow, there are some companies that accept requests from customers at the "Form Start Event" of cloud based Workflow. By using a Workflow, downstream Steps such as "Address printing" and "Shipping" are also executed without mistake.

And the automatic transmission of the "Acceptance email" (placing an email transmission event) would be also "royal road". The customer can recognize that "the request was accepted". In addition, "Acceptance number" should be described in the text body. Doing so, the customer can make inquiry for questions through the phone or chat by tracking the "Acceptance number".


Challenge: Identity confirmation with Acceptance number only

"Process serial number" (# {processInstanceSequenceNumber}) is convenient for "Acceptance number". After all, KPI management is easy with it.

But at the same time, it is also a "number easy to infer". For example, when "cancellation of application" came by telephone or chat, it may be a situation inevitable to confirm "identity verification". In other words, if you are asked to cancel acceptance number 123 in a sincere voice, you may accept it as it is. But when you face a person who is likely to be malicious, you will confirm the identity by asking "email address". This could be called customer discrimination.

However, if it is a long number like a cipher text to be a "hard to infer number", it will be inconvenient. Not only "KPI management" becomes troublesome, but also it is hard to verbally tell on the phone, and it is rather difficult to guarantee that it is unique. Hmm...

[Information Request Correspondence]

Solution: Ingeniousness in Acceptance ID

"Acceptance number" "Reservation number" "Quote number" etc.... "Identification number" is effective for communication with customers. Above all, it makes possible to "correspond as a team". However, if it is an "easy to guess number", it may be necessary to verify the identity using other information to prevent "spoofing". It could lead to reducing the work efficiency.

If you need to reduce "spoofing risk" even a little like this, consider a format like "serial number + 3 digit pass code" (e.g. 123-777).

That is, by setting "Acceptance number" to be similar to "combination of ID and Password", it is guaranteed that the request is from the person who received "Acceptance email". Numbers in that length won't be a problem to convey verbally on the phone. (Incidentally, it will be impossible to uniquely identify it if it is "Pass code only".)

<Setting example of Data Setting Step>
#{#sformat('%03d', processInstanceSequenceNumber)}-#{#sformat("%03.0f", data['17'])} 

<Property of Data Setting>

<Acceptance email setting screen>

Discussion: Is programming knowledge necessary for automatic Step?

"Three-digit pass code" in this example is "random number" generated on the server side. When an Issue reaches the automatic Step of "Automatic acquisition of random number", a value is automatically set into "3 digit pass code".

The designer of the Business Process can add automatic processing on the server side simply, by placing the "Random Number Generator" icon on the business flow and setting its configuration.

It should be noted that this automatic Step icon is not in the standard icon of the Process Modeler. It is necessary to import "Random Number Generator" in Process Modeler Add-ons beforehand.

By the way, when you hear "a Step of generating random numbers", it sounds like that programming knowledge and advanced computer knowledge are necessary, but you can incorporate an automatic Step packaged as a Process Modeler Add-on into a Business Process definition only with simple settings. (There is no need to understand the contents of the script. / Of course, it would be a good to have someone who can read JavaScript explain to you, if you are concerned.) In this example, only by setting, "Maximum number: 1000", a "random numbers from 0 to 999" will be automatically set each time.

[Information Request Correspondence:"1. Booklet shipping" screen]

[Source of Addon XML: Random Number Generator]
<?xml version="1.0" encoding="UTF-8"?><service-task-definition>

<label>Random Number Generator</label>
<label locale="ja">乱数ジェネレータ</label>

<summary>A random number that does not exceed the config "A" (e.g.: 0 to 99) will be stored in the Data item selected in the config "B"
</summary>
<summary locale="ja">"A"でセットした上限値を超えないランダムな整数が、"B"で選択した数値型データ項目に格納されます
</summary>

<help-page-url>https://www.questetra.com/tour/m4/m415/addon-random-number/</help-page-url>
<help-page-url locale="ja">https://www.questetra.com/ja/tour/m4/m415/addon-random-number/</help-page-url>


<configs>
  <config name="conf_MaxNum" required="true" form-type="TEXTFIELD">
    <label>A: Set Max Number (100 returns 0 - 99)</label>
    <label locale="ja">A: 乱数上限値をセットしてください (100: 0 - 99)</label>
  </config>
  <config name="conf_DataIdB" required="true" form-type="SELECT" select-data-type="DECIMAL">
    <label>B: Select NUMERIC DATA for Random Number (update)</label>
    <label locale="ja">B: 乱数が格納される数値型データを選択してください (更新)</label>
  </config>
</configs>


<script><![CDATA[
// Random Number Generator (ver. 20181018)
// (c) 2017, Questetra, Inc. (the MIT License)

//// == Config Retrieving / 工程コンフィグの参照 ==
var maxNum  = configs.get( "conf_MaxNum" ) - 0;
// convet 'java.lang.String' to 'javascript number'
var dataIdB = configs.get( "conf_DataIdB" ) + "";
// convet 'java.lang.String' to 'javascript string'

//// == Data Retrieving / ワークフローデータの参照 ==
// (none)

//// == Calculating / 演算 ==
var randNum = Math.floor( Math.random() * maxNum );
// Math.random(): 0.00 to 0.99

//// == Data Updating / ワークフローデータへの代入 ==
engine.setDataByNumber( dataIdB, java.math.BigDecimal( randNum ) );
]]></script>

<icon>
(省略)
</icon>
</service-task-definition>

[Data Items list]



[Free Download]
<Similar Models>
<<Related Articles>>

[Japanese Entry (和文記事)]