Create New Users for OEM Application

  • 1
  • Question
  • Updated 5 months ago
  • Answered
We have a white labeled OEM app and we are trying to keep the customer entirely in our VF pages. The issue arises when the customer needs to create a new user or update their org's information. It seems our only options are to either have the user go outside of our custom branded pages into the scary world of Salesforce settings, or create a partner admin user on every customer's org and have them request us to add new users, which doesn't seem efficient or viable. Have any other ISV partners found a solution to this? Last time I tried with Skuid I could display the user and company information as readonly but could not edit it. Ideally our users never have to venture out of our theme and style and into Salesforce. Do any other app developers know of a better way to create users and update company info?
Photo of Craig Rosenbaum

Craig Rosenbaum

  • 4,776 Points 4k badge 2x thumb

Posted 4 years ago

  • 1
Photo of Zach McElrath

Zach McElrath, Employee

  • 49,262 Points 20k badge 2x thumb
Craig,

As long as your "Admin" user has the appropriate Setup permissions, e.g. Manage Users, you should be able to build a Skuid Page for managing users / allowing an Admin to create new Users, without requiring them to go into the Setup interface.

Here is the XML for a very basic page which would allow a user with the Manage Users Permission to edit any User record and/or create new Users


<skuidpage unsavedchangeswarning="yes" showsidebar="true" showheader="true" tabtooverride="User">   
<models>
      <model id="User" limit="100" query="true" createrowifnonefound="false" sobject="User" adapter="" type="">
         <fields>
            <field id="FirstName"/>
            <field id="LastName"/>
            <field id="CreatedDate"/>
            <field id="ProfileId"/>
            <field id="Profile.Name"/>
            <field id="IsActive"/>
            <field id="UserRoleId"/>
            <field id="UserRole.Name"/>
            <field id="Email"/>
            <field id="Alias"/>
            <field id="Username"/>
            <field id="LanguageLocaleKey"/>
            <field id="LocaleSidKey"/>
            <field id="TimeZoneSidKey"/>
            <field id="EmailEncodingKey"/>
            <field id="SendUserNotificationEmails"/>
         </fields>
         <conditions/>
         <actions/>
      </model>
   </models>
   <components>
      <pagetitle model="User">
         <maintitle>
            <template>{{Model.labelPlural}}</template>
         </maintitle>
         <subtitle>
            <template>Home</template>
         </subtitle>
         <actions>
            <action type="savecancel"/>
         </actions>
      </pagetitle>
      <skootable showconditions="true" showsavecancel="false" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="false" model="User" mode="read">
         <fields>
            <field id="FirstName" allowordering="true"/>
            <field id="LastName" allowordering="true"/>
            <field id="ProfileId" valuehalign="" type="REFPICK">
               <label>Profile</label>
            </field>
            <field id="UserRoleId" valuehalign="" type="REFPICK" required="false" addnoneoption="true">
               <label>Role</label>
            </field>
            <field id="Email" valuehalign="" type=""/>
            <field id="Alias" valuehalign="" type=""/>
            <field id="Username" valuehalign="" type=""/>
            <field id="IsActive" type="" valuehalign=""/>
         </fields>
         <rowactions>
            <action type="edit"/>
            <action type="delete"/>
         </rowactions>
         <massactions usefirstitemasdefault="true">
            <action type="massupdate"/>
            <action type="massdelete"/>
         </massactions>
         <views>
            <view type="standard"/>
         </views>
         <actions defaultlabel="Global Actions" defaulticon="sk-icon-magic" usefirstitemasdefault="true">
            <action type="multi" label="Create new User" icon="sk-icon-add">
               <actions>
                  <action type="createRow" model="User" appendorprepend="prepend" defaultmodefornewitems="edit">
                     <defaults>
                        <default type="fieldvalue" field="IsActive" enclosevalueinquotes="true" value="true"/>
                        <default type="fieldvalue" field="LanguageLocaleKey" enclosevalueinquotes="true" value="en_US"/>
                        <default type="fieldvalue" field="LocaleSidKey" enclosevalueinquotes="true" value="en_US"/>
                        <default type="fieldvalue" field="TimeZoneSidKey" enclosevalueinquotes="true" value="America/New_York"/>
                        <default type="fieldvalue" field="EmailEncodingKey" enclosevalueinquotes="true" value="ISO-8859-1"/>
                        <default type="fieldvalue" field="SendUserNotificationEmails" enclosevalueinquotes="true" value="true"/>
                     </defaults>
                  </action>
               </actions>
            </action>
         </actions>
      </skootable>
   </components>
   <resources>
      <labels/>
      <css/>
      <javascript/>
   </resources>
