我想通过使用 SOAP API 以编程方式一次性创建 5-6 个 SalesForce 用户。我正在使用合作伙伴 API,并且我有一个开发人员版沙箱。我正在从数据库表中检索用户信息,然后使用 API 我想一次创建这 5-6 个用户。我可以创建一个用户,但是在创建另一个用户之后它会抛出错误LICENSE_LIMIT_EXCEEDED:License Limit Exceeded
。
这是我的代码的快照,它从数据库中检索用户信息,然后以编程方式创建用户:
SObject user = new SObject();
user.setType("User");
while (rs.next()) {
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");
user.setField("ProfileId", connection.getUserInfo().getProfileId());
SaveResult[] results = connection.create(new SObject[] { user });
System.out.println("Created user: " + results[0].getId());
if (results[0].isSuccess())
out.println("Created user: " + results[0].getId());
else
out.println("Error: " + results[0].getErrors()[0].getStatusCode() +
":" + results[0].getErrors()[0].getMessage());
}
QueryResult queryResults = connection
.query("SELECT Id, Name from User "
+ "ORDER BY CreatedDate DESC LIMIT 5");
if (queryResults.getSize() > 0) {
for (SObject s : queryResults.getRecords()) {
out.println("Id: " + s.getField("Id") + " - Name: "
+ s.getField("Name"));
}
}
在这里我可以创建一个用户,但是在创建一个用户之后它会抛出错误LICENSE_LIMIT_EXCEEDED:License Limit Exceeded
。
这些是可用的许可证数量:
我可以看到 SalesForce 的剩余许可证为 0。但是,我只想创建一些不一定是 SalesForce 用户的用户。它可以是应该能够登录到我的组织的任何类型的用户。当我尝试创建一些不同类型的用户时,例如拥有 5000 个许可证的“Chatter Free”,user.setField("UserType", "CsnOnly")
它会给出错误INVALID_FIELD_FOR_INSERT_UPDATE:Unable to create/update fields: UserType
这些是我的销售团队中的用户:
如何解决这个问题呢?我只想从数据库中创建一些用户,然后可以登录到 SalesForce。他们不必是管理员。他们可以拥有最低权限,但他们应该能够登录到 SalesForce。