Owner filed in Salesforce1

  • 1
  • Problem
  • Updated 1 year ago
  • Solved
I have a mobile case page that I built in the unified composer (not as legacy mobile). I have deck component on the page with field editor to render my case records. The issue I'm have is since the new release of the Salesforce1 app (Salesforce) when I try to change the case owner, the pick-list for the Group (queue) or User doesn't respond. This prevents us from assigning the case from a Queue to a User. I have tired this on different phone models but Android only. I can also open the page in a desktop browser and I am able to change from a group to user. So it seems to be only an issue with the new Salesforce mobile app. 

 

I'm on Skuid Release 10.0.9
Salesforce App Version: 14.1  
Photo of Jason C

Jason C

  • 724 Points 500 badge 2x thumb

Posted 2 years ago

  • 1
Photo of Stephen Sells

Stephen Sells

  • 17,326 Points 10k badge 2x thumb
I'm sorry to hear your experiencing this.

A few questions:
  1. What version of skuid are you running?
  2. Do you see the problem in the mobile browser (not just SF1)?
  3. If you change it from group to user on the phone, press save, then refresh, does the change update? I'm wondering if this is a problem with just visuals or if there is something more going on.
Photo of Jason C

Jason C

  • 724 Points 500 badge 2x thumb
Hi Stephen,

1. 10.0.9
2. No it works fine in a mobile browser
3. From a mobile browser if I make a change to user from group the change is reflected in SF1. It's just in in SF1 that I can't make any changes to the field.
Photo of Stephen Sells

Stephen Sells

  • 17,326 Points 10k badge 2x thumb
Can you share this page's XML?
Was the page built in Skuid mobile or is this page "Mobile Responsive"?
(Edited)
Photo of Jason C

Jason C

  • 724 Points 500 badge 2x thumb
No the page is built in the unified composer.

