Product Installation, Permission Sets, Assigning User Licenses

Milestones PM+ can be installed into Professional Edition orgs and higher free from the AppExchange. Any Salesforce administrator will have access to Milestones PM+; if there are non-admin users that you want to grant access to the app, assign the Milestones PM+ Full Access permission set to the User record. If you are on the Free Edition, you will need to add the users that you want to use the app.

Salesforce Help Doc: Assign Permission Sets to a Single User

Salesforce Help Doc: Assigning Licenses for Installed Packages

Salesforce Help Doc: Non-Salesforce users accessing Milestones PM+ with OEM licenses

Importing Project Data

Milestones PM+ Data Migration Starter Pack are professional services by our certified Salesforce developers for seamless transitions.

To import data from another app (E.G Milestones PM, MS Project, Primavera), use either the Salesforce or Salesforce Data Loader app (desktop/client app).

Not all fields from Microsoft Project files will migrate to Milestones PM+ upon import. Currently the fields that get populated are:

Project Object: Name, Kickoff, Deadline

Milestone Object: Name, Kickoff, Deadline, Predecessor Milestone, Description

Task Object: Name, Start Date, Due Date, Predecessor Task, Description

Upgrading from Milestones PM (unmanaged)

You can install Milestones PM+ alongside Milestones PM as they’re separate apps. If you need to retain old project data (including custom fields and relationships), we recommend the Milestones PM+ Data Migration Starter Pack. Most data migrations take no more than 8 hours. If no data retention is necessary, you may uninstall or delete Milestones PM when ready.

Migrating Milestones PM Projects

This procedure will not export custom fields or any customizations that you have made. If you need assistance or a complete data migration, the Milestones PM+ Data Migration Starter Pack is recommended.

  1. Milestones PM+ supports a simple project structure, Milestones and Tasks. Each Milestone may have multiple Tasks. If you are trying to convert existing templates and you have more than the 2 level structure, we recommend collapsing the items into two levels. Tasks being individual items for completion, belonging to a Milestone. In Milestones PM, export each relevant project that you wish to migrate into an xml file, which is compatible with Milestones PM+.
  2. In Milestones PM+, import each exported Milestones PM file to create a project in Milestones PM+.
  3. Once complete, you may uninstall Milestones PM, which deletes all of your project data.

Upgrading older versions of Milestones PM+

Read the following upgrade instructions carefully!

To upgrade from existing releases of Milestones PM+ (namespace = MPM4_BASE):

To upgrade from a version of Milestones PM+ that is older than 7.0, these prerequisite steps must be made beforehand in order to avoid installation errors.

Enable Track Activities on Milestone: Setup>Create>Objects>Milestone>Edit>Optional Features>Check Allow Activities

Enable Track Activities on Task: Setup>Create>Objects>Task>Edit>Optional Features>Check Allow Activities

File Uploads: XML, CSV and spreadsheet

Have project data saved locally on your computer? First, prepare a copy of your XML, CSV, or spreadsheet file for an easy upload. Be sure to retain a backup version. For more complex or detailed files, schedule a consultation for further assistance or see the Data Migration Starter Pack.

XML files

Modify elements to match the Milestones PM+ field name that the data should populate. They’re not case sensitive.

  • <Milestone1_Project__c>


    • <id>
    • <name>
    • <kickoff__c>
    • <deadline__c>
    • <Description__c>
  • <Milestone1_Task__c>
    • <name>
    • <Start_Date__c>
    • <due_date__c>
    • <Description__c>

About IDs

  • A Project ID tag is required, add <id>100000000000000</id>
  • To retain Tasks with the correct Milestone, add a unique ID to each Milestone attribute and either
    • nest the Tasks inside the Milestone’s tag.
    • add the Milestone ID to each task using <Project_Milestone__c>.
  • Unique IDs are 15 digits and can include alphanumeric characters in the first and last five digits; the middle five digits must be ‘00000.’

About Dates

  • Date format must be YYYY/MM/DD.
  • Dates can be with or without time.
  • If Project, Milestones, and Tasks have dates, ‘Project Kickoff’ will set to current date but all durations will be maintained; Project dates can be changed using Project Configuration.

    If Project doesn’t have dates but Milestones and Tasks do, these dates will upload correctly and Project Kickoff/Deadline will be empty; manually setting Project dates in Milestones PM+ will not affect the child dates.

With the XML file updated, open Milestones PM+ in Salesforce and go to the Import Template tab>File Location>Upload File.

CSV and spreadsheet files

Step 1

  1. Add a header row or line if there isn’t one.
  2. Add two headers for Milestone and Project names if the Tasks don’t already have them.

  3. In Salesforce, create a Project and all Milestones.
    • If your file’s Tasks already have the Milestone name or a similar factor in-row or -line, you can use this as long as the case-sensitive Milestone Name text in Salesforce matches identically.
  4. In your file, identify the Milestone and Project where each Task should go.
    1. From Salesforce, use either the record IDs – found in the browser URL and a guaranteed match – or names – which must match identically including capitalization.

    2. The Project data will contain all the same text, so simply add to the end of each Task line or paste in all row cells.

    3. For spreadsheet files, copy and paste the table in a text document and save.

Step 2

Now that each Task of your file is associated to a Milestone and Project, go to the Milestones PM+ Task tab in Salesforce and click Import.

Page 1

  1. Add New Records
  2. For the “What do you want to do?” dropdowns, select the options used in your file.

    This example uses Salesforce ID for the Project field and Milestone Name for the Milestone field.

  3. Upload the file and select how the values are separated.

Page 2

For each header, select the Milestones PM+ field the Task data should populate.


  • This import is for Task data only to create and populate Task records. Aside from the Header, all rows/lines will be treated as and will create a Task record.
  • Remove Project and Milestone rows/lines before import or delete the extra Task records they create.
  • For spreadsheets, remove other Project and Milestone columns as this data cannot be imported to the Task, including Milestone date fields.
  • Tasks require Milestones. If the project file is only Task data without any Milestone or Project sections, you can leave all Tasks on one Project and one Milestone or you can organize the Tasks.

Custom Settings: Customize Milestones PM+ Behavior

Custom Settings allows you to customize how Milestones PM+ behaves. Go to the “Milestones PM+ Settings” tab, older versions: Setup, search "Custom Settings" (Setup>Develop>Custom Settings), and click “Manage” next to Milestone1 Settings.

Enhance your org and create additional custom settings with Milestones PM+ Starter Packs.

View Custom Settings

Active Statuses – Enter status values considered Active to a Project in single quotations and, if multiple, separated by a comma. ‘Active’, ‘Planning’
Used for: Summary page, filtering to show only Projects with any of these values (by default, all Projects are displayed regardless of status).

Allow Blank Resource on Milestone Task – Allows a Task to be saved without a Resource. If Auto Assign Task Resource custom setting is enabled, leave this unchecked.

Allow View State on Gantt Chart – If a Milestone with Tasks is collapsed on the Project page before printing through the Print Gantt Chart button, the Milestone will stay collapsed and the Tasks hidden. (Premium Edition only)
Used for: Printing only select Milestones’ Tasks with the Project.

Auto Assign Task Resource – When Tasks are created or updated with no resource assignment, a Resource with all of the required skills who is the “least busy” (the fewest number of previously-assigned Tasks in the date range that the new Task spans) will automatically be assigned. PLEASE NOTE: Task assignment is performed asynchronously, it may take several minutes for a value to be populated in the Resource field. Resource will not be assigned if: Task is marked complete; Start Date, Due Date, Required Skills aren’t populated; Resource is already populated; Resources don’t have all the required skills or availability. (Premium Edition only)
Used for: More balanced distribution of workload based on capability and availability. Ensuring every Task is accounted for without manual effort.

