Change channel based on selected user in an onchange Workflow script ?

Hi all,

I've read as much as possible in the forum and find it strange that no one ever asked for that exactly...

During Case creation, which runs under an enabled new Case Workflow rule, I want that the Channel field is dynamically changed when the user changes the assigned user.

I supposed basically that I would solve this easily with :

1) a Create Script that sets the case_assigneduserid "Defaultvalue=CurrentUser.user_userid;"

2)an OnChange Script on the case_assigneduserid to change the case_channelid, but then I find it impossible to do that easily as I am here stuck at a client side level.

var AssignedUserID = crm.fields("case_assigneduserid").value(); //this is quite easy to retrieve the assigned user id.

But what about finding the Channel Id of this AssignedUserId ?

How can I do that within the scope of the new Case Workflow rule ?

Any help would be appreciated...

Parents Reply Children
  • You don’t need to authenticate as the sage crm client side api takes care of it by using the session id your logon generated as part of the call. 10 lines of code is all you need. 

    help.sagecrm.com/.../sdata.html

  • Wow this looks very elegant. It's a very clean way for OP to do this.

  • I tried this but it's not working...

    // Retrieves a User record from within a Ticket and collects that record in var.
    function getUser(userID)
    {
        var returnedValue, successUser = function (crmRecord) {
                    returnedValue = crmRecord;
                }
            crm.sdata({
                entity: "users",
                async: false,
                id: userID,
                success: successUser
                });
          return returnedValue;
    }

    var curUserID = crm.fields("case_assigneduserid").value();
    var ChannelID = getUser(curUserID).user_primarychannelid;
    crm.fields("case_channelid").value(ChannelID);

    Could you help me ?

  • Your code looks sound, however I think something might be going wrong when you want to return from the getUser function, it might be returning a null because of the way the sdata calls works. 

    Perhaps try something more "ancient" like this - 

    customUserObject = null;
    function getUser(userID)
    {
    crm.sdata({
    entity: "users",
    async: true,
    id: userID,
    success: function(crmRecord){customUserObject=crmRecord}
    });
    }

    so yes, there is a "global" variable for the user object, but then you can handle the getUser as a void and just call the customUserObject every time you need values from it.
    Like so - 

    getUser(33);
    var channelid = customUserObject.user_primarychannelid;

  • Sorry but it doesn't work either.

    Do I have to put all that code in the Workflow rule "New Ticket", in the action "Display field for Amendment" for the field "case_assigneduserid", in the "OnChange Script" ?

    Or somewhere else ? If so, where then ?