<skuidpage showsidebar="false" showheader="true" tabtooverride="Cases" unsavedchangeswarning="" personalizationmode="server" theme="GEC Design">
<labels/>
<models>
<model id="Case" limit="30" query="true" createrowifnonefound="false" sobject="Case" orderby="CaseNumber ASC" doclone="" type="" datasource="salesforce">
<fields>
<field id="CaseNumber"/>
<field id="Status"/>
<field id="IsEscalated"/>
<field id="AccountId"/>
<field id="Account.Name"/>
<field id="ContactId"/>
<field id="Contact.Name"/>
<field id="Subject"/>
<field id="CreatedDate"/>
<field id="OwnerId"/>
<field id="Owner.Id"/>
<field id="Owner.Name"/>
<field id="SendUserNotificationEmails"/>
<field id="UseActiveAssignmentRule"/>
<field id="Origin"/>
<field id="Send_User_Notification_Emails__c"/>
<field id="Description"/>
<field id="Id"/>
<field id="Reason"/>
</fields>
<conditions>
<condition type="fieldvalue" value="" enclosevalueinquotes="true" field="Status" state="filterableoff" inactive="true" name="Status" operator="="/>
<condition type="fieldvalue" value="" enclosevalueinquotes="true" field="AccountId" state="filterableoff" inactive="true" name="AccountId"/>
<condition type="fieldvalue" value="" enclosevalueinquotes="true" field="ContactId" state="filterableoff" inactive="true" name="ContactId"/>
<condition type="fieldvalue" value="false" enclosevalueinquotes="false" field="IsClosed" state="filterableon" inactive="false" name="IsClosed"/>
<condition type="userinfo" value="" field="OwnerId" operator="=" enclosevalueinquotes="true" userinfotype="userid" state="filterableoff" inactive="true" name="Owner"/>
<condition type="multiple" value="" field="Owner.Name" operator="in" enclosevalueinquotes="true" state="filterableon" inactive="false" name="Helpdesk">
<values>
<value>Jason Coorsh</value>
<value>Sergey Yun</value>
<value>Helpdesk</value>
<value>Kenny Hollis</value>
<value>Kevin Gammon</value>
</values>
</condition>
<condition type="multiple" value="" field="IsClosed" state="filterableoff" operator="in" enclosevalueinquotes="false" inactive="true" name="Closed">
<values/>
</condition>
<condition type="fieldvalue" value="LAST_N_DAYS:7" enclosevalueinquotes="false" field="CreatedDate" state="filterableoff" inactive="true" name="LastWeek"/>
<condition type="fieldvalue" value="LAST_N_DAYS:14" enclosevalueinquotes="false" field="CreatedDate" operator="=" state="filterableoff" inactive="true" name="Last2Weeks"/>
<condition type="fieldvalue" value="Hosting" enclosevalueinquotes="true" field="Origin" state="filterableoff" inactive="true" name="hosting"/>
</conditions>
<actions>
<action>
<actions>
<action type="requeryModel" model="OpenCases" behavior="standard"/>
</actions>
<events>
<event>models.saved</event>
<event>row.updated</event>
</events>
</action>
</actions>
</model>
<model id="NewCaseComment" limit="" query="true" createrowifnonefound="false" sobject="CaseComment" type="" datasource="salesforce">
<fields>
<field id="CommentBody"/>
<field id="ParentId"/>
<field id="Id"/>
<field id="CreatedById"/>
<field id="CreatedBy.Name"/>
<field id="Parent.CaseNumber"/>
<field id="CreatedDate"/>
<field id="LastModifiedById"/>
<field id="LastModifiedBy.Name"/>
<field id="Parent.Id"/>
<field id="Parent.Reason"/>
<field id="Parent.Status"/>
</fields>
<conditions>
<condition type="fieldvalue" value="" field="ParentId" fieldtargetobjects="Case" operator="=" mergefield="Id" novaluebehavior="deactivate" enclosevalueinquotes="true" state="filterableon" inactive="false" name="ParentId"/>
</conditions>
<actions/>
</model>
<model id="OpenCases" limit="100" query="true" createrowifnonefound="false" type="aggregate" sobject="Case" orderby="count(CaseNumber) DESC" datasource="salesforce">
<fields>
<field id="CaseNumber" name="countCaseNumber" function="COUNT"/>
</fields>
<conditions>
<condition type="fieldvalue" value="false" enclosevalueinquotes="false" field="IsClosed" operator="="/>
<condition type="multiple" value="" field="Owner.Name" operator="in" enclosevalueinquotes="true">
<values>
<value>Jason Coorsh</value>
<value>Sergey Yun</value>
<value>Kevin Gammon</value>
<value>Helpdesk</value>
</values>
</condition>
</conditions>
<actions/>
<groupby method="simple">
<field id="Owner.Name" name="ownerName"/>
</groupby>
</model>
<model id="CloseCase" limit="5" query="true" createrowifnonefound="false" datasource="salesforce" type="" sobject="Case">
<fields>
<field id="Id"/>
<field id="CaseNumber"/>
<field id="Status"/>
<field id="Reason"/>
<field id="Description"/>
<field id="Owner.Id"/>
<field id="OwnerId"/>
<field id="Owner.Name"/>
</fields>
<conditions>
<condition type="fieldvalue" value="" enclosevalueinquotes="true" field="Id" state="filterableon" inactive="false" name="CaseId"/>
</conditions>
<actions/>
</model>
</models>
<components>
<pagetitle model="Case" uniqueid="sk-3IPu-i-81" cssclass="floatRight">
<maintitle>{{Model.LabelPlural}}</maintitle>
<actions>
<action type="multi" label="Refresh" icon="sk-icon-refresh" uniqueid="sk-Q48Qu-84">
<actions>
<action type="requeryModels" model="CasesSummary" behavior="standard">
<models>
<model>Case</model>
<model>OpenCases</model>
</models>
</action>
</actions>
<hotkeys/>
<renderconditions logictype="and"/>
<enableconditions/>
</action>
</actions>
<renderconditions logictype="and"/>
<subtitle>Helpdesk</subtitle>
</pagetitle>
<pagetitle model="OpenCases" uniqueid="sk-3Pkjqm-202">
<subtitle>Open Cases by User</subtitle>
<actions/>
</pagetitle>
<grid uniqueid="sk-1HBLyZ-204" columngutter="" rowgutter="">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1" verticalalign="top">
<components>
<skootable showconditions="true" showsavecancel="false" showerrorsinline="true" searchmethod="server" searchbox="false" showexportbuttons="false" pagesize="10" createrecords="false" model="OpenCases" buttonposition="" mode="readonly" uniqueid="sk-3Pl4ZE-242" instantfilters="false" emptysearchbehavior="query">
<fields>
<field id="Owner.Name" name="ownerName" uniqueid="fi-5Sqhn-226"/>
<field id="CaseNumber" name="countCaseNumber" valuehalign="" type="" allowordering="true" uniqueid="fi-5Sqhn-227">
<label>Open Cases</label>
</field>
</fields>
<rowactions/>
<massactions usefirstitemasdefault="true"/>
<views>
<view type="standard"/>
</views>
<renderconditions logictype="and"/>
<searchfields/>
</skootable>
<deck searchmethod="server" searchbox="true" columngutter=".75em" rowgutter=".75em" model="Case" filtersposition="top" filterswidth="150px" showsavecancel="false" behavior="flex" verticalalign="top" ratio="1" minwidth="350px" uniqueid="sk-3mqVVj-451" buttonposition="" pagesize="10">
<components>
<buttonset model="CloseCase" uniqueid="sk-BV9MP-419">
<buttons>
<button type="multi" label="Save" uniqueid="sk-BVO8i-423" icon="sk-icon-case-close">
<actions>
<action type="save">
<models>
<model>Case</model>
</models>
</action>
</actions>
</button>
<button type="multi" label="Cancel" uniqueid="sk-BVOCC-426" icon="sk-icon-cancel">
<actions>
<action type="cancel">
<models>
<model>Case</model>
</models>
</action>
</actions>
</button>
</buttons>
</buttonset>
<basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="Case" buttonposition="" uniqueid="sk-3mnkwR-229" mode="read" layout="">
<columns layoutmode="responsive" columngutter="0px" rowgutter="10px">
<column verticalalign="top" behavior="flex" ratio="1" minwidth="100px">
<sections>
<section title=" " collapsible="no" showheader="false">
<fields>
<field uniqueid="sk-3mn-Se-252" id="CaseNumber" valuehalign="" type=""/>
<field uniqueid="sk-3mn-Sg-253" id="Subject" valuehalign="" type=""/>
<field uniqueid="sk-3mo4Q0-259" id="Contact.Name" valuehalign="" type="">
<label>Contact</label>
</field>
<field uniqueid="sk-3mo4P_-258" id="Status" valuehalign="" type=""/>
<field uniqueid="sk-1Jvaer-378" id="OwnerId" valuehalign="" type="">
<label>Owner</label>
</field>
</fields>
</section>
</sections>
</column>
</columns>
<conditions/>
</basicfieldeditor>
</components>
<massactions/>
<interactions>
<interaction type="press" direction="either">
<action type="requeryModel" model="NewCaseComment" behavior="standard"/>
<action type="setCondition" model="NewCaseComment" condition="ParentId" value="{{Id}}"/>
<action type="createRow" model="NewCaseComment" appendorprepend="prepend" defaultmodefornewitems="edit" affectedrows="context"/>
<action type="showPopup">
<models/>
<popup title="Case Comment" width="80%">
<components>
<wrapper uniqueid="sk-5Douy-405">
<components>
<buttonset model="NewCaseComment" uniqueid="sk-5GSbx-474">
<buttons>
<button type="multi" label="Save" uniqueid="sk-5GTmF-477" icon="sk-icon-case-close">
<actions>
<action type="save">
<models>
<model>CloseCase</model>
</models>
</action>
<action type="save">
<models>
<model>NewCaseComment</model>
</models>
</action>
<action type="closeAllPopups"/>
</actions>
</button>
<button type="multi" label="Cancel" uniqueid="sk-5GTpe-480" icon="sk-icon-cancel">
<actions>
<action type="cancel">
<models>
<model>Case</model>
<model>NewCaseComment</model>
<model>CloseCase</model>
</models>
</action>
<action type="closeAllPopups"/>
<action type="requeryModels" behavior="standard">
<models>
<model>NewCaseComment</model>
</models>
</action>
</actions>
</button>
<button type="multi" label="Close Case" uniqueid="sk-6R1fj-571" icon="ui-silk-bug-edit">
<actions>
<action type="setCondition" model="CloseCase" condition="CaseId" value="{{Parent.Id}}"/>
<action type="requeryModel" model="CloseCase" behavior="standard"/>
<action type="toggleRenderComponent" behavior="toggle" componentid="sk-6RTaO-608"/>
</actions>
</button>
<button type="multi" label="Description" uniqueid="sk-BaGgJ-458" icon="ui-silk-page">
<actions>
<action type="setCondition" model="CloseCase" condition="CaseId" value="{{Parent.Id}}"/>
<action type="requeryModel" model="CloseCase" behavior="standard"/>
<action type="toggleRenderComponent" behavior="toggle" componentid="sk-Baq-s-478"/>
</actions>
</button>
</buttons>
<renderconditions logictype="and"/>
</buttonset>
<basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="CloseCase" buttonposition="" uniqueid="sk-Baq-s-478" mode="readonly" layout="above">
<columns>
<column width="100%">
<sections>
<section title="Section A" collapsible="no" showheader="false">
<fields>
<field uniqueid="sk-Baz6S-503" id="Description"/>
</fields>
</section>
</sections>
</column>
</columns>
<conditions/>
</basicfieldeditor>
<basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="CloseCase" buttonposition="" uniqueid="sk-6RTaO-608" mode="edit" layout="">
<columns>
<column width="100%">
<sections>
<section title="Section A" collapsible="no" showheader="false">
<fields>
<field uniqueid="sk-ADpr0-281" id="Status" valuehalign="" type=""/>
<field uniqueid="sk-ADpr2-282" id="Reason" valuehalign="" type=""/>
</fields>
</section>
<section title="Close Case Comment" collapsible="no" showheader="false">
<fields/>
</section>
</sections>
</column>
</columns>
<conditions/>
</basicfieldeditor>
<basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="NewCaseComment" buttonposition="" uniqueid="sk-3ngDJ--1622" mode="edit" layout="">
<columns layoutmode="fixed">
<column width="100%">
<sections>
<section title="Section A" collapsible="no" showheader="false">
<fields>
<field uniqueid="sk-3ngb6x-1654" id="Parent.CaseNumber" valuehalign="" type=""/>
<field uniqueid="sk-3ngIMd-1634" id="CommentBody" valuehalign="" type="" cssclass=""/>
</fields>
</section>
</sections>
</column>
</columns>
<conditions/>
<renderconditions logictype="and"/>
</basicfieldeditor>
</components>
<styles>
<styleitem type="background"/>
<styleitem type="border"/>
<styleitem type="size" height="custom">
<styles>
<styleitem property="min-height" value="250px"/>
</styles>
</styleitem>
</styles>
</wrapper>
</components>
</popup>
</action>
<action type="toggleRenderComponent" behavior="toggle" componentid="sk-6RTaO-608"/>
<action type="toggleRenderComponent" behavior="toggle" componentid="sk-Baq-s-478"/>
</interaction>
</interactions>
<actions/>
<styles>
<styleitem type="border" borders="all">
<styles>
<styleitem property="border" value="5px solid #197efa"/>
<styleitem property="box-sizing" value="border-box"/>
</styles>
</styleitem>
</styles>
<searchfields/>
</deck>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
</grid>
</components>
<resources>
<labels/>
<javascript>
<jsitem location="inlinesnippet" name="ShowEscalationPopup" cachelocation="false" url="">var params = arguments[0],
$ = skuid.$,
list = params.list,
model = params.model,
$xml = skuid.utils.makeXMLDoc,
selectedItems = params.item ? [params.item] : list.getSelectedItems(),
NewCaseCommentsModel = skuid.model.getModel('NewCaseComments'),
EscalationReasonModel = skuid.model.getModel('EscalationReason'),
CasesModel = skuid.model.getModel('Cases');

