• Home
  • Forums
  • SBM
  • Trying to get display value using GetDisplayValue method
0
Some time ago, I tried and failed (twice) to create an appscript or javascript that would copy a Contact table subrelational field I called User Name (first last) to the Submitter field.

1) Submitter A submits Item A into Project A. The Submitter is captured by Contact Record subrelational field 'User Name' (first last).

1a) Other times, Submitter B submits Item A on behalf of User A. In this case, Submitter B selects User Name from its drop-down list.

2) User B submits Item B with a subtask transition) into Project B from Item A.

2a) Item A's Submitter is the appropriate owner of some states in Project B--not Item B's Submitter.

3) The goal is to change the submitter for Item B, therefore, to User Name, assuming it's always a match. Speaking of that, there must be a script way to obtain the correct Submitter name from the Contact record, so that I'm not scripting a mechanical copy.

Accepted Answer

Wednesday, June 12 2019, 08:26 AM - #Permalink
0
Also attaching screenshot for Submitter mapping on a subtask transition.

below is a script (modscript) that I use to update submitter / contact for a duplicate work Item request.

These are 2 different options.

I'm also attaching screenshot within composer of how to add the security for submit on behalf of another user.
We have an admin user "Script User" in which we make run script transitions from the notification context to set / run transitions with scripts in them.



// --------------------------------------------------------------------------------------------------------------------------------------
// Setting Contact, Submitter from the Current User for use with the Copy Work item
// Created by Charity Pearsall
// --------------------------------------------------------------------------------------------------------------------------------------
//Option Explicit
global strUserID = Variant();
global nContact = Variant();
global sqlCon = Variant();
global ObjCon = Variant();
strUserID = Shell.User().GetId();

sqlCon = "TS_USERID LIKE '" &&& strUserID &&& "'";
ObjCon = Ext.CreateAppRecord( Ext.TableId( "TS_CONTACTS" ));
if ( ObjCon.ReadWithWhere (sqlCon) ) {
nContact = ObjCon.GetId();
}

Shell.Item().SetFieldValue("CONTACT", nContact);
Shell.Item().SetFieldValue("SUBMITTER", strUserID);
The reply is currently minimized Show
Responses (11)
  • Accepted Answer

    Wednesday, June 12 2019, 12:23 AM - #Permalink
    0
    For your example 1, the Contact field should sync with the TS_CONTACTS record of the Submitter.
    For example 1a, is the submitter using the "submit on behalf of" feature where they select Submitter and where the actual Submitter is in "Submitting Agent"? In this instance, the Contact field should also sync up with the selected Submitter.
    I guess the field mapping in the Subtask transition won't allow you to map the"parent" SUBMITTER field from project A to the SUBMITTER field for project B?
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 06:01 AM - #Permalink
    0
    I've used the submitter & contacts fields to map from parent to subtask with subtask type transition. I haven't had to use a script to update it.

    however I have updated the contact via app script for other purposes. that seems to work fine. but you may not be able to change on the submit. (unsure as I have not tried on the submit) you may have to put the script on a hidden transition, and invoke the transition via an action to auto run the transition with the script once an item is submitted.
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 07:27 AM - #Permalink
    0
    Thank you Paul and Charity. I will try mapping. Also, I need to try granting 'submit on behalf of' that I've seen but am not familiar with (I need to find that in App Admin, right?); that sounds as though it would solve the whole thing.
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 07:33 AM - #Permalink
    0
    I already use appscript to copy the Submitter to Original Submitter (text field), and I've also tried copying to a user field, but I haven't succeeded in copying Original Submitter to Submitter in Project B--lack of expertise. Hopefully, I won't need to try again, if 'submit on behalf of' or mapping work.
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 07:53 AM - #Permalink
    0
    I see a problem with 'submit on behalf of', because these items are being submitted automatically with the subtask transition. I'll try mapping.
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 08:00 AM - #Permalink
    0
    There appears to be no field that I can map to Submitter in the subtask transition.
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 08:05 AM - #Permalink
    0
    User is my contact record, but it won't map to Submitter, and even if it did, I'm thinking the Submit transition would overwrite it. I'll try Support, also.
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 08:45 AM - #Permalink
    0
    Charity, thank you. Now trying the obvious mapping. In 99% of cases, this would suffice, but it may happen that a tech submits a ticket for a user, and then decides it belongs in project B; in that case, I'd have to use the script.
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 08:48 AM - #Permalink
    0
    I'm in SBM 11.1; Composer guide makes no mention of modscript.
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 08:56 AM - #Permalink
    0
    Thank you everyone; you all mentioned mapping and it worked. I'll keep the script in mind if a tech submits a ticket for a user, and then submits into Project B.
    The reply is currently minimized Show
  • Accepted Answer

    Wednesday, June 12 2019, 10:25 AM - #Permalink
    0
    If you can follow this:

    I think it's likely I mapped Submitter to Submitter some years ago, but then removed the mapping because we have many external users to avoid license saturation, and they can only submit to Project A.

    In the probably rare case that Help Desk ticket is submitted by an External user who cannot own items and can therefore only submit Help Desk tickets, only the Issue Resolved (Oncall Certification) button is visible, not the ‘Issue Resolved’ button, because an External original Submitter can’t own the User Certification (WR) state.

    Because of that, I can’t bring the original Submitter over.

    I think the solution is to have only the Secondary Owner ‘Dept Members’ own User Cert (WR), as they do now in SBMTEST, with no Primary Owner. Unless an Oncall member changes the Business Unit (upon which the Dept Members are dependent), the Submitter would be part of that department, and see the Approve and Reject buttons.

    The Submitter would still get notified, because Notification can be based on Submitter instead of Owner. The name of the Submitter won’t show up as the owner of the State in the State Change chevrons on top of the form, but instead of ‘(None)’, I can have the placeholder user ‘Submitter’ display as the owner. It’s still better than having the name of the Tech show up as the owner.

    The best scenario is that I demonstrate to my manager that our licenses never approach saturation, and make all the External users regular users.
    The reply is currently minimized Show
Your Reply

Recent Tweets