Management of Customer Master Data Using Corporation Number (Collective updating)

Monday, September 21, 2015
A supplier changed their "Name" (trade name). It is a common story.

You changed the priority of your customer. It is as well.

The following is a Business flow to maintain "Customer Master data" collectively. "Monthly Reviewing" of regular basis and "Extraordinary Reviewing" will be performed by the Sales administrative assistant team.

By updating "Customer Master data" on this special Workflow, you can switch "List of Customers" which is shown on many of Workflows on your Workflow platform (Drop-down list of Options, list in a combo-box, etc.) all together. In other words, each Process-owner who is designing and operating respective Business Processes such as "Quote Approval flow" or "Billing Process" or "Repair Request Response" Process, will be freed from maintaining data of "Customer list".

* Please see the previous article for "Separative addition" to Customer Master data.

[Customer Master Data Maintenance]




In this monthly routine business, valuation on customers (Decile analysis) has been incorporated.

After all, classification code on some of the customers will be updated monthly. As the result, it will be possible that "the latest Customer valuation" to be associated with business records which related to customer.

It will allow you deeper consideration on various analytical duties; i.e.
  • The material creation for the "Board of Directors meeting preparation work"
  • Submission situation analysis in "estimate submission operations"
  • Plan making in the "campaign planning operation", and so on...

By the way, Decile analysis, in the first place, is a management methods to consider the marketing strategy on dividing all customers to a group of 10, depending on the purchase amount. Whereas, it is also useful for even duties other than marketing, to analyze by separating into 10 groups. For example, in discussions such as "Policy for responding to request on product", it will allow more profound discussions, by an analysis narrowed down to the requests from users who have moved to lower decile.

(Traditionally, in most of the cases of Decile analysis, the largest purchased group is named as "Decile 1". And then "Decile 2" to the second largest, and so on until "10". However, here in this example, "0" to "9" is assigned in order from smaller purchased group to the largest, for convenience of code number.)


Maybe it doesn't matter to you, but we don't use "Decimeter" and "Centiliter" at all, to express "quantity of liquid" or "length of a thing". It does not appear even in elementary school textbooks. (Please use "Milliliter" and "centimeter" when you talk to Japanese.)
  • One tenth: deciliter/dL, (decimeter/dm)
  • One hundredth: (centiliter/cL), centimeter/cm
  • One thousandth: milliliter/mL, millimeter/mm

▼ Sample code of [Retrieving Master data file] (Server side)
- Input: XML file that has been registered in "Common file"
- Output: Output to Table type data, output a TSV text to String type data
//// == Retrieving == 
// M319 Options-XML: Options XML that is referred from multiple Business Process 
optionsList = itemDao.findAll("Business-Connections.xml", true); // return "List<ItemView>" 

//// Calculating == 
optionsNum = optionsList.size(); 
var tmpTable = new com.questetra.bpms.core.model.formdata.ListArray(); // Table type data 
for (i=0; i < optionsNum; i++){ 
  var tmpRow = new com.questetra.bpms.core.model.formdata.ListArray.ListRow(); // Additional lines 
  tmpRow.addCol( optionsList.get(i).getValue().substr(0, 6) ); 
  tmpRow.addCol( optionsList.get(i).getValue().substr(7, 13) ); // index=7 to 13 characters 
  tmpRow.addCol( optionsList.get(i).getValue().substr(21) ); // index=21 and after 
  tmpRow.addCol( optionsList.get(i).getDisplay() ); 
  tmpTable.addRow( tmpRow ); // Add lines 
} 
var tsvtext = ""; // Multiple line string data 
for (i=0; i < optionsNum; i++){ 
  tsvtext += optionsList.get(i).getValue().substr(0, 6) + "\t"; 
  tsvtext += optionsList.get(i).getValue().substr(7, 13) + "\t"; 
  tsvtext += optionsList.get(i).getValue().substr(21) + "\t"; 
  tsvtext += optionsList.get(i).getDisplay() + "\n"; 
} 

//// == Updating == 
retVal.put("1", tmpTable ); 
retVal.put("2", tsvtext ); 

▼ Sample code of [List generation]
- Input: Contents of Table type data
- Output: Output text to 2 String type data
//// == Retrieving == 
// mytable: com.questetra.bpms.core.model.formdata.ListArray 
var mytable = data.get("1"); // Retrieving Table type data 

//// == Calculating == 
//{6 characters of Customer classification}#{Corporation Number}#{URL of the corporate} and {Trade name} 
var i=0; 
var n = mytable.size(); 
var value_id_list = ""; 
var display_label_list = ""; 
for (i=0; i < n; i++){ 
  value_id_list += mytable.get(i, 0) + "#"; 
  value_id_list += mytable.get(i, 1) + "#"; 
  value_id_list += mytable.get(i, 2) + "\n"; 
  display_label_list += mytable.get(i, 3) + "\n"; 
} 

//// == Updating == 
retVal.put("5", value_id_list); 
retVal.put("6", display_label_list); 

▼ Sample code of [TSV Uptake] (Server side)
- Input: Data of String type multiple lines (4 items in each line, separated with 'Tab')
- Output: Update Table type data
- * Possible to uptake by Copy & paste from MS-Excel or Google SpreadSheet
//// == Retrieving == 
var tsvtext = data.get("2"); // Retrieving TSV data 

//// == Calculating == 
var tsvtextObj = new String(tsvtext); 
var lineArray = tsvtextObj.split("\n"); // Divide at each line break, store in Array string[] 
var tmpTable = new com.questetra.bpms.core.model.formdata.ListArray(); // Table type data 
for (var i=0; i < lineArray.length; i++){ 
  var tmpRow = new com.questetra.bpms.core.model.formdata.ListArray.ListRow(); // Additional lines (raw) 
  var lineObj = new String(lineArray[i]); 
  var cellstrArray = lineObj.split("\t"); // Divide at each tab and store 
  tmpRow.addCol( cellstrArray[0] ); 
  tmpRow.addCol( cellstrArray[1] ); 
  tmpRow.addCol( cellstrArray[2] ); 
  tmpRow.addCol( cellstrArray[3] ); 
  tmpTable.addRow( tmpRow ); // Add Lines 
} 

//// == Updating == 
retVal.put("1", tmpTable ); 


[Customer Master Data Maintenance:"1. Collective Modification" screen]

[Data Items list]

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


[Japanese Entry (ε’Œζ–‡θ¨˜δΊ‹)]