Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>In a developer org, you won't be able to have more than two active users with Salesforce licenses. In order to create a user with a Chatter Free license, you should only need to assign them the profile of <code>Chatter Free User</code> - it will automatically set their license correctly based on the profile assigned to them (the <code>UserType</code> field is not editable).</p> <p>Edit: to obtain the Chatter Free User's profile Id without hardcoding it (as it may change from org to org), you'll have to query it. I modified your code to include this query, as well as reworked it so that only a single callout to <code>PartnerConnection.create</code> is made (just a suggestion, as it will save overhead on your SOAP callouts):</p> <pre><code>QueryResult profileQuery = connection.query("select Id from Profile where Name = 'Chatter Free User' limit 1"); SObject chatterFreeProfile; if ( profileQuery.getSize() &gt; 0 ) { chatterFreeProfile = profileQuery.getRecords()[0]; } ArrayList&lt;SObject&gt; users = new ArrayList&lt;SObject&gt;(); while (rs.next()) { SObject user = new SObject(); user.setType("User"); user.setField("Alias", rs.getString("Alias")); user.setField("Email", rs.getString("Email")); user.setField("EmailEncodingKey", rs.getString("EmailEncodingKey")); user.setField("LanguageLocaleKey", "En_US"); user.setField("LastName", rs.getString("LastName")); user.setField("LocaleSidKey", rs.getString("LocaleSidKey")); user.setField("TimeZoneSidKey", "America/Los_Angeles"); user.setField("Username", rs.getString("Username")); user.setField("UserPermissionsCallCenterAutoLogin", "false"); user.setField("UserPermissionsMarketingUser", "false"); user.setField("UserPermissionsOfflineUser", "false"); if ( chatterFreeProfile != null ) user.setField("ProfileId", chatterFreeProfile.getField("Id")); else user.setField("ProfileId", connection.getUserInfo().getProfileId()); users.add(user); } if ( users.size() &gt; 0 ) { SaveResult[] results = connection.create(users.toArray(new SObject[users.size()])); for ( int i = 0; i &lt; saveResults.length; i++ ) { if (results[i].isSuccess()) out.println("Created user: " + results[i].getId()); else out.println("Error: " + results[i].getErrors()[0].getStatusCode() + ":" + results[i].getErrors()[0].getMessage()); } } QueryResult queryResults = connection.query("SELECT Id, Name from User ORDER BY CreatedDate DESC LIMIT 5"); if ( queryResults.getSize() &gt; 0 ) { for ( SObject s : queryResults.getRecords() ) { out.println("Id: " + s.getField("Id") + " - Name: " + s.getField("Name")); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload