Why are screen parameters "put" to the current parameters on a form-list multi=true submit?

We have a form…with an organizationPartyId field, which is also a parameter to the screen but is not required.

In the form-list, we have an or-null on the organizationPartyId in the entity-find in order to see both rules that apply to a company specifically and ones that are applicable to all companies.

We have a transition that calls an entity-auto service with this as the service call:
service-call name=“update#basalt.ledger.account.GlAccountOverrideMapping”

We can change the org to any other org and the multi-submit works fine, but we cannot go back to empty (which is available in the drop-down list). If we change the form to a regular non-multi submit, we can pick the null org just fine.

This is occurring inside ServiceCallSyncImpl.java, where it does the following (my commented lines are new and commenting out the existing put of screen parameters):

// if the map stayed empty we have no parms, so we're done
if (currentParms.size() == 0) break;
// now that we have checked the per-row parameters, add in others available
for (int paramIndex = 0; paramIndex < inParameterNamesSize; paramIndex++) {
    String ipn = inParameterNames.get(paramIndex);
    if (!ObjectUtilities.isEmpty(currentParms.get(ipn))) continue;
    if (!ObjectUtilities.isEmpty(parameters.get(ipn))) {
        // This behavior is not the same as doing a single call; it makes it impossible to pass
        // in a null value if the specific parameter is a parameter on the submitting screen.
        // currentParms.put(ipn, parameters.get(ipn));
    } else if (!ObjectUtilities.isEmpty(result.get(ipn))) {
        currentParms.put(ipn, result.get(ipn));
    }
}

It appears this currentParms.put(ipn, parameters.get(ipn)); first appeared with a number of remote RPC services.

Without commenting it out, there is no means for setting a submitted row’s field value to null of any field that is also a screen parameter, as the screen parameter will trump it before it is passed to the services.

So, I suppose I have two questions:

  1. Is it in fact needed for other use cases?
  2. Is there a means of differentiating the other use cases if so…or a means to force the null to go through and not pick up the screen parameter?