if (!CasesModel || !CasesModel.fieldsMap.IsEscalated.editable){
alert('You do not have permission to Escalate Cases.\n\nPlease ask your System Administrator to grant you edit rights on the IsEscalated field.');
return;
}

// Cancel any preexisting changes to our CaseComments model
// and our EscalationReason model
skuid.model.cancel([
NewCaseCommentsModel,
EscalationReasonModel
]);

var selectedCaseNumbers = [];
var casesAlreadyEscalated = [];

$.each(selectedItems,function(i,item){

var caseRow = item.row;

// If one of the Cases is ALREADY Escalated,
// then we will complain.
if (caseRow.IsEscalated || caseRow.Status=='Escalated') {
casesAlreadyEscalated.push(caseRow.CaseNumber);
return true;
}

selectedCaseNumbers.push(caseRow.CaseNumber);

// Create a new row in our NewCaseComments model
// for each selected item
NewCaseCommentsModel.createRow({ additionalConditions: [
{ field: 'ParentId', value: caseRow.Id }
]});

});

if (!selectedCaseNumbers.length){
alert('All of the selected Cases are already Escalated.');
return;
}

// And create a new row in our EscalationReason model
EscalationReasonModel.createRow();

// Build the XML of your popup.
// If you already have a reference to this xml string stored somewhere else,
// then you don't need to create it here.