Auto UnFollow A Complete Task – Automatically unsubscribes Assigned Users from Chatter feed notifications of Tasks marked Complete.
Used for: Communication management.

Auto Follow A Task – Automatically subscribes Users to follow Tasks they’re Assigned To.
Used for: Communication management.

Auto Milestone/Task Completion – Automatically syncs completion statuses between a Milestone and its Tasks; marking a Milestone as complete will change the status of all its Tasks to complete, and marking all Tasks as complete will update the Milestone status to complete.
Used for: (1) Improved accuracy, eliminating an extra step of updating a Milestone status despite its Tasks being marked complete. (2) Improved efficiency, eliminating the need to manually mass update individual Tasks when a Milestone is finished.

Auto Unfollow Reassignment – Automatically unsubscribes the previous Assigned User from a Task once reassigned to another User.
Used for: Communication management.

Automatic Task Resource Sharing - Provides Resources assigned to Tasks view/edit permissions to the Task and its Milestone.

Custom Email Fields – Enter the api name of an email address field that will override the “Notification Email Address” field being utilized for Milestones or Tasks. (Premium Edition only) Custom Milestone Email Field; Custom Task Email Field.
Used for: Consistent communication to a single individual who needs these notifications.

Custom Sort Order of Objects – Enter the API name (comma-separated, if multiple) of an available field label to define a sorting order; optionally, use ASC or DESC for ascending/descending. (for example: Start_Date__c, Deadline__c DESC, Name ASC)
Used for: Custom Milestone Sort Order, Custom Project Sort Order, Custom Task Sort Order; Custom Summary Sort Order, use Project/Program field API names appropriate to the object in use.

Custom Setting Picklist Filter #1 – This setting is for our Development Services and inactive in the standard package.

Default Email Template Folder – The ID of the default selected email folder used in the notification inline Visualforce page. The email folder ID can be found at the URL tail in Salesforce Classic (Premium Edition only)
Used for: Determining what email templates are displayed for selection on Milestone and Task notifications in-line Visualforce pages.

Default Folder For Imports – The Import Template page's default folder is "My Personal Documents" If left blank or the folder is empty.

Default Milestone Alias – If a Task is created when an email is received without a Milestone in the subject line, the Task will be categorized with this alias. (Premium Edition only)
Used for: Keeping emailed Tasks in one location to easily sort through, rather than having them unassociated anywhere.

Disable All Resource Email Notifications – Turns off all notifications sent to Resources regarding Tasks, including when they’re Assigned To or a predecessor Task has been completed. (Premium Edition only)
Used for: Prevents notifications to Resources.

Disable Automatic Resource Creation – Prevents the creation of a Resource record when new Users are added.
Used for: Cases where (1) Resources and Users are intended for separate purposes; (2) Resources are intended only for Contact records; (3) not all new User records require a Resource record; (4) Resources are preferred to be manually created.

Disable Deletion on Project Plan Page – Hides the delete column from the Manage Project Plan view. (Premium Edition only)
Used for: If, frequently, Milestones and Tasks are initially added and later maintained in-line through Manage Project Plan, the deletion column being enabled may prove useful. Otherwise, removing this ability can prevent accidental deletion.

Disable Interactive Gantt Chart – Turns off the drag and drop functionality on the Gantt chart. (Premium Edition only)
Used for: Prevents changes to an in-line object’s start and end dates made by moving the bar.

Disable Milestone Deadline Population – If checked, the setting will allow the deadline field to be blank. If unchecked, it will prevent the deadline field from being blank.
Used for: Ensures that only your users or your business specific workflow rules control the defaulting of this field value. Allows Milestone due dates to be blank even when the kickoff date field is populated.

Disable Milestone Shifts Caused By Tasks – Prevents the dates on a Milestone from changing when Project Task dates are changed, allowing both sets of dates to be different such as when task dates are updated outside the timeframe of the milestones or moved after the Milestone start date.
Used for: (1) Keeping Tasks with its relevant Milestone (regardless of how the Task dates change in relation to its Milestones’ dates). (2) Avoid overlap of consecutive Milestones.

Disable Ownership Cascading – If the Project Owner or Milestone Owner changes, child Milestones and Tasks assigned to the previous owner won't change to the new owner.

Disable Parent/Child Functionality – This setting is used to prevent unnecessary queries from being run when parent/child relationships are not being used.
Used for: Safeguards parent/child records from running unwanted changes as a result of edits. When disabled it will prevent the shifting of a child Milestones dates when a parent's dates are shifted.

Disable Resource Assignment Notification – Turns off notifications sent to Resources when they’re Assigned To a Task. (Premium Edition only)
Used for: Organizations that simply want to reduce the necessity of using email to manage project execution.

Disable Stage Sync With Actuals – Task Stage or Complete checkbox won't change Actual Start/Finish Dates.

Disable Task/Event Syncing – Project Tasks won't sync to Salesforce Tasks/Events. (Premium Edition Only)

Disable Triggers – Prevents the Milestones PM+ triggers from firing.
Used for: (1) Investigating issues and troubleshooting. (2) Turning off any automation for preference.

Display Tasks On Program Gantt Chart – Shows the Task rows within the Program Gantt chart.
Used for: Full outline of a Program’s details. By default, the Program Gantt displays only Projects and Milestones.

Email Template Folder Override – Allows a field to be populated on the Project that has an ID of an email template folder to use for inline Visualforce email notifications. (Premium Edition only)

Exception Email Address – Enter an email address (comma-separated, if multiple) to receive email notifications when asynchronous job exceptions occur, detailing which record caused what error to occur.
Used for: Alerting operations personnel.

Exclude Holidays From Workday Duration – The workday duration field will exclude holidays from the calculation.

Fiscal Year Offset – Enter numerical value of the month that the fiscal year starts.

Keep Project Template Assignments – When exporting and importing Project templates, assignment fields on the Project, Milestone, and Task objects are also transferred. (Premium Edition only)
Used for: Used for Projects that are frequently executed with the same Resources or teams assigned, reducing resource management overhead.

Keep Weekday Duration When Shifting – Prevents the weekday duration from reducing if (1) an item is moved; (2) Exclude Weekend Work is checked, and (3) total duration (seven days) is unchanged.

Manage Project Plan Realtime Date Shifts – When checked, date shifts from updates on Manage Project Plan will occur on the grid in real time upon save. (Premium Edition only)

Merge Time Records – Merges a user's time records for a single day. This setting isn't retroactive and won't affect existing time records.

Only Create Resource For SF License – Create Resource records only for new Users with a Standard profile for either the Salesforce or Salesforce Platform license type. An alternative to the default setting (new Users creating new Resources) and our other custom setting (Disable Automatic Resource Creation).
Used for: Filtering out Resource records from higher-restriction license types including community users.

Push Upgrade Opt Out – Allows organizations to elect not being push upgraded. (Premium Edition only)

Realtime Project Creation – By default, Projects are created in the background and, thus, may take a few extra seconds to process. If checked, the project will be created in realtime.
Used for: Bypassing the Apex governor limits in Salesforce.

“Report Id” settings – Most of these settings are for the use of our Development Services.

