Clarity

 View Only

 Capacity vs Demand when using Roles as Staffing Requests

Solveig Birgitte Dalan's profile image
Solveig Birgitte Dalan posted Jul 10, 2026 03:42 AM

Hello Clarity community,

We are looking for advice and best practices from organizations that use roles as part of their resource request and staffing process.

Environment

  • Clarity PPM 16.4.1.1278 (Classic UX)
  • Modern UX 16.4.1.695
  • On-Premises
  • Oracle Database

Our staffing process

We use Clarity as the enterprise solution for requesting and assigning resources across all deliveries.

The process works as follows:

  • Projects request capacity using soft allocations on predefined roles (Project Manager, Architect, Test Manager, Business Analyst, etc.).
  • In exceptional cases, requests are made directly against a named resource.
  • Resource managers review the requests and decide which named resource should fulfil the demand.
  • The selected resource is then hard allocated against the requested role.

This means that roles are primarily used as placeholders for demand until staffing decisions have been made.

Current configuration

Resources and roles are configured as follows:

  • Availability = 7.5 hours/day
  • Same base calendar for both resources and roles

Internal resources and roles:

  • Person Type = Employee
  • Resource Class = Labour
  • Transaction Class = Internal

External resources and roles:

  • Person Type = Contractor
  • Resource Class = Labour
  • Transaction Class = External

At present, Date of Hire and Date of Termination are not actively maintained.  

The challenge

We primarily use Modern UX staffing functionality and reports from the new report designer such as:

  • Capacity vs Demand by Resource
  • Investment Allocations and Assignments

The issue we are facing is that roles appear to contribute to capacity calculations because they have both availability and calendars, similar to named resources.

From a planning perspective, we see a clear distinction between:

Capacity

  • Employees
  • Active contractors

Demand

  • Employees assigned to work
  • Contractors assigned to work
  • Unstaffed role requests that have not yet been fulfilled

However, because roles have availability, and contractors have no termination date, they seem to increase total capacity and create what we believe is an overstated capacity picture.

Desired outcome

Ideally, we would like:

Available Capacity

  • Employees
  • Active contractors (only during their engagement period)

Demand

  • Employees
  • Active contractors
  • Unstaffed role allocations

In other words, role allocations should represent demand, but role availability should not create capacity.

Assumptions we would like to validate

We have been discussing a few possible approaches internally and would appreciate feedback from anyone who has experience with them:

  1. Is it technically safe or even supported to set role availability to 0 hours/day?
  2. Has anyone assigned roles to a calendar with no working days, and if so, what impact did this have on staffing requests, allocations, and reporting?
  3. Are there any unintended side effects of removing availability from roles?
  4. Can Date of Hire and Date of Termination be used as a reliable mechanism to ensure that external contractors only contribute capacity during their active engagement period?
  5. How do other organizations prevent role availability from inflating capacity while still retaining role allocations as demand?

What we have already considered

We are aware that filtering by resource type, role type, employee/contractor classifications, etc. can help in some reports. However, this generally affects the entire view.

Our challenge is that we need:

  • Capacity based only on actual people who can perform work.
  • Demand based on both staffed and unstaffed requests.

Simply filtering out roles is therefore not sufficient, because we still need role allocations to remain visible as demand until staffing requests are fulfilled. 

How have you solved this problem in your Clarity implementation?

Any lessons learned, best practices, or pitfalls to avoid would be greatly appreciated.

Thanks in advance, and apologies if I am slow to respond to follow-up questions as I will be on vacation shortly after posting this. 😊

Suman Pramanik's profile image
Broadcom Employee Suman Pramanik

The fact data behind "Capacity vs Demand by Resource" and "Investment Allocations and Assignments" stores availability and allocation on the same row for both resources and roles, tagged with an is-role flag . So role availability and named-resource availability simply get summed together. 

On your questions:

  1. Availability = 0 on roles — works, but anywhere the system divides booked/allocated hours by availability (Team tab %, staffing views, over-allocation flags), a 0-availability role will show blank/∞/100%+. Usually cosmetic since nobody manages role over-allocation, but test every screen showing a %.

  2. Zero-working-day role calendar — more risk than option 1. The scheduling engine can lean on the assignee's calendar when a task is assigned only to an unstaffed role, so a calendar with no working days could break Gantt duration calcs for role-only assignments. Pilot narrowly if you go this route.

  3. Side effect people miss: the Resource/Role Finder (same "Staff" search for both) has an availability filter/score. Zeroing role availability can change how roles rank or get filtered when someone searches to staff against them — retest your staffing search screens, not just the reports.

  4. Date of Hire/Termination — these are Resource Finder search attributes only;  They won't stop a terminated contractor's capacity from counting. What actually bounds capacity is the resource's own availability/booking end date (and Active flag) — drive that instead, via manual process, XOG/integration from HR, or a scheduled job at contract end.

  5. The real fix: don't change role master data at all — build two calculated measures in the same report instead of one filtered view 

    • Capacity = availability summed only where not-a-role (plus your contractor end-date logic)
    • Demand = allocated hours summed with no role/resource condition — covers staffed employees, staffed contractors, and unfulfilled role allocations

Hope this helps 

Solveig Birgitte Dalan's profile image
Solveig Birgitte Dalan

Thank you Suman Pramanik, this is very helpful and gives us a few additional areas to investigate.