var label = (selectedCaseNumbers.length===1) ? model.label : model.labelPlural;

var popupXMLString =
'&lt;popup width="50%" title="Escalate '+label+'"&gt;'
+ '&lt;components&gt;'
+ '&lt;pagetitle model="EscalationReason"&gt;'
+ '&lt;maintitle&gt;Escalate '+label+': ' + selectedCaseNumbers.join(', ') + '&lt;/maintitle&gt;'
+ '&lt;actions&gt;'
+ '&lt;action type="custom" snippet="FinishCaseEscalation" label="Complete Escalation" icon="ui-silk-accept"/&gt;'
+ '&lt;/actions&gt;'
+'&lt;/pagetitle&gt;'
+ '&lt;basicfieldeditor model="EscalationReason" mode="edit" showsavecancel="false"&gt;'
+ '&lt;columns&gt;'
+ '&lt;column width="100%"&gt;'
+ '&lt;sections&gt;'
+ '&lt;section title="Escalation Reason"&gt;'
+ '&lt;fields&gt;'
+ '&lt;field id="CommentBody" required="true"/&gt;'
+ '&lt;/fields&gt;'
+ '&lt;/section&gt;'
+ '&lt;/sections&gt;'
+ '&lt;/column&gt;'
+ '&lt;/columns&gt;'
+ '&lt;/basicfieldeditor&gt;'
+ '&lt;/components&gt;'
+ '&lt;/popup&gt;';


