How to Actually Set Up a Project in Primavera P6 Without Losing Your Mind
Most people approach Primavera P6 like it is a scheduling tool. It is not. It is a database with a calendar on top. If you treat it like Microsoft Project, you will spend three weeks wrestling with baselines that won't stick and schedules that keep crashing during resource leveling. The way this actually works in practice is quite different from the documentation. I worked on a $400 million infrastructure project where we had about 18,000 activities and twelve different calendars. The project controls team came in with a full Primavera P6 Project Management plan already approved, and within two weeks the schedule became unusable. The root cause was not the software. It was that someone had created every activity under the default project calendar instead of the shift-based calendars that accounted for weekend work, holiday shutdowns, and equipment maintenance windows. When the baseline was saved, it captured wrong dates across the board, and re-baselining later just compounded the error.Here is what I do now, every time, without fail. Start with the calendar layer, not the activity list. Open Primavera P6 Project Management and go to Admin > Calendars. Build your project calendar first, then your organizational calendars, then your resource calendars. Each one needs a proper working time definition. If your project runs Monday through Saturday with a half-day on Saturday, set that explicitly. The default "no holidays" setup is a trap. I learned this the hard way when a baseline calculation returned zero float on a critical path that should have had twelve weeks of buffer. The issue traced back to the default calendar having Sundays off but the actual project working Sundays with no holiday exceptions recorded.
Primavera P6 Project Management Setup Workflow
Step one is creating the WBS structure before you add a single activity. I make all the top-level deliverables, then sub-levels down to at least three or four tiers. Most teams skip this and start typing activities directly under the project level. That creates a mess that is nearly impossible to report on later. Your WBS should mirror how your stakeholders actually want to see the work broken down, not how you want to type it. Step two is setting up your codes and filters. Enterprise Project Structure codes, WBS codes, activity codes, resource codes. You need these before you begin data entry. I configure about eight to ten codes per project depending on complexity. Without them, your reporting in P6 becomes extremely limited and you end up exporting to Excel just to get basic views. Step three is resource leveling strategy. This is where most people hit their first wall. P6 resource leveling is not the same as MS Project leveling. It does not automatically resolve overallocations in a way that makes sense for construction or engineering projects. I typically run resource histograms manually first, identify the real bottlenecks, adjust durations and relationships, and only then consider running the automated level. Running it blindly on a large schedule can shift hundreds of activities and destroy your critical path overnight.
I ran into a specific problem last year on a plant turnaround project. We had a constraint on a procurement activity that said "finish no earlier than" a date set by the owner. The schedule showed twenty-three days of total float on that path, which seemed fine until I checked the lag values. There was an eighteen-day delay lag built into a finish-to-start relationship that nobody had documented. The float was fake. It looked like the schedule was healthy when the actual constraint was two weeks away from being breached. The workaround was to use the Precedence Relationship view, sort by lag descending, and audit every non-zero lag manually. I spent a morning going through forty-three relationships and found five that had undocumented lags. Once I removed those, the real critical path showed up immediately.
Get the Full Details

Common Pitfalls That Beginners Miss Completely
The first thing that catches people is the difference between a project baseline and an updated schedule. Saving a baseline does not freeze your dates. It stores a snapshot you can compare against later. People think they are locked in when they are not. If you do not protect your baseline with proper permissions in the Enterprise User Administration module, anyone with edit access can save a new baseline and overwrite the original. I always set baseline protection at the project level and restrict baseline save rights to the scheduler only. The second pitfall is activity type selection. Start-to-finish activities exist in P6 but almost nothing should ever be modeled that way. They create logic loops and calculation errors that are nearly impossible to debug. Use finish-to-start with lag instead. Start-to-start and finish-to-finish have legitimate uses like parallel work streams, but even those need careful review before you commit them to a project that will be audited later. Another counter-intuitive thing about P6 is that the critical path is not fixed. It changes after every update. The so-called critical activities shift week to week based on progress, new constraints, and updated durations. What looks critical in January may not be critical by June. I stop treating the critical path as a permanent list and instead track criticality frequency over the life of the project. An activity that appears on the critical path in more than sixty percent of monthly updates is your real long-term critical path. One that flashes on and off is just transiently sensitive.
What P6 Actually Fails At
The honest truth is that Primavera P6 Project Management is not suitable for small projects under five hundred activities. The setup overhead alone takes longer than the scheduling would. For a project like that, something lighter is faster and equally accurate. P6 also struggles with highly collaborative real-time scheduling. Multiple users editing the same schedule concurrently will hit conflicts unless you use the cloud version with proper check-out workflows. Even then, the desktop client has a habit of corrupting activity notes if two people edit the same record within thirty seconds of each other. The database backend is another weak point. Oracle and SQL Server both work, but Oracle requires significantly more licensing cost and administrative overhead. For most mid-size projects, SQL Server gives you the same functionality at roughly half the total cost. I have migrated two teams from Oracle to SQL Server and the schedules performed identically afterward with zero data loss. If you are looking to download P6, the Oracle Cloud version is available through an Oracle Cloud account, and the on-premise desktop version requires a valid Primavera license key from Oracle or an authorized reseller. There is no free tier. The cloud trial is usually ninety days. After that you are paying per user, per month, which adds up quickly on large teams. I budget approximately one hundred twenty to one hundred eighty dollars per user per year for the cloud edition depending on volume discounts. The perpetual license for the desktop version runs closer to four thousand dollars upfront per seat, though that price has shifted in recent years.
Practical Routine for Weekly Schedule Updates
Lock the schedule before you begin updates. This prevents other team members from entering conflicting data while you are working. Run progress updates through the calendar method, not the percentage-complete method unless the work is truly homogeneous. Entering actual starts and actual finishes for each activity gives you a more accurate schedule than any percentage field. P6 calculates float and critical path differently depending on the progress update method, and the calendar method aligns closest with how the schedule actually behaved on site. After progress updates, run a schedule calculation, check the variance between the current baseline and the new dates, and then export a S-curve and resource histogram for the report package. That entire workflow on a medium-complexity project takes me about forty-five minutes. Without a standardized template it takes three hours. The difference is having the filter sets, the report layouts, and the enterprise project structure pre-configured before you ever touch a specific project. The learning curve is steep but predictable. Spend two weeks on the basics and another two weeks understanding the admin side. Most people skip the admin configuration and wonder why their schedules behave inconsistently six months in. The configuration decisions you make in the first month determine whether P6 works for you or against you for the rest of the project lifecycle.
