Enable Self-Service user in Salesforce.com using C#
I won’t walk through connecting to the Salesforce.com api because that is well documented. One thing I didn’t find documented was how to enable self-service for a Salesforce contact. Well here it is.
First 3 methods used by the main EnableSelfService() method:
1: /// <summary>
2: /// Retrieves a Contact object for the specified contactId
3: /// </summary>
4: /// <param name="contactId">contactId</param>
5: /// <returns>Contact object (containing contact name, phone and email address</returns>
6: public Contact GetContact(string contactId)
7: {
8: //Verify that we are already authenticated, if not
9: //call the login function to do so
10: if (!loggedIn)
11: {
12: if (!Login())
13: return null;
14: }
15: // Invoke retrieve call and save results in an array of SObjects
16: sObject[] records = binding.retrieve("FirstName, LastName, Email, Phone, MySequenom_Enabled_On__c, AccountId, Account.Name, Account.BillingState", "Contact", new String[] { contactId });
17: Contact contact = null;
18: // Iterate through the results
19: if (records!=null && records.Length > 0)
20: {
21: contact = (Contact)records[0];
22: }
23: return contact;
24: }
1: /// <summary>
2: /// Find existing self-service user by email address
3: /// </summary>
4: /// <param name="email">Email address</param>
5: /// <returns>Self-Service userid</returns>
6: private string GetExistingSelfServiceUserId(string email)
7: {
8: //Verify that we are already authenticated, if not
9: //call the login function to do so
10: if (!loggedIn)
11: {
12: if (!Login())
13: return null;
14: }
15: QueryResult qr = binding.query(string.Format("Select Id from SelfServiceUser where Email = ‘{0}’", email));
16: string ssuId = null;
17: if (qr.size != 0)
18: {
19: ssuId = qr.records[0].Id;
20: }
21: return ssuId;
22: }
Reset a self-service user’s password:
1: /// <summary>
2: /// Sets the password for the given userid/selfserviceuserid
3: /// </summary>
4: /// <param name="id">userId or selfserviceuserId</param>
5: /// <returns>auto generated password.</returns>
6: public string ResetPassword(string id)
7: {
8: //Verify that we are already authenticated, if not
9: //call the login function to do so
10: if (!loggedIn)
11: {
12: if (!Login())
13: return null;
14: }
15: string newPassword = StringHelper.GetPassword(6, true, false, false);
16: // Invoke setPassword call and save results in SetPasswordResult
17: SetPasswordResult spr = binding.setPassword(id, newPassword);
18: // returns the generated password
19: return newPassword;
20: }
And finally enable self-service:
1: /// <summary>
2: /// Enables self-service for the specified contactId
3: /// </summary>
4: /// <param name="contact">Contact object</param>
5: /// <returns>password for the newly created Self-Service user.</returns>
6: public string EnableSelfService(Contact contact)
7: {
8: string email, firstName, lastName, contactId;
9: //Verify that we are already authenticated, if not
10: //call the login function to do so
11: if (!loggedIn)
12: {
13: if (!Login())
14: return null;
15: }
16: email = contact.Email;
17: firstName = contact.FirstName;
18: lastName = contact.LastName;
19:
20: // I needed to make some changes to the contact first. So update the contact…
21: contactId = contact.Id;
22: contact = new Contact();
23: contact.Id = contactId;
24: contact.Enable_MySequenom__c = true;
25: contact.Enable_MySequenom__cSpecified = true;
26: contact.MySequenom_Enabled_On__c = DateTime.Now;
27: contact.MySequenom_Enabled_On__cSpecified = true;
28:
29: // then save the contact.
30: try
31: {
32: SaveResult[] srContact = binding.update(new sObject[] { contact });
33: }
34: catch (Exception e)
35: {
36: throw new ApplicationException("Unable to update contact record for contactid: " + contactId + Environment.NewLine + e.ToString());
37: }
38:
39: // open the contact back up.
40: contact = GetContact(contactId);
41:
42: // check to see if a self-service user already exists for this contact.
43: string ssuId = GetExistingSelfServiceUserId(contact.Email);
44:
45: // Self-Service user already exists, just reset password.
46: if (ssuId != null){
47: return ResetPassword(ssuId);
48: }
49:
50: // Create the new self-service user.
51: SelfServiceUser ssu = new SelfServiceUser();
52: ssu.ContactId = contactId;
53: ssu.Email = email;
54: ssu.FirstName = firstName;
55: ssu.LastName = lastName;
56: ssu.Username = contact.Email;
57: ssu.IsActive = true;
58: ssu.IsActiveSpecified = true;
59: ssu.LanguageLocaleKey = "en_US";
60: ssu.LocaleSidKey = "en_US";
61: ssu.TimeZoneSidKey = "America/Los_Angeles";
62:
63: // Invoke the create call, passing in the SelfServiceUser properties
64: // and saving the results in a SaveResult object
65: SaveResult[] srSsu;
66: try
67: {
68: srSsu = binding.create(new sObject[] { ssu });
69: }
70: catch (Exception e)
71: {
72: throw new ApplicationException("Unable to create self-service user for contactid: " + contactId + Environment.NewLine + e.ToString());
73: }
74:
75: // Access the new ID and generate a new password
76: ssuId = srSsu[0].id;
77: string newPassword = null;
78: if (ssuId != null && ssuId != string.Empty)
79: {
80: newPassword = ResetPassword(ssuId);
81: }
82: return newPassword;
83: }
0 comments
Kick things off by filling out the form below.
Leave a Comment