var popupXML = $xml(popupXMLString);

var context = {

};

// Launch a Popup asking the user to provide an Escalation reason
var popup = skuid.utils.createPopupFromPopupXML(popupXML,context);



</jsitem>
<jsitem location="inlinesnippet" name="FinishCaseEscalation" cachelocation="false" url="">var params = arguments[0],
$ = skuid.$,
EscalationReasonModel = params.model,
escalationReason = params.model.getFieldValue(params.row,'CommentBody',true),
CasesModel = skuid.model.getModel('Cases'),
NewCaseCommentsModel = skuid.model.getModel('NewCaseComments'),
EscalationReasonModel = skuid.model.getModel('EscalationReason');

// If we weren't given an escalation reason
// that is at least 5 characters long,
// don't do anything
if (!escalationReason || escalationReason.length&lt;5){
alert('Please provide an Escalation Reason that is at least 5 characters.');
return;
}

// Apply the Escalation Reason specified
// to all of our new case comment records
// which were created behind-the-scenes
// when we showed our popup

var selectedCaseNumbers = [];

$.each(NewCaseCommentsModel.data,function(i,newCommentRow){

var parentCase = CasesModel.getRowById(newCommentRow.ParentId);

// Update the Status of all of our selected Items to be "escalated"
if (parentCase) {
CasesModel.updateRow(parentCase,'Status','Escalated');
CasesModel.updateRow(parentCase,'IsEscalated',true);
NewCaseCommentsModel.updateRow(newCommentRow,'CommentBody',escalationReason);
} else {
NewCaseCommentsModel.deleteRow(newCommentRow);
}
});

