**Background**  

I'm building a project Gantt, involving multiple teams. In the past I've had a good experience with a Gantt as a means of planning a project but not so much as a means of tracking a project's progress.

I'm trying to figure out what would be the best way to reflect the integration points and dependencies between teams and then track it as easily as possible.

**Current approach**  

Right now, what I have in mind is creating tasks for teams' activities and after each task that indicates a delivery to another team I creating a milestone, with the task as its predecessor. The receiving team's task depends on the milestone.

Example:  

```
==== [Team A develops]
   +-> * [Team A development complete]
       +-> ==== [Team B develops]

```

The downside of this approach is that the Gantt gets cluttered with a lot of milestones. The upside is that I get more control down the road around team delivery tracking and an easier way to filter the deliveries of each of the teams. Also, a side benefit is to avoid messing with weird task updates, splits, etc. I would ask for updates to estimated delivery dates.

I'd be happy to hear your thoughts and ideas around this issue. How would you approach this?
['https://pm.stackexchange.com/questions/2109', 'https://pm.stackexchange.com', 'https://pm.stackexchange.com/users/44/']
I've used (and like) a section at the top of the schedule for milestones. This keeps the key milestones visible and easily reportable. 

If you really want to use milestones to show links between teams, I would suggest first that the teams -really- be separate teams and not just different roles. For teams that each manage their own schedule, I have found milestone linking like you are describing moderately helpful. Here is how I have done it 

Warning - this requires a -ton- of overhead to maintain, I strongly suggest you really understand why this level of tracking is needed...

Give each team their own project file. Each project file has three major "sections"

* **Published Milestones** - List of milestones from the local schedule file that are reported up and to other projects
* **External Milestones** -List of milestones from other teams or external sources.
* **Schedule** - where the actual tasks are for the team

You then control a master schedule that takes each team's schedule and "creates the links" between their milestones. That is, you need to use the "Published Milestones" to drive the "External Milestones" across all of the teams' project files. This is time consuming and for five teams takes a good few days to set up, plus the communication needed to ensure everyone understands the structure.
Each week (or whatever your timeframe is for managing the schedule) you need to pull in the teams' projects into the master, observe the links changing, and resolve the issues. 

Again, I can't stress enough that this requires a -huge- commitment to the project schedule. I wouldn't attempt this without some of the teams each having their own PM who understands this and can help you work with it.
If you can live without a Gantt chart, you might just keep a list of Excel milestones that can be used to communicate across the teams and trust each team to update the milestone list. This gives you 90% of the benefit with 2% of the effort.
I tend to use milestones to mark key meetings or approvals of work. If there is some sort of formal cut-over process, make it a milestone.