Salesforce Stack Exchange is a question and answer site for Salesforce administrators, implementation experts, developers and anybody in-between. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

My question is related to one of my earlier questions.

Exposing the contract object in the customer portal

Basically, we need to expose the Contract object in our customer portal. But SF currently does not allow this. The solution I found here and elsewhere was that we could create a custom object by copying over Contract data.

Initially I thought I could create a custom object mimicking all Contract fields, do a one time copy from Contracts and then let our Contract team use the new object going forward. This was because our contracts have a lot of attachments and attachments cannot be shared between two records. So we would have the storage overhead of two sets of attachments.

But Contracts have built in functionality like "Activate" and possibly more that I am not aware of. Therefore can anybody tell me what functionality I would lose if we switch to the custom object?

It is very unfortunate that we need to perform these workarounds just to display records from a standard object in our customer portal.

There are currently sales force cases open for exposing contracts on the portal and enabling attachments to have more than 1 parent record.


share|improve this question
up vote 2 down vote accepted

In your other question, you expressed reservations at the idea of keeping redundant data, but I really think in your case it sounds like a better bet than trying to wholesale replace Contract.

Assuming that your portal users only need read-only access to contract data, here is what I would do:

  • create a new custom object, let's call it "Contract Detail", that has the fields your portal users need as well as a lookup to Contract.
  • create on update/delete/insert/undelete triggers on Contract which mirror the relevant data to the matching Contract Detail object, including deleting / creating / updating.
  • expose that custom object via portal.

This way, you don't lose the core functionality of Contract, you don't have to change any internal users' business processes, and you get to expose the data via the portal. The redundant data storage isn't optimal but it doesn't really carry any risk if you do the triggers correctly.

share|improve this answer
Marking as answer as we ended up using this. – Richard N Apr 10 '15 at 22:40

To reproduce Activating contracts I did the following:

-Created multiple record types ("Unactivated" and "Activated") so I could limit the options available to my users in the Status field.

-Create an Approval Process that only allowed a certain group of people to initially submit. This group of people are the only ones that would be able to "Activate" the contracts.

-When the Approval is submitted I just had it auto-approve, but you could add approvl logic there if you want. For my final approval actions I updated the Record Type to "Activated" and changed the Status field value to "Activated" as well.

This allowed me to mimic the functionality of the Activation.

I also automated Contract End Date and other fields with basic Workflow Rules.

Let me know if you have any questions.

share|improve this answer
Thank you so much for sharing. This will be really helpful. We spent quite some time researching our options and think we should keep the standard Contract object to avoid changing a lot of business processes. – Richard N Mar 5 '13 at 16:39

We did something similar in my org for the exact same reason. I wasn't able to find any features that I wasn't able to reproduce with native SalesForce functionality. For example, I reproduced contract activation with Approval Processes and Record Types to ensure a contract could only be marked active through the approval process.

Let me know if you'd like a more detailed explanation.

share|improve this answer
jonnybro thank you very much for your reply. I would surely appreciate it if you could share more details on how you replicated certain features like Activating contracts etc.... – Richard N Feb 20 '13 at 21:10
See a more detailed response in my other answer. – jonnybro Feb 21 '13 at 0:16

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.