var label = (selectedCaseNumbers.length===1) ? CasesModel.label : CasesModel.labelPlural;

// Block the UI while we're saving.
$.blockUI({
message: 'Escalating ' + label + '...'
});

// Save our Case Escalations first,
// then save our new Case Comments ONLY
// if the Case Escalations all succeeded

CasesModel.save({callback: function(result){
if (result.totalsuccess) {
// Now save our Case Comments
NewCaseCommentsModel.save({callback: function(result2){
$.unblockUI();
if (result2.totalsuccess) {
// Close the popup
$('.ui-dialog-content').dialog('close');
}
}});
} else {
$.unblockUI();
}
}});</jsitem>
</javascript>
<css>
<cssitem location="inline" name="BigText" cachelocation="false">.flex-text-wrap {
height: 200px;
background-color: #E6EBFA;

}</cssitem>
</css>
</resources>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
</skuidpage>

Photo of Stephen Sells

Stephen Sells

  • 17,326 Points 10k badge 2x thumb
So you have seen this work on an iPhone?
Photo of Stephen Sells

Stephen Sells

  • 17,326 Points 10k badge 2x thumb
So you have seen this work on an iPhone?
Photo of Jason C

Jason C

  • 724 Points 500 badge 2x thumb
No we only use Android.
Photo of Jason C

Jason C

  • 724 Points 500 badge 2x thumb
Hi Stephen,

Do you have an update for me? This issue is causing our page to be unusable.
Photo of Stephen Sells

Stephen Sells

  • 17,326 Points 10k badge 2x thumb
We have been able to isolate this problem and have found that we have a known issue involving field editors in decks on mobile. We're actively working towards a fix. We'll update the community here when the solution is available in a new release. Thank you for your patience.
Photo of Jason C

Jason C

  • 724 Points 500 badge 2x thumb
Thanks Stephen.
Photo of Stephen Sells

Stephen Sells

  • 17,326 Points 10k badge 2x thumb
Official Response
The fix has been implemented and is now available in the 11.0.1 Millau release and the 10.0.11 Brooklyn release, now available from the Skuid Releases page at http://www.skuid.com/skuidreleases.

As a reminder, Salesforce does not allow reverting back to prior versions of managed packages. Skuid always recommends installing new versions in a non-business critical sandbox environment to test all mission critical functionality before installing into a production environment. We also recommend that you update out of date themes when you upgrade. Thanks again for helping Skuid become an even better product!
(Edited)
Photo of Jason C

Jason C

  • 724 Points 500 badge 2x thumb
Stephen,

I just ran the Skuid update (11.0.2) on my org and the issue is still present in the Salesforce mobile app. I have completely logged out and logged back in just to make sure it wasn't a caching issue. I also updated my themes after the Skuid update. Is there any work around we could implement to get this working.
Photo of Stephen Sells

Stephen Sells

  • 17,326 Points 10k badge 2x thumb
Unfortunately this has regressed in 11.0.2 but it does still work in 11.0.1 and the brooklyn series. We've logged this in our tracking system and will notify you when the regression is solved.
Photo of Jason C

Jason C

  • 724 Points 500 badge 2x thumb
Thanks, I wish I would have known before. I didn't update right away so I figured going to current release of 11.0.2 would be fine as well.
Photo of Stephen Sells

Stephen Sells

  • 17,326 Points 10k badge 2x thumb
Official Response
Thank you for your thoughtful suggestion! Skuid listened to your concern and has implemented your idea in the new Skuid Version Millau (11.0.5) release which is now available on the Skuid Releases page.

As a reminder, Salesforce does NOT allow reverting back to prior versions of managed packages. Skuid always recommends installing new versions in a non-business critical sandbox environment to test all mission critical functionality before installing into a production environment. We also recommend that you update out of date themes when you upgrade.