Milstonepm_128x128 Milestones PM is a new, lightweight project and task management app from Force.com Labs.  It includes a large number of features, but doesn't connect to any CRM or custom objects in your org.  This is by design, and won't change. However, it is extrememly easy for you to make these connections yourself. 

Let's start with the basic object model.  As packaged, the app includes 7 objects, 6 primary objects and 1 snapshot object for use with analytic snapshots.

MilestonesPM-Data-20110218

This deliberately simple model allows the app to be used by the widest variety of user licenses, including Force.com Free licenses.

When linking Milestones PM to your existing org, you have a couple of options.  You can either modify Milestone PM objects to include lookups to your existing objects (Account, Opportunity, YourCustomObject__c) or your can create a join object.  I prefer creating a single join object. 

MilestonesPM-UniversalJoin-20110302

 
Note: I've removed the Log and Snapshot objects to simplify the illustration.  You should not remove these from your object model.

I prefer this solution for several reasons.  First and foremost, it gives you flexibility without requiring you to understand, modify or maintain the code in Milestones PM.  You can easily add new objects as needed and, since it's a custom object, you can write triggers or workflow or reports or anything you'd like on it alone.  When updates to Milestones PM come out, you will have a very limited number of potential conflicts to resolve.  This solution also lets you specify many potential relationships or easily limit to a single relationship if that's required.

Your join object custom fields should now look something like this:

Picture 11
Notice that I've added an extra cross-object formula field, Project Status.  I've done this so that I can see the status quickly on the related list, which now looks something like this:

Picture 12

This object can also include references to Time, Expense and Log objects if you wish.

Reporting is also very straightforward.  As long as you "Enable Reports" for your join object you will automatically have report types that help you produce a report.  One potential down side of the many to many nature of this junction strategy is that you cannot create a report type that traverses all three objects.  The easy work around for this is formula fields, as I've already demonstrated above.

Questions?  Comments?  Please feel free to add below or on the developer boards.

Try Milestones PM today.

Get the latest Salesforce Developer blog posts and podcast episodes via Slack or RSS.

Add to Slack Subscribe to RSS