Report Id: Project Report – Enter a report ID (tail of URL, not Report Unique Name) that the 'Project Report' button opens. This report must have the following criteria: “Project ID equals <blank>” before it is saved with any other modifications. This <blank> value will be replaced automatically in the report criteria using the Project ID when the ‘Project Report’ button is clicked. With the out of the box / managed Project Report, when the report opens, it will be defaulted to show all the given project tasks organized by milestone deadline.
Used for: Conveniently viewing a combined report on all Project pages, instead of seeing just one or having to navigate to Reports. Useful if Programs are predominant work items.

Send Expense Budget Notifications – Sends a notification to the Project Owner when the Total Expense Budget becomes larger than the Total Expense Estimate.

Shift Due Date When Start Date Set – If checked, changing the start date of a Task will shift its due date to keep the duration the same number of days. Note: manual changes to the Task due date will override any shifts and this setting.
Used for: (1) Due dates that are dependent on when the Task starts and not a predetermined hard deadline. (2) Consistency by freezing the span set between dates.

Shift Proj/MS Deadline When Kickoff Set – If checked, changing a Milestone or Project kickoff date will shift its deadline date to keep the duration.

Show Actuals on Gantt Chart – Display the Actual Start/Finish Date columns on the Gantt chart.

Show Duration on Gantt Chart – Display the Duration column on the Gantt chart, totaling the days between start and finish dates for in-line objects.

Show Percentage Column on Gantt Chart – Display the Percentage column of the task on the Gantt chart. (Premium Edition only) The “Percentage Complete” field of the Project Task requires customization before being enabled.

Show Record Type On Manage Project Plan – Allows record type to be modified on Manage Project Plan. (Premium Edition only)

Show Resource on Gantt Chart – Display the Resource column on the Gantt chart. (Premium Edition only)

Summary Programs – Display Gantt charts of Programs instead of Projects on the Summary tab.
Used for: Orgs primarily utilizing Programs rather than multiple independent Projects.

Sync Task With Actual Start Finish Dates – Syncs the Task values of Start Date and Due Date to Actual Start Date and Actual Finish Date.
Used for: (1) Gantt chart auto-fill, as Actual Dates are displayed. (2) Automation for when Tasks are frequently on-time, and the Actual Dates don’t often vary.

Sync Tasks Events When in Project Planning – Allows Project Tasks to sync to SFDC Tasks/Events when the Project Task is in the ‘planning’ status. (Premium Edition only)
Used for: When unchecked, Projects with Planning status won’t sync its Tasks to SFDC Tasks/Events. Once the Project status is Active, all Tasks will then be synced to SFDC Tasks/Events.

Sync on Predecessor Task Completion – Successor Project Tasks will only sync to SFDC Tasks/Events if its predecessor Task is marked complete. (Premium Edition only)
Used for: Condensed overview of the most current status of a Project, limiting to completed Tasks and its next (successor) Task.

Usage of Limits – Enter how many maximum queries to execute in a single trigger context.
Used for: Limiting the number of queries run by Milestones PM+ in a single context.

What is Each Object/Tab Used For?

Programs Object

Implement Programs to group your Projects together and display on the Program-level Gantt chart. To add your existing Projects to a Program, make sure you add the Program lookup field to your page layout if not already displayed there and also add all your Programs using the Programs tab. You can also think of a Program as a parent Project.

Project Object

Use Projects to track anything that has a start or a finish date. A Project has multiple Milestones. Projects can even roll up into a Program!

Project Dates

If you shift the Project start and end date the same number of days, this will have the effect of shifting all milestones and tasks in the Project. The Project Configuration button automatically shifts all dates (including Project deadline) while maintaining item duration for two scenarios: a new kickoff date (positive or negative value) and excluding weekends (by extending the dates). It will take a few moments for the Project to reflect the updates and requires a refresh.

Scenario examples:

  • Changing only the kickoff date from 01/23/2000 to 01/25/2000 – two days later – will push all Project, Milestone, and Task dates forward.
  • Changing only the kickoff date from 01/25/2000 to 01/22/2000 – three days earlier – will push all Project, Milestone, and Task dates back.

Enabling only “Exclude weekend work” will take the total amount of days between start and end, then apply that total to weekdays and add each weekend-day to the due date. (This functionality can work only through the Project Configuration page.)

MPM+ shift dates

Project Buttons (Export Template, Project Configuration, and Project Report)

The Project object has some pre-built custom buttons that can be added/removed to the page layout on the Project layout:

Export Template to export a template based off of the current Project. Make sure you have the Project defined exactly how you want it before exporting because changes to the Project after exporting it will not update the exported file. You would need to export the template once again.

Project Configuration allows you to shift the Project by a certain number of days. You could also check an option to exclude weekend work. This will adjust the Project to account for no weekend work and your Tasks/Milestones will not land on the weekend.

Project Report opens a report on the current Project so you can have an overview on the health of the Project. The button, by default, uses prepackaged criteria (named “Project Report” in the Milestones PM+ Reports folder) to create a summary of the page’s Project by grouping Task data with Milestones. Milestones PM+ contains two Report presets that can be used for the Project Report button, the other (“Project Report - No Filter) showing an overview of all Projects rather than just the page’s and can be changed via the custom setting Report ID: Project Report. They are intended as a framework to develop upon, so it’s highly advised to “Save As” a copy from the Report and not modify them directly.

Status at a Glance Charts

On the Project page there are some ‘Status at a Glance’ charts to help you track task status and budget status. If you you think you will need to change those charts or create different Project-level metrics, we recommend that you look into Rollup Helper to calculate any Project metrics / KPIs. If you want to graph any Project metric (as we have done with the sample charts), we recommend using Embedded Analytics as it’s a completely native solution and fully supported.

You can have a unique Project number for each Project by creating a custom field and using the auto-number custom field type. View list of the custom field types supported in Milestones PM+.

Next Project Top Milestone Name

The Next Project Top Milestone Name will be auto-calculated at the Project level. This field pulls the name of the next incomplete Milestone with a deadline filled out that does not have a parent milestone.

Milestones Object

Use Milestones to track a component of your Project that have a start or a finish date. Milestones can even have multiple Tasks or be related to any object in Salesforce! Milestones can be linked to other Milestones to form dependencies that are displayed on the Gantt Chart.

Milestone Dates

When you extend an end date on a Milestone beyond the end date of the Project, the Project will be extended.

Using Templates for Milestones

You may use the Templates functionality for the entire Project work breakdown structure (Project, Milestones, Tasks) to be copied.

Quick Task Update

The quick task update visualforce page component (Milestone2_Project_Task_RL) can be added to your Milestones detail page to allow multiple Tasks to be marked complete, or for multiple date changes to be updated en masse. You can also use the field set associated to the VF page component to change the fields that appear for the user. When adding the visualforce page component to your Milestones detail page, we recommend setting the parameters as depicted in this image to ensure enough Tasks will display for each Milestone, and if not, to enable showing scrollbars. (See screenshot on the main page below.)

Milestones Validation Rules

Do not disable the “Milestone Kickoff must not be earlier than its Predecessor’s Deadline” validation rule. Disabling the validation rule will allow for potentially bad data to be created in a Project while the User is editing Milestones, or during the automated Project creation processes that we have (auto-project creation processes, import project).

Task Object

Use Tasks to hold individuals accountable for delivering on specific time-sensitive items. Milestones can even have multiple Tasks or be related to any object in Salesforce!

Task Dates

When you extend an end date on a Task beyond the end date of the Milestone, the Milestone will be extended. Successor Tasks will also be shifted over as well.

