How and where do I customize the format of risk event number id to autopopulate based on the date

ChuanYanF
Tera Guru

Dear experts,

 

I would like to know if I want to customize the scripting of the auto population of risk event number ID where can I go to locate the script? I would want to modify the script so the initials will be numbers of the date it populates followed by the number of cases on that day. Thank you

4 REPLIES 4

Ankur Bawiskar
Tera Patron
Tera Patron

@ChuanYanF 

please share some screenshots

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

The number here, I would like to be in the format of DDMM-YY-XX like for example today will be 1702-2025-01 case number 1, populated like this. Instead of a prefix and the random number the system generates

ChuanYanF_0-1739780903904.png

 

Currenly this is the getnumber script in the script include system. I tried to modify to acustom to my preference but it does not work. Any can help?

 

gs.include("PrototypeServer");

 

var NumberManager = Class.create();

 

NumberManager.prototype = {

  initialize : function(objType) {

    this.objType = objType;

  },

 

  getNextObjNumber : function() {

    var answer = this.getNextObjNumberPadded();

    if (answer == null)

       answer = this.createNumberCategory();

 

    return answer;

  },

 

  getNextObjNumberPadded : function() {

    var answer = null;

    var hier = GlideDBObjectManager.getTables(this.objType);

    for (var i = 0; i < hier.size(); i++) {

       answer = this.getNextNumber(hier.get(i));

       if (answer != null)

          break;

    }

 

    return answer;

  },

 

  // get the next number for a particular category

  getNextNumber : function(category) {  

    var answer = GlideNumberManager.getNumber(category);

    return answer;

  },

 

  createNumberCategory : function() {

    var n = new GlideRecord("sys_number");

    n.initialize();

    n.category = this.objType;

    n.number = 10001;

    n.prefix = this.getPrefix(this.objType);

    n.insert();

 

    return n.prefix + 10000;

  },

 

  getPrefix : function(table) {  

    var answer = table;

    var gr = new GlideRecord(table);

    gr.initialize();

    if (gr.isValid())

       answer = gr.getClassDisplayValue();

 

    return answer;

  },

 

  padObjNumber : function(number, digits) {

    var num = number + "";

    while (num.length < digits)

       num = "0" + num;

 

    return num;

  },

 

  padAllTableNumbers : function() {

    var number = new GlideRecord("sys_number");

    if (!number.isValid())

       return;

    number.addQuery("maximum_digits",">",2);

    number.query();

    while (number.next())

       this.padTableNumbers(number.category, number.maximum_digits);

  },

 

  padTableNumbers : function(table, digits) {

    var prefix = "";

    var currentNumber;

    var sys_number = new GlideRecord("sys_number");

    sys_number.addQuery("category",table);

    sys_number.query();

    if (sys_number.next()) {

       prefix = sys_number.prefix;

       if (digits == null)

          digits = sys_number.maximum_digits;

       if (sys_number.maximum_digits != digits) {

          sys_number.maximum_digits = digits;

          sys_number.update();

       }

    }

    if (prefix == "")

       return;

 

    var records = new GlideRecord(table);

    if (!records.isValid())

       return;

 

    records.setWorkflow(false);

    records.autoSysFields(false);

    records.query();

    var c = records.getRowCount() + "";

    var i = 0;

    while (records.next()) {

       if (++i%100 == 0)

          gs.print("Padded " + i + " of " + c + " " + table + " numbers due to sys_number.maximum_digits change");

       currentNumber = records.number.toString();

       if (currentNumber.indexOf(prefix) != 0)

          continue;

   

       currentNumber = currentNumber.split(prefix)[1];

       if (currentNumber.length < digits) {

          while (currentNumber.length < digits)

             currentNumber = "0" + currentNumber;

       } else if (currentNumber.length > digits) {

          while (currentNumber.length > digits && currentNumber.charAt(0) == "0")

             currentNumber = currentNumber.substring(1);

       }

       records.number = prefix + currentNumber;

       records.update();

    }

    gs.print("Padded " + i + " of " + c + " " + table + " numbers due to sys_number.maximum_digits change");

  }

 

}

hi @ChuanYanF . Im also facing the same issue. May i know what solution did you use for this? thank you!