function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Thomas FullerThomas Fuller 

Development Inquiry - Looking for Suggestions on How to Tackle A Project

Hey everyone,

I'm new to Apex and VisualForce, and I wanted to see if any developers out there could give a newbie like me some direction in how to tackle this project I'm working on.

In our Org, we have a custom object called "Projects", that is a child of the "Accounts" object. This object is used to store info on the status, cost, hours spent, etc. of each of our firm's projects. I am currently developing a way to easily store a number of project-specific contacts in a related list under each project. Each related list should have a default contact that is the default for all projects in the same account, but also should have the ability to add or subtract from the list.

In order to solve this, I've proposed creating a custom "junction" object to bridge "Projects" and "Contacts" under the same account. I am planning on using APEX and VisualForce to create a related list that can be set with default contacts when created, but also be flexible enough to allow the user to add new contacts for that specific project. Once all needed contacts are in the related list, the user is able to fire a Conga Composer email that sends an email to all those contacts within the related list.

At this point, this is the best solution that I have come up with. Like I said, I am new to apex coding and VisualForce, so any and all suggestions or ideas are greatly appreciated.

Thank you for your time,
Thomas
Best Answer chosen by Thomas Fuller
bob_buzzardbob_buzzard
That sounds about right.  You'll need to use a junction object otherwise you can't relate the same contact to more than one project, and once you go junction objects it becomes less than intuitive to add/remove contacts from the list.  The only downside I encounter with this approach is that the Visualforce page to manage the contacts is usually embedded in the record view page, which can be confusing for users, as most of the page is read only with edit buttons etc, and suddenly there's a save button half way down. 

All Answers

bob_buzzardbob_buzzard
That sounds about right.  You'll need to use a junction object otherwise you can't relate the same contact to more than one project, and once you go junction objects it becomes less than intuitive to add/remove contacts from the list.  The only downside I encounter with this approach is that the Visualforce page to manage the contacts is usually embedded in the record view page, which can be confusing for users, as most of the page is read only with edit buttons etc, and suddenly there's a save button half way down. 
This was selected as the best answer
Thomas FullerThomas Fuller
Yeah, I can definitely see why it would be strange and confusing for the user. Bob, thanks for taking the time to respond and given me assurance on my gameplan for this project. You really helped me out!