Actual Start and Actual Finish Dates

It is important to note that when you save a Task as complete, the default behavior is for your start date to be used as the actual start date (if one is not provided) and that the actual finish date will be set to today (if one is not provided). Changing the start and finish dates whilst marking a Task complete, may not apply the correct dates to your plan. If you want to mark a Task complete, first make sure that the dates are correct for start and due date first before marking the Task complete. Alternatively, you may want to add the actual start and finish dates to your Task layouts and Quick Task Update visualforce page component (on the Milestone page) to ensure the correct actual start and finish dates are applied to your plan.

Time Object

Time allows users to log individual time entry records on Project Tasks. This can be done via Time tab or by adding the Time Related List to the Task page layout. To log time on other objects or for multiple Tasks by date, use Time Entry in Milestones PM+ Premium Edition.

Risks and Issues

Use Risks to document any potential issues that may occur during a Project and any contingency plans that are in place.

Use Issues to document any problems that arise during a project.

Calendar Tab

Use the calendar to view deadlines in a calendar format.

Gantt Chart & Sorting

You can display a Gantt of child Projects under a Program, a Project’s Milestones, or a Milestone’s Tasks.

The sorting logic on the Gantt chart by default is to order in an ascending fashion, first on the start date, then the end date, and then finally on the name of the item.

The sort order of the Gantt chart Tasks can be configured by an admin using the ‘Custom Task Sort Order’ custom setting (Develop>Custom Settings, etc).

Some customers who make extensive use of predecessor relationships between Tasks may want to modify this custom setting as follows:

Predecessor_Task__r.Predecessor_Task__r.Due_Date__c asc, Predecessor_Task__r.Due_Date__c asc, desc, Start_Date__c asc, Due_Date__c asc, Name asc

Gantt Chart for Communities

The Milestones PM+ Gantt Chart component is now Salesforce Community Cloud Ready! Contact Passage Technology to learn more about enablement.

Summary Tab

Shows a Milestone-level Gantt chart of each Project with option to search for a Project. You can drill down into each Project. The layout on the Summary tab is presently fixed, but we hope to improve the configurability of this page in the near future.

Known Issue: You may find that when clicking on the Summary tab you get the following error, “Attempt to de-reference a null object An unexpected error has occurred. Your solution provider has been notified. (MPM4_BASE)”

If you get this error, perform the following steps:

  1. Go to Setup>Develop>Custom Settings
  2. Click ‘Manage’ next to Milestone1_Settings
  3. Click the FIRST ‘New’ button at the top of the page to create a new default organization wide custom setting for Milestones PM+.

Using Project Templates

A template consists of a Project, their Milestones, and each Milestone’s Tasks. To create a template, create a Project, add Milestones to the Project, and for each Milestone, add Tasks. Pay special attention to predecessor/successor relationships between Milestones and Tasks and adjust all the dates to match your expected /target /average durations. Review this with your team. After this review, click the “Export Template” button. This will create your Project template!

You may create Project templates for each of your Project types out of the box. Be advised that there are limitations with the Free Edition of Milestones PM+. For example, you cannot export custom fields in your Project templates. In versions older than 7.2, the Assigned To field can not be used in Project templates. In versions 7.2 or later, the Assigned To field has been replaced with the Resource field. To gain these additional features, upgrade to Milestones PM+ Premium Edition to get the Advanced Project Templates feature.

After creating a Project template file, use the “Import Template” tab to create a Project from the template file. It is important to note that relationship values other than the relationship fields that connect the project together (Predecessor Milestone, Predecessor Task, and Project lookup fields) should be cleared and a new template created before migrating the template from the org where the template was created, to another org. The reason for this is because even though records in two different orgs may have the same name and data populated, their IDs may not be the same.

After creating a Project template file, use the “Import Template” tab to create a Project from the template file.

For creating a project template in production and moving it to a sandbox, you would need to import the template with the “keep template assignments” custom setting for Milestones PM+ turned off. If the setting is left on, it will try to reference the resource IDs, which only exist in your other environment and the import will fail.

Using the Project Creation Page

The Project Creation page allows you to create the structure of an entire project on a single page. By default the project creation page allows you to define the values in the following fields during creation:

  1. Name of the Project and the names of all Milestones and Tasks that belong to the Project.
  2. Start Date/Kickoff and Due Date/Deadline of the Project, Milestones, and Tasks
  3. Predecessor/Successor relationships between the Milestones and Tasks.

To add additional fields to the project creation page, you may modify the ‘Project Creation Page Fields’ fieldsets at the Project, Milestone, and Task levels. Simply navigate to the object definition that you would like to add the additional field(s) for, click edit next to the ‘Project Creation Page Fields’ fieldset, drag and drop the field(s) into the grey box labeled ‘In the Field Set’, once all fields have been added click the save button. NOTE: only editable fields will display on the project creation page.

To create Milestones and Tasks at the bottom of the Project you may click the ‘Add Milestone’ or ‘Add Task’ buttons at the bottom of the project creation page, or by clicking the dropdown menu on the Project row.

To create a successor Milestone you may click the dropdown menu on the far right for the Milestone that you would like to create a Successor for then click the ‘Add Successor Milestone’ menu option.

To create a Task under a specific Milestone click the dropdown menu on the far right of the Milestone that you would like to create the Task for then click the ‘Add Task’ menu item.

To create a successor Task click the dropdown menu on the far right of the Task row that you would like to create the successor Task for then click the ‘Add Successor Task’ menu item.

To remove items added to the project plan click the dropdown menu for the item that you would like to remove, and click the remove menu item. NOTE: Removing a Milestone will also remove all Tasks that belong to that Milestone.

When defining the structure of a project, all of the criteria below must be met in order for a project to be created:

  • The Start Date/Kickoff of an item must be before or on the same date as the Due Date/Deadline
  • If an Item has a predecessor the Start Date/Kickoff of that item must be after or on the same date as its predecessors Due Date/Deadline.
  • All Tasks that belong to the same Milestone must have unique names. Tasks belonging to different Milestones may have the same name.
  • All Milestones that belong to the Project must have unique names.

If issues are encountered on the Project Creation page related to the above issues, the fields values that need to be corrected will be highlighted with a red outline. However there may be some situations where the field encountering the issue may not be highlighted. If problem fields are not highlighted on the page you will need to scroll up to the top of the page to see what needs to be corrected in order for the project to be created.

Automatic Project Creation/Relating to Salesforce Objects

Automatic Project Creation Process

You can also automatically create projects from other objects in Salesforce and set the kickoff date to the import date. Learn more about the process of managing templates in the Milestones PM+ Template Training Guide.

Cloning Limitations:

  • Project and Milestone Clone buttons will not copy predecessor relationships.
  • Using the clone buttons isn’t recommended as the clone process will copy bad date data that has been entered by the user. Using templates instead is recommended.

Linking to Standard Salesforce Objects (Opportunity, Case, etc.)

You can easily link/relate any object in Milestones PM+ to any object in Salesforce. Doing so will allow you to implement new functionality in Salesforce such as Displaying Project(s) that have been worked on for a client Opportunity and Displaying Cases underneath a Project for issues tied to the go-live.

Automatic project creation process is great way to enforce consistent template utilization within your project management organization and supports the automatic assignment of a project kickoff date.

Create Projects from an Opportunity and any Salesforce object (automatic project creation process)

