I’m having a hard time visualising how this would work. I need the ability to type up an SOW in Salesforce. Once I finish typing the SOW and want to send it to the customer, I should have a button that sends to a specific recipient. The client then should have the ability to sign the SOW and save it. One it is saved by the client, it should automatically attach to the Development request form(Custom object) in Salesforce for Billing.

Here is the process.

  1. Account Management receives or creates a development request form(VF page- sales the value in Salesforce custom object) (RF-XXXXXX).
  2. Account Management types up an SOW and clicks send to the client.
  3. The client reviews and signs the SOW. (We need the ability for the client to leave notes on the SOW. We need the ability to retract or update the SOW in case of errors)
  4. SOW automatically finds its way to the initial request form and attaches itself there.
  5. Accounting bills for the Development.

Please advise

  • 2
    You should look into Docusign, HelloSign, DrawLoop, or any of the other eSignature applications. Otherwise this is something you will have to build out and customize yourself...
    – Eric
    Dec 22, 2016 at 14:52
  • As Eric said any document signing application will work. These are out of the box functionalities in them.
    – manjit5190
    Dec 23, 2016 at 4:04

1 Answer 1


I am not sure if this will get you everything that you are looking for, but this link may have some help for you.



Based on the comment below, I have modified the link to what I think would be helpful to the OP. I was trying to give some more credit to the other person who I linked to. Here is what is within the new above link that may be of some use.

1.Create an Apex class (ProcessApplicant) that implements the InboundEmailHandler interface. The class defines the handleInboundEmail method to work with the created:•InboundEmail, which contains the incoming email's content, and attachments

•InboundEnvelope, which contains the envelope to and from addresses

For example:

global class processApplicant implements 
      Messaging.InboundEmailHandler {

 global Messaging.InboundEmailResult handleInboundEmail(
  Messaging.InboundEmail email, 
  Messaging.InboundEnvelope envelope) {
Messaging.InboundEmailResult result = 
      new Messaging.InboundEmailresult();

return result;

2.Parse through the incoming email message and look for the required information. For example:

// Captures the sender's email address
String emailAddress = envelope.fromAddress;

  // Retrieves the sender's first and last names
String fName = email.fromname.substring(
      0,email.fromname.indexOf(' '));
String lName = email.fromname.substring(
      email.fromname.indexOf(' '));

  // Retrieves content from the email. 
  // Splits each line by the terminating newline character
  // and looks for the position of the phone number and city
String[] emailBody = email.plainTextBody.split('\n', 0);
String phoneNumber = emailBody[0].substring(6);
String city = emailBody[1].substring(5);

3.Create and activate an email service to process the contents of the ProcessApplicantApex class. Salesforce.com generates an email address unique to this email service. Emails sent to this inbound email address run the ProcessApplicant class:

  1. Click Setup | Develop | Email Services.
  2. Click New Email Service.
  3. Enter jobApplication for the Email Service Name.
  4. Enter ProcessApplicant for the Apex Class.
  5. Click Save and New Email Address.
  6. Since the Email Address and Context User fields have been automatically populated, click Save.
  • Please post the relevant portion of the link in your answer. and remove the link. Links become stale and the answer will be useless
    – Eric
    Dec 22, 2016 at 14:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .