Get a first look at what's coming. The Developer Passport Australia Release Preview kicks off March 12. Dive in! 

Unable to set Weight for Manual Indicators on KPI Group M2M record(sn_team_perf_kpi_group_m2m_pa_in)

HarishKumar6668
Tera Contributor

Hi Community,

I am working on a Vendor KPI Group and ran into an issue with the Weight field becoming read-only specifically for manual indicators.

What I Did

  1. Created a new manual indicator to collect data from users.
  2. Added it to my Vendor KPI Group.
  3. Tried to set the Weight field on the KPI record.
  4. The Weight field was read-only.

Record.png

 

There is a scripted ACL on the Weight field for write access which calls canKPIContributeForScoreCalculation().
Screenshot 2026-03-12 at 5.07.08 PM.png
I traced this method and found the following:

Step 1 — ACL calls this method:

canKPIContributeForScoreCalculation: function() {
    var ep = this.getPerformanceExtensionPoint(current);
    if (!gs.nil(ep))
        return ep.canKPIContributeForScoreCalculation(current);
    return false;
},

It is a recurring method — it calls itself indirectly by delegating to the extension point, which in turn calls canKPIContributeForScoreCalculation(current) again on the extension handler. It also calls getPerformanceExtensionPoint() internally to resolve the correct extension point handler based on the KPI Group type.
Step 2 — Which internally calls getPerformanceExtensionPoint():

getPerformanceExtensionPoint: function(current) {
    var eps = new GlideScriptedExtensionPoint()
                  .getExtensions('sn_team_perf.PerformanceExtensionPoint');
    for (var i = 0; i < eps.length; i++) {
        if (eps[i].shouldExecute(current)) {
            return eps[i];
        }
    }
    return;
},

This method gets returns the extension instance of sn_team_perf.PerformanceExtensionPoint.

Step 3 — shouldExecute() inside VendorPerformanceExtensionHandler script include:

shouldExecute: function(current) {
    var type = typeof current == "string" ? current : 
               (current && current.kpi_group ? current.kpi_group.type : '');
    if (!gs.nil(type))
        return String(type) === 'vendor';
    return false;
},

I am not sure on what basis canKPIContributeForScoreCalculation() inside VendorPerformanceExtensionHandler decides to return true or false — whether it is based on the indicator type, a specific field value, or something else entirely.


Has anyone faced this issue where the Weight field is read-only for manual indicators but editable for OOB indicators in a Vendor KPI Group? Do you know why this happens and is there a way to fix it?

Any help is appreciated.

Regards,
Harish

0 REPLIES 0