Automatic project creation process is a great way to enforce consistent template utilization within your project management organization and it supports the automatic assignment of a project kickoff date. There are four options for creating projects automatically:

  1. Create a project from a Button.
    • This option is easier to implement as it doesn’t require any code or the use of a sandbox.
    • This is a Milestones PM+ Premium Edition feature.
    • Reference below section “Create Projects From Any Object In Salesforce Button (Premium Edition Feature)” for directions.
  2. Create a project automatically using a trigger on the desired object. Follow the steps below for the trigger option or review Milestones PM+ Starter Packs for implementation options.
  3. Create a project automatically using an invocable method through Process Builder. Follow the steps below for the process builder option or review Milestones PM+ Starter Packs for implementation options.
  4. Create a project automatically using a Visualforce Page trigger. Follow the steps below for the Visualforce Page trigger option or review Milestones PM+ Starter Packs for implementation options.

Trigger Creation

To setup Project creation automatically from any object in Salesforce, you need two main variables to be managed by your users or your workflow: first will be the template name (example: New Client Onboarding) to use when a Project is to be created from another object and second is the name for your Project (example: Account Name New Client Onboarding). In most implementations, you will have your Users either populate a custom text field or select a picklist field to select a template. If you are implementing a picklist field, you MUST make sure that you do not default the picklist field to a specific template name value as then the trigger that is deployed behind the scenes will never fire.

  1. Log into your sandbox.
  2. [A] Create a picklist field in your sandbox on the object where projects will be auto-created from and populate the picklist with options that match the same values as your project template document names/templates names (Example from above: New Client Onboarding would be a picklist value), then [B] jot down the name of the API name for this field (E.g. Project_Type__c).
  3. Click on your name then “Developer Console” (available in Salesforce Enterprise Edition and above unless an API package has been purchased with Professional Edition).
  4. Go to File>New>Apex Trigger
  5. Enter the trigger name and select the object that you want to create a project automatically from. Recommended trigger name is “MPM4_Opportunity_Project_Creation.”
  6. Copy and paste the template trigger code on the next page, and replace variables accordingly. Make sure “after insert, after update” is included in the parenthesis.