</skuidpage>
Photo of Craig Rosenbaum

Craig Rosenbaum

  • 4,776 Points 4k badge 2x thumb
Zach,

When I try this page (as well as the one I built) I get the "license limit exceeded" red error message. However, I'm able to add a new user via the standard salesforce interface just fine. This being in my developer org, I have plenty of platform licenses. Any idea? I figured the error was caused by the same logic that prevents me from allowing users to edit their company information but allows them to view it: https://community.skuidify.com/skuid/topics/organization-object-page-not-editable
Photo of Zach McElrath

Zach McElrath, Employee

  • 49,262 Points 20k badge 2x thumb
What Profile are you assigning the new users to? Can you verify that the Profile you're assigning your new user to is a Profile associated with a License type that you have still have available Licenses for?
Photo of Craig Rosenbaum

Craig Rosenbaum

  • 4,776 Points 4k badge 2x thumb
I'm 99% sure I have licenses available and am assigning it correctly. Screenshots below:
Available licenses: (see standard platform license)


The standard profile I'm assigning


The error when I create a new user
Photo of Zach McElrath

Zach McElrath, Employee

  • 49,262 Points 20k badge 2x thumb
If this works when creating through the standard Salesforce UI, then I think the issue is not User Licenses, but Feature Licenses. The same generic error message ("license limit exceeded") is thrown in both cases, so you can't tell which is the problem, which is annoying.

Try forcibly setting some of the *User fields to be FALSE, e.g. the following:

- UserPermissionsSFContentUser = false
- UserPermissionsSupportUser = false
- UserPermissionsSiteforcePublisherUser = false
- UserPermissionsSiteforceContributorUser = false
- UserPermissionsInteractionUser = false
- UserPermissionsKnowledgeUser = false 
Photo of Craig Rosenbaum

Craig Rosenbaum

  • 4,776 Points 4k badge 2x thumb
I'll give it a try and let you know.

Has there been a change by any chance to allow users to update company information through Skuid?
Photo of Craig Rosenbaum

Craig Rosenbaum

  • 4,776 Points 4k badge 2x thumb
Changing the user booleans to false worked! Thanks so much!
Photo of Mark Ebersole

Mark Ebersole

  • 570 Points 500 badge 2x thumb
I'm wanting to do something like this on Skuid Platform.  What changes would I need to make to your example?
Photo of Craig Rosenbaum

Craig Rosenbaum

  • 4,776 Points 4k badge 2x thumb
Mark, do you mean you're trying to make an OEM product on Skuid Platform? If you haven't already, I would get in touch with Chris Jackson at Skuid to discuss details on the partnership side.

In terms of adding users through the Skuid Platform pages instead of the back end ui, I'm not sure if Skuid Platform makes their user data model accessible for use on pages. 
Photo of Mark Ebersole

Mark Ebersole

  • 570 Points 500 badge 2x thumb
Thanks for your response.  Not sure if it's what you are calling an OEM product but I'm wanting to build a SaaS application on top of Skuid where client companies can do their own user provisioning once they have been given an "admin" role of some kind.  
BTW, I have been talking to Chris.
I'm not sure how these responses flow but was hoping that maybe Zach would see this and respond with what to do.
In the meantime, I'm going to try the solution posted just to see if it works.
Photo of Bill Fox

Bill Fox

  • 7,994 Points 5k badge 2x thumb
This was very helpful.  Is there a field to check for this?   
"Generate new password and notify user immediately"