A couple of observations from our side:

  • Our preferred solution would still be to have roles contribute to demand but not to capacity, ideally by setting role availability to 0.
  • However, in our environment (16.4.1), Modern UX does not allow us to set Availability to 0 on a role. We receive a validation error stating that availability must be greater than 0.
  • Have anyone implemented the 0-availability approach, and if so, was that done through Classic UX, Studio, XOG, API, database script, or another supported mechanism?

We are also trying to better understand a couple of points you mentioned:

DOH/DOT

We were under the impression that Date of Hire and Date of Termination participate in availability calculations, rather than being search attributes only. Can you clarify whether you are referring specifically to the Report Designer data source used by these reports, or to Clarity resource management in general?

Calculated measures

The standard reports we use are the Report Designer views Capacity vs Demand by Resource and Investment Allocations and Assignments, where capacity and demand are displayed as curves against each other.

When you suggest creating separate calculated measures:

  • Capacity = availability where is-role = false
  • Demand = allocations regardless of is-role

have you successfully implemented that directly within these standard widgets?

Or would this require a custom report, custom dashboard, or a different data provider?

My concern is that a normal filter on the is-role flag would remove roles from both capacity and demand, whereas our requirement is to exclude roles only from capacity and still retain role allocations as demand.

We would also be very interested in hearing from anyone else who has solved this problem. In particular:

  • Does anyone run with role availability effectively set to 0?
  • Has anyone used a dedicated role calendar to prevent roles from contributing capacity?
  • Has anyone successfully separated capacity (named resources only) from demand (named resources + unfilled role requests) in the standard Report Designer capacity views?

Thanks again for the insights. Any additional experiences or lessons learned would be greatly appreciated.

Suman Pramanik's profile image
Broadcom Employee Suman Pramanik

Hello again,

Thank you for the detailed follow-up. Your observations are spot-on, and providing this extra context about your reliance on the standard Modern UX views is incredibly helpful. Let's unpack your questions, as these are common design crossroads for organizations maturing their resource management processes in Clarity.

1. Using the Standard Modern UX Staffing Views You are absolutely correct to call out the limitation with standard views. My previous suggestion regarding calculated measures is a best practice for MUX Reports or external BI tools (like Power BI).

Because your teams rely on the out-of-the-box MUX Staffing workspace ("Capacity vs Demand by Resource"), we cannot inject custom is_role logic into those standard charts. A standard filter would indeed drop the demand rows you need to see. Therefore, your instinct is correct: to achieve your desired outcome in MUX, we must drive Role Capacity to zero at the data level.

2. Clarifying Date of Hire (DOH) & Date of Termination (DOT) There is a subtle but important distinction in how Clarity's staffing engine handles these dates:

  • Demand (Allocations): DOH and DOT do act as boundaries here. When you staff a resource, the system will automatically constrain their team allocation to fall within their active employment dates.
  • Capacity (Availability): DOH and DOT do not dynamically adjust a resource's underlying availability curve (the time slices that generate your capacity reports).

This is why a terminated contractor still inflates your overall capacity if their availability wasn't explicitly zeroed out.

Best Practice:
 To accurately drop terminated contractors from your capacity views, their actual Availability Curve must be end-dated. Organizations typically automate this via a XOG integration with their HR system or a Clarity process triggered during offboarding.

3. Setting Role Availability to 0 (Bypassing MUX Validation) Modern UX enforces stricter frontend UI validations (Availability > 0) than older interfaces to prevent accidental data entry errors. Organizations that successfully run with 0-availability roles typically bypass this frontend validation using supported methods:

  • Classic UX: The Classic UI often permits updating availability to 0 where MUX blocks it.
  • XOG / REST API: You can push an availability curve of 0 to a role programmatically. This is fully supported and circumvents the MUX UI restriction.

    Note: We strongly advise against using database scripts for this. Bypassing the application layer prevents the Availability Curve BLOB from calculating, which will corrupt your capacity time slices.

4. The "Zero-Working-Day Calendar" Approach Since MUX blocks 0 availability in the UI, assigning roles to a dedicated Base Calendar with zero working days is a highly creative and common alternative. You leave the role's Availability field at 7.5 hours/day (satisfying MUX), but because the calendar has 0 working shifts, the time-slicing engine generates exactly 0 Capacity.

  • The Caveat: If your project managers use the auto-scheduler (Gantt) and assign tasks only to unstaffed roles, the scheduling engine looks at the assignee's calendar. A calendar with zero working days will cause task duration calculations to fail or stretch infinitely. If you don't auto-schedule against roles, this is a very viable option.

Given your requirements, driving Role Capacity to 0 is the right path forward for your standard MUX views.

If your teams do not actively use the Gantt auto-scheduler for role-based tasks, the Zero-Working-Day Calendar is often the easiest to implement and maintain. If task scheduling is a factor, we recommend using XOG or the REST API to update your role availability curves to 0.

I hope this helps clarify the underlying mechanics and gives you a clear path forward.

Enjoy your vacation, and we look forward to hearing which approach you decide to take!

Ming Cheung's profile image
Broadcom Employee Ming Cheung

Hi Solveig,

The ability to ignore Role Availability in the MUX was added to the product in release 16.3.2: https://techdocs.broadcom.com/us/en/ca-enterprise-software/business-management/clarity-project-and-portfolio-management-ppm-on-premise/16-3-2/release-information/clarity-ppm-release-notes.html#concept.dita_8ebed6ba1fc5de89d746baa8a9be14ef035caa38_HideAvailability

This option needs to be disabled in the system options to hide the Role contributions to Availability and Remaining Availability.  Have you tried disabling this option?