trigger MPM4_<Your_Object_Name>_Project_Creation on Your_Object_Name__c (after insert, after update) {


   Type pcu = System.Type.forName('MPM4_BASE', 'Milestone1_Project_Creation_Utility');

         if(pcu != null){

           MPM4_BASE.Milestone1_Project_Creation_Utility projCreationUtil = (MPM4_BASE.Milestone1_Project_Creation_Utility) pcu.newInstance();


projCreationUtil.CreateChildProject(trigger.oldMap, trigger.newMap, new Map<string, object>{

'projectCreationField' => 'field_api_name__c',

'projectLookupField1' => 'field_api_name__c',

'projectLookupField2' => 'field_api_name__c',

'secondaryLookup' => 'field_api_name__c',

'projectNamingConventionField' => 'field_api_name__c'






There are multiple parameters in the CreateChildProject method.

The projectCreationField parameter is a MANDATORY text field representing the API name for the field containing the value that represents which project template document to search for. It also is the field that when set triggers project creation. Important: You will want to make sure that when creating project templates that you have your template named (document named) according to the value specified by this field. For example, if the value in the API field name referenced by the projectCreationField parameter is “Standard,” you will need to make sure that you have a project template named or containing the world “Standard.”

The projectLookupField1 parameter is a MANDATORY text field representing the API name for the primary lookup on the project object that will connect to your newly created object to the parent object on which the project was automatically created. If you want to create a Project from an Opportunity, you would use the field_api_name__c for example: MPM4_BASE__Opportunity__c

The projectLookupField2 parameter is an OPTIONAL text field representing the API name for a second lookup on the project object that will connect to your newly created object to an additional lookup field. If you also wanted to relate the Project to an Account for example: MPM4_BASE__Account__c

NOTE: If you are using the secondaryLookup parameter to determine the source for the ID field to use for the secondaryLookup, you will need to set this field for where to put this ID field on the Project custom object.

The secondaryLookup parameter is an OPTIONAL text field representing the API name for an additional lookup field on the parent object on which the project was automatically created. For example, Opportunities have Accounts as their parent (grandparent to the Project) and if you are creating a Project from an Opportunity, you can set the Opportunity.‘AccountID’ API name/field name value to use in this parameter to relate the Project to both the Opportunity and it’s Account.

The Project_Naming_Convention__c parameter is a MANDATORY text field representing the API name containing the field or formula field that sets the name of your newly created project.

For assistance deploying this trigger or changing the setup of how Projects are automatically created, review Milestones PM+ Starter Packs for trigger creation services including implementation and customization (e.g. an opportunities products can be used to select the template, a project can support being tied to multiple child opportunities).

TIP: Use Rollup Helper for free to rollup the product(s) on an opportunity, and then use that roll-up field as part of workflow that triggers project creation. If you have a third (or even more) lookups to set on the Project object, use Lookup Helper for free.

Trigger Test Method

Once the trigger’s created, in order to deploy it into a production environment, a test method must also be created. The code below can be used as an example to build your trigger. NOTE: If you have any extra required fields on Account or Opportunity, you need to provide values for those fields in the constructor before inserting the record.

// All test methods in this class can access all data.


public class Opportunity_Project_Creation_Test {

   static testMethod void Opportunity_Project_trigger_Test() {

        MPM4_BASE__Milestone1_Project__c testProj = new MPM4_BASE__Milestone1_Project__c(name = 'test456');

        Account testAcc = new Account(

                                name = 'test321'


        insert testAcc;

        Opportunity testOpp = new opportunity(

                                    name = 'test123',                 

                                    Accountid =,

                                    Territory__c = 'Lung - Other',

                                    CloseDate = Date.Today(),

                                    ForecastCategoryName = 'Closed',

                                    stagename = 'Closed Won'



       insert testOpp;

       testOpp.Project_Type__c = 'Standard';

       update testOpp;


       testProj = [Select MPM4_BASE__Opportunity__c, id from MPM4_BASE__Milestone1_Project__c where MPM4_BASE__Opportunity__c =:];

       system.assert(testProj != null, 'Project not created!');                                                   




Project Creation Setting custom setting

Before creating a trigger in Process Builder or Visualforce, a ‘Project Creation Setting’ custom setting must be created. To do this, go to Setup>Custom Settings>click Manage next to Project Creation Settings>New.

  • Required: Populate the name field with the name of the object that should trigger the project to be created (in lower case).
  • Required: Project Creation Field the name of the field on the object (triggering project creation) that will contain the name of the project template that will get created.
  • Required: Project Naming Convention field should be populated with the field name on the object (used in the name field) that will be used to name the new project that will be created.
  • Required: Project Lookup Field 1 will contain the name of the lookup field on the project object that is used to relate the newly created project to the record that triggered the project to be created.
  • Optional: Project Lookup Field 2 will contain the name of a secondary lookup field on the project object that should be populated on project creation.
  • Optional: Secondary Lookup field will contain the field name of a relationship field on the source object that will contain the ID of what should be populated in the project field used for the ‘Project Lookup Field 2’ custom setting.

Process Builder option

Once the ‘Project Creation Setting’ has been created, create your process in Process Builder.

  1. On the ‘New Process’ page, enter the process name, select from the dropdown “The process starts when” When a record changes, click save
  2. Select the object that should trigger the project creation
  3. Select if the process should fire on project creation or whenever its created or edited
  4. If you would like to define a specific criteria that will have to be met in order for the project to be created, you may do so or you select to just execute the action without criteria
  5. Add an immediate action with the type of ‘Apex’
  6. Name the action anything
  7. Select Create Child Projects for the Apex Class field
  8. Click +/plus symbol next to “Add Row” text in the ‘Set Apex Variables’ section
  9. Select parentRecs for the field
  10. Set the type to Field Reference
  11. Select the ID field for the value
  12. Click Save and activate the process

Visualforce Page option

Once the ‘Project Creation Setting’ is created, create a Visualforce Page with the following code.

<apex:page standardController="object_name__c" showHeader="false" applyHtmlTag="false">
   <MPM4_BASE:MPM4_Project_Creation triggerObjectName="object_name__c" TriggerObjlookupName="Project_Parent_Record_ID__c"/>

After the page is written, you can replace ‘object_name__c’ with the name of the object that should cause a project to be created and replace ‘Project_Parent_Record_ID__c’ with the name of the field containing the ID that should be used to populate the Project Lookup Field 1 field at the project level (in most cases this will be the ID field).

Predecessor/Successor Dependencies

Predecessor/successor dependencies are used to depict that one item relies on the completion of another item in order to continue work. If a predecessor Milestone or Task is shifted (a “Date Shift”), the successor Milestone or Task will be shifted over the same number of days. A “Date Shift” is when both the start and end dates are shifted by the same number of days.

In order to enact a “Date Shift” at the Milestone level that cascades down to its Tasks, both the start date AND end date have to shift by the same number of days. If just the start date is shifted, this will not influence the Task dates on the updated Milestone. Note that when the end date on the Milestone is shifted, then the successor Milestones will also have their dates changed and their Tasks’ dates will also change.

Predecessor Limitations

  • A Project Task can only have one Task predecessor. If you wish to have a Task linked to multiple Task predecessors, we recommend that you group the Tasks that are the predecessors into one Milestone and make that Milestone a predecessor Milestone to a Milestone that contains the downstream Task in question.
  • A Project Milestone can only have one predecessor Project Milestone.
  • A Project Task can only become a predecessor Project Task if it is on the same Milestone as the successor Project Task.

To customize this default behavior, review Milestones PM+ Starter Packs for feature implementation options.

Parent/Child Milestone Relationships

Parent/Child relationships are created by using the ‘Parent Milestone’ lookup field on the Milestone Object. The ‘Parent Milestone’ lookup field may be beneficial when you need to create a grouping of milestones that belong to another Milestone. Unlike the Predecessor/Successor relationship, the Parent/Child relationship does not denote that a parent must be completed before the child can begin. In addition, the Parent/Child relationships do not display on the Gantt chart like the Predecessor/Successor relationships do.

NOTE: the ‘Parent Milestone’ field is not required; if not used, the only downstream impact is that some of the Rollup Summary fields on the Milestone Object will not be calculated.

Changing Tabs/Labels and Performing Translations

Change labels for a custom tab

  1. Navigate to [Your Name]>Setup.
  2. Under App Setup expand Customize.
  3. Expand Tab Names and Labels.
  4. Click Rename Tabs and Labels.
  5. Scroll down to Custom Tabs.
  6. Click Edit next to the custom tab you want to rename.
  7. Change the values in the Record Name, Singular, or Plural fields to ones that make sense for your organization.
  8. Save.
  9. Repeat steps 6-8 for each tab you want to rename.

Change labels for a custom field

  1. Navigate to [Your Name]>Setup.
  2. Under Administration Setup expand Translation Workbench.
  3. Click Override.
  4. Change Package to Milestones PM+.
  5. Change language to appropriate language (e.g. English).
  6. Change Setup Component to Custom Field.
  7. Pick the Object that contains your Custom Field.
  8. Make sure Aspect is set to Field Label.
  9. Double click in the Field Label Override cell for the label you want to change. Input your new label value.
  10. Save.

Change labels for a custom related list

  1. Navigate to [Your Name]>Setup.
  2. Under Administration Setup expand Translation Workbench.
  3. Click Override.
  4. Change Package to Milestones PM+.
  5. Change language to appropriate language (e.g. English).
  6. Change Setup Component to Custom Field.
  7. Pick the Object that contains your Custom Related List.
  8. Make sure Aspect is set to Related List Label.
  9. Double click in the Related List Label Override cell for the label you want to change. Input your new label value.
  10. Save.

Resources, Task Assignment and Task Reminders

Resource Assignment

Assigning Tasks To Salesforce Users

In Milestones PM+ Free Edition, each Task must be assigned to a Salesforce usser as a Task owner.

Assigning Tasks to a user can be done manually or automatically. Milestones PM+ assigns owners to Projects, Milestones, and Tasks automatically based on the user performing or triggering the Project import from a template file. Milestones PM+ also changes owners automatically on Milestones and Tasks when the higher level object’s (parent object’s) owner changes and the old owner matches. You can automate other owner changes using workflow field updates.

Assigning Tasks to non-Salesforce users not requiring in-app access

Task assignment to non-Salesforce users not needing in-app access requires Milestones PM+ Premium Edition. With Milestones PM+ Premium Edition, Resource Assignment seamlessly links a Contact to a Task as a Resource and allows email notifications via workflow. For a group of Users, a Contact record can be created for the group using the group email address. NOTE: workflows are only available with Salesforce Enterprise Edition orgs or higher (or orgs having the API & workflow add-on purchased from Salesforce).

Assigning Tasks to non-Salesforce users requiring in-app access

External user access requires advanced configuration and possibly additional Salesforce licenses. Review Milestones PM+ Starter Packs for these implementation services.

Option 1 - Direct Access via Portal/Community License

This option provides the best blend of functionality and security, requiring direct access setup to the system via Salesforce community portal. In this case, we will setup a community for you to have all your external/non-Salesforce team members access the application securely regardless of having a Salesforce user login today. In this scenario, portal/community licenses are required for users to access the portal. Contact us for assistance in procuring these licenses through Salesforce.

Option 2 - Direct Access Via Salesforce License

This option allows you to give external/non-Salesforce team members a similar user experience as your internal users. This option requires purchasing a license either from Passage Technology (single app license) or from Salesforce (chatter plus, one app, or EE licenses). This option doesn't require a portal to be setup, but may still require security configuration and still requires additional licenses for your customers and partners and other external team members. In this scenario, you will setup a restricted user profile for your external customers or partners to access Salesforce securely.

For assistance with implementing any of these options or related workflow, browse our Milestones PM+ Starter Packs for implementation assistance.

Assigning Tasks To Multiple Owners

To assign multiple users to a task, find the related list called “Task Resources” under the Task object. Then create multiple junction object records by clicking the “New Task Resource” button on that related list.

Task Reminder setup

For a standardized way of reminding users about Tasks just like Salesforce – with Tasks on the Homepage and those pop-up reminders that you get on login, we have this functionality in our Premium Edition. With the Premium Edition, we integrate Salesforce Tasks/Events with Milestones PM+ Tasks. The Premium Edition has notification features such as the ability to use native Task reminders for Tasks due or can even notify downstream Task owners when a predecessor Task gets completed.

Updating Resources

If you are upgrading from a version lower than 7.24 to a version equal to or greater than 7.24, you may need to update your Resource fields. Version 7.24 has deprecated the Assign To field on Tasks in favor of a more dynamic field called Resource. The Resource field can be a Contact or a User (Contact is only available in Premium Edition). To accommodate for this we needed a new object called Resource that can hold either a User or a Contact as the Resource. In order to transfer your existing Assign To data to the Resource field we will need to first create a Resource for each User that doesn't already have a Resource aligned with the User and also update all of the Resource fields that are currently blank with the value in the Assign To field. To do this, go to the Getting Started page and press execute on the button in the Update Resource section. Note: you can disable Resource Task assignments before running the process to ensure that Users do not get flooded with Resource Assignment emails.

Workflow and Security

This admin guide references Salesforce Workflow, which can be either Salesforce Process Builder or Flow workflow. Passage Technology can set up these workflows for a seamless implementation with Milestones PM+ Starter Packs.

Private Projects

By default, Projects are set in the Organization Wide Default (OWD) settings as Public Read Only. Any users with [1] access to the app and at least [2] read access to the Projects tab and [3] read access to the Project object can view all Projects. If you wish to restrict these permissions, it's recommended to change the OWD to Private. Then, only Projects and Milestones shared can be viewed. Automated Sharing Rules are created manually via Sharing Button or Sharing Rules.

Free Edition Best Practices

  • When creating a Project that will be used as a template:
    • Use a Project name that you will also use as the Template name.
    • Make sure that all durations, predecessor/successor dependencies are in place.
    • Only lookup fields that apply to all projects created from the template should be populated. If for example, they all should be in the same Program, populate the Program Lookup. If the created projects should not all relate to the same Account you may leave the Account lookup blank.
    • If the Template may be migrated to another org, Lookup and Resource fields should be blank as the records may not exist in the new environment.
  • File Project Templates in the Milestones PM folder so that all Users have access to them.
  • Keep in mind that Custom Settings apply to all Programs, Projects, etc.
  • If you have large Projects hitting limit errors such as SOQL 101, consider lowering the “Usage of Limits” Custom Setting to 70% (It is 100% by default).

Premium Edition

Post-install access

After installing, verify that all user profiles (or permission sets) can see the fields on the Milestones PM+ objects that are added through the Enterprise Edition. Fields needing to be editable/readable:

Milestone Object

  • MPM4_BASE__Additional_Information__c
  • MPM4_BASE__Email_Template__c
  • MPM4_BASE__Notification_Email_Address__c
  • MPM4_BASE__Task_Sync_ID__c

Project Task

  • MPM4_BASE__Additional_Information__c
  • MPM4_BASE__CreatedByTask__c
  • MPM4_BASE__Duration_In_Minutes__c
  • MPM4_BASE__Email_Template_ID__c
  • MPM4_BASE__End_Date_Time__c
  • MPM4_BASE__My_Task__c
  • MPM4_BASE__Notification_Email_Address__c
  • MPM4_BASE__Reminder__c
  • MPM4_BASE__Reminder_Time__c
  • MPM4_BASE__Resource__c
  • MPM4_BASE__Start_Date_Time__c
  • MPM4_BASE__Sync_To__c

Project Task & Salesforce Activity (Task, Event) Sync

Syncing Project Tasks and Salesforce Tasks

Milestones PM+ Premium Edition comes with this feature enabled by default. Only new Project Tasks created and updated will be synced to Salesforce Tasks; those created using the Free Edition might not create and sync to Salesforce Tasks. To sync a Project Task to a Salesforce Task, add “Sync To” field to page layout and either select “Salesforce Task” or leave it blank. Also add to page layouts the fields “Sync To,” “Reminder,” “Reminder Time.”

To set reminders on an open Task: select the checkbox, date and time.

To disable Project Task syncing when the Project is in Stage: Planning, uncheck the Sync Tasks Events When in Proj Planning custom setting, which will prevent Task sync until the Stage changes.

Syncing Project Tasks and Salesforce Events

Milestones PM+ Premium Edition comes with this feature enabled by default. Only new Project Tasks created and updated will be synced to Salesforce Events; those created using the Free Edition might not create and sync to Salesforce Events. To sync a Project Task to a Salesforce Event, add “Sync To” field to page layout and select “Salesforce Task” then add “Start Time” field to page layout; both must be populated on the Task to create a Salesforce Event. Also add to page layouts the fields “Sync To,” “Start Time,” “End Time,” “Duration.”

Want enhanced functionality like multi-day event sync? Check out the affordable Milestones PM+ Starter Packs for customization options.

NOTE: Automatic syncing will only occur for new Project Tasks created on new Milestones. Manual syncing can occur by adding the Sync fields on the page layout, populating them, then saving the Task record.

Milestone and Task Communication Templates

Before proceeding, the ID of the email template folder is required. Classic mode must be used: Setup>Administer>Communication Templates>Classic Email Templates. Select the folder from the dropdown (to use the default folder, switch to a different folder so the URL updates then return back) and the URL will look like

The ID follows ‘fcf=’ which would be, in this example, 00l1N000001Zu7J.

  1. Custom Setting update
    1. Open a new browser tab.
    2. Setup>Platform Tools>Custom Code>Custom Settings (Classic: Setup>Build>Develop>Custom Settings)
    3. Manage Milestones1 Settings.
    4. Click Edit, update the ‘Default Email Template Folder’ with your folder ID (00l1N000001Zu7J, from the example), save.
  2. Page layout updates
    1. Setup>Object Manager>[Task]/[Milestone] (Classic: Setup>Build>Create>Objects>[Task]/[Milestone])
    2. Page Layouts>Edit>Toolbar selector: VisualForce Pages
    3. Click and drag [MPM4_Task_Email]/[MPM4_Milestone_Email] onto the layout, save.

Template Limitations

Template type CUSTOM: email content can't be modified before sending. To edit email content before sending, use template type HTML (which requires a letterhead). Salesforce Help Doc: Email Templates

To include Milestone fields in a Task template, create a Task formula field referencing that Milestone's field value then add it to the Task email template.

Resource Management

Resource Assignment

A Resource can be either a Contact or a User. After creating a Resource record, it will be available for Tasks on the Resource lookup field. For multiple or a combination of Contacts and Users, create a Contact record for the group then a Resource record.

Resource Allocation

Resource Allocation shows resource allocation, the tasks a given resource is assigned to, and the ability to search for available resources in a given time range.

Resource allocation may be populated at the Task level by setting the ‘Daily Resource Allocation Percentage’ field. The value populated in this field should be equal to the percentage of the day that a resource will be working on the Task.

When navigating to the resource allocation tab, a user will initially see the gantt chart that displays resource allocation for the current user’s week. If the current user does not have any tasks assigned to them in the current week, a gantt chart will not be displayed. You may type in the name of one or multiple resources separated by a comma in the ‘Resource Name’ input box. You may also populate a different date range that you would like to display the allocation for (Note: the date range must be 40 days or less). After changing the input you may click the refresh button to update the gantt chart.

To display all tasks one or multiple resource are assigned to in the input date range, you may click the ‘Display Task View’ button.

If you would like to search for available resources in a given date range, you may click on the ‘Find Available Resources’ tab towards the top of the page. You may then search for available resources with the selected skill(s) in the input date range. The returned results will show all available resources and the percentage of availability they have. To denote that a resource has a given skill, you may navigate to the resources record and update the ‘Resource Skills’ field. You may modify the field definition for the ‘Resource Skills’ field to add and remove skills to/from the picklist values.

Alerts & Notifications

Alerts and Notifications are enabled by default. Email notifications will send when a Resource is assigned to a Task and when a predecessor Task is completed to the successor Task owner/Resource. To alert only successor Tasks of completed predecessor Tasks, select the custom setting ‘Disable Resource Assignment Notification’ checkbox. To disable all alerts, select the custom setting ‘Disable All Resource Email Notifications’ checkbox.


Milestone and Task page layout buttons

Milestone and Task objects have pre-built buttons that can be added/removed to the page layouts. (See above for Project buttons.)

Milestone Buttons

  • Complete Milestone. Marks the Milestone complete and navigates to its successor Milestone if it has one.
  • Move to New Project.

Task Buttons

  • Complete Task. Marks the Task complete and navigates to its successor Task if it has one.
  • Move to New Milestone.

“Create Project” Button

Available with release v6.0 and later. Before proceeding, a lookup relationship Project field is required for the object you want to put the button.

  1. Go to the object used in the Project lookup field that will have the button.
    • Setup>Object Manager>select the object used in the Project lookup field>Buttons, Links, and Actions>New Button or Link
    • Classic [standard Salesforce objects (Case, Account, etc.)/[custom objects]: Setup>Build>[Customize]/[Create>Objects]>select the object used in the Project lookup field>Buttons, Links, and Actions>New Button or Link
  2. For Display Type, select either “Detail Page Button” (recommended) or “Detail Page Link.”
  3. For Behavior, select any.
  4. For Content Source, keep as “URL.”
  5. In the large input box, paste
    and replace the ‘Object’ text with the lookup object's API name (common standard objects – Case, Account, Opportunity, etc. – have the same label and API name; custom object APIs typically end with __c)
  6. Save.
  7. Go to Page Layouts and add it.

Time Tracking

Watch the Time Tracking getting started video.

Time Entry is the grid where users save and submit their hours by week. Users can enter time on any object for multiple days. The records displayed are based on the list views of the object selected. To further filter records to display, create a new list view on the object.

Time Tracking Settings allows users to select up to five objects for their Time Entry grid.

Time Entry Approval allows users to view Time Entries submitted and approved, and for managers to approve and deny Entries.

Enforce user Profile limitations

Setup>Administration>Users (Classic: Setup>Administer>Manage Users)>Profiles>make selection>Object Permissions

  • To have users enter time on the same objects, change Time Tracking Settings tab settings to ‘Tab Hidden.’
  • To restrict Time Entry Approval to managerial users, change tab setting to ‘Tab Hidden.’
  • To hide Time Entry from users, change tab setting to ‘Tab Hidden.’

Interactive Gantt Chart

Printable Chart

When printing, be sure to select Background graphics in your Printer Options to see the full Gantt chart.

Internal/External Records

Set the internal checkbox field on a Project/Milestone/Task to true to hide it from the Gantt chart. When printing the Gantt chart and selecting external only from the drop down list, this allows you to show a client facing version of the Gantt chart and hide internal Projects/Milestones/Tasks.

Update with drag-and-drop

Drag and drop the in-line bars to update start and end dates of Milestones and Tasks, and set predecessor/successor relationships.

To turn off this feature, select the custom setting Disable Interactive Gantt Chart.

Custom Settings

Setup>Platform Tools>Custom Code (Classic: Setup>Build>Develop)>Custom Settings>Manage Milestones1 Settings>Edit

  • Show Duration on Gantt Chart
  • Show Resource on Gantt Chart
  • Show Percentage Column on Gantt Chart of Milestone and Project for "Percent Complete" Task field.

Change Task color by Status

Process Builder walkthrough to change the color of a Project Task based on the value in the Stage picklist field. These steps can be modified to make additional process builders to change the color for Milestones and Projects.

  1. Go to Process Builder: Setup>Process Automation>Process Builder (Classic: Setup>Build>Create>Workflow & Approvals>Process Builder). Click “New” in the top right.
    • Process Name (“Change Gantt Color Based on Task Change” shown in example)
    • The process starts when A record changes
    • Save
  2. Add Object
    • Object, Task

      Note: if there are multiple Task options, view Object Manager to determine the placement of the Milestones PM+ Task.*

    • Start process When a record is created or edited
    • Save
  3. Add Criteria
    • Criteria Name (“Stage is Complete” shown in example)
    • Keep Criteria for Executing Actions, Conditions are met
    • Set Conditions
      • Field, Stage

        Note: confirm here that the Milestones PM+ Task was properly selected in step 2.1; if not, create a new process.

      • Keep Operator, Equals; Type, Picklist
      • Value, Complete
    • Keep Conditions, All of the conditions are met (AND)
    • Select Advanced, check the box “Do you want to execute the actions only when specified changes are made to the record?”
    • Save
  4. Add Action under Immediate Actions to the right of True
    • Action Type, Update Records
    • Action Name (“Color change” shown in example)
    • Record Type, MPM4_BASE__Milestone1_Task__c record that started your process
    • Keep Criteria for Updating Records, No criteria-just update the records!
    • Set new field values for the records you update
      • Field, Gantt Color
      • Keep Type, String
      • Value, hex color code; no pound #sign (“B200FF” shown in example, bright purple)
    • Save
  5. Repeat steps 3 and 4 to change the color of more Stage values.
  6. Activate in the top right.

Salesforce-Process-Builder_Milestones-PMplus_Gantt_Task Salesforce-Process-Builder_Milestones-PMplus_Gantt_Task Salesforce-Process-Builder_Milestones-PMplus_Gantt_Task Salesforce-Process-Builder_Milestones-PMplus_Gantt_Task


Manage Project Plan

manage project plan

Inline Creation

Projects, Milestones, and Tasks can easily be added right in Manage Project Plan.

  • Create Tasks in-line on the Milestone Gantt chart
  • Create Milestones and Tasks in-line on the Project Gantt chart
  • Create Projects and Milestones in-line on the Program Gantt chart

Alternatively, the two buttons on the far right open a new window to add their respective object.

Toggle Existing Items

The Toggle Existing Items button hides existing items from the Manage Project Plan, allowing an easier view when adding new in-line items.

Show/Hide Fields On Manage Project Plan

To show/hide fields on the Manage Project Plan, modify the ‘Manage Project Plan Fields’ fieldsets at the Project, Milestone, and Task object levels. Note: It is recommended to keep the fields included by default in the Manage Project Plan fieldsets.

To modify the ‘Manage Project Plan Fields’ fieldset

Setup>Object Manager (Classic: Build>Create>Objects)>[Project]/[Milestone]/[Task]>Field sets


Delete Column

To hide the Delete checkbox column, select the custom setting Disable Deletion On Project Plan Page.

Premium Edition Best Practices

See Free Edition Best Practices for basic Milestones PM+ functionality best practices.

  • When creating a Project that will be used as a template:
    • Ensure that Task/Event sync is set up as desired before exporting the template to ensure all Projects created from that template will have sync enabled.
    • Mark Project Tasks that are internal as such.
  • When logging time on behalf of another person, it's recommended to do so in the Time related list on the Project Task. The Time Entry grid will only allow logging time as yourself.
  • When mass editing Project Tasks (e.g. data load), resource email notifications for Project Tasks can be turned off in custom settings to avoid unnecessary emails being sent to users. (Setup>Custom settings>Milestone1 Settings>select Disable All Resource Email Notifications and Disable Resource Assignment Notification)
  • The “Task Sync ID” field on Project Milestones is required for Task/Event sync. When performing data migrations, include this field.

Interactive Gantt chart and Process Builder

* Note on multiple Task objects. Process Builder appears to sort objects by label, then duplicates alphabetized by API. Check the order in Object Manager.



Shiny brand new content but not for everyone; only for specials.