Software boundaries and limits
Overview
- Altus is ready for scale. The numbers below labelled "Assured Performance Envelope" are tested minimums for smooth UX—not hard ceilings. Altus is implemented on the Microsoft Dataverse platform which supports much larger datasets with no hard limits1
- Going beyond? We regularly support customers above these volumes. If you expect to exceed them by a wide margin, we recommend a quick solution/tenant review (capacity, indexing, view filters, automation patterns) to lock in great performance.
Task management
Assured Performance Envelope (Altus‑tested)
Detail | Assured envelope |
---|---|
Number of projects (active) | 5,000 |
Tasks per project read-only | 1,500 |
Task edits in a single save operation | 300 |
Baselines per project | 20 |
Platform guidance & maximums
- Dataverse scales by capacity (Database/File/Log), not by a fixed row count; there isn’t a platform limit on “number of projects” as such. Plan environments with adequate Dataverse capacity and monitoring.
- Queries and grids use paging. Default & maximum page size is 5,000 rows for standard tables (500 for elastic tables).
What this means: If you run extremely large portfolios or resource pools, Altus will still function. Use view filters, paging, and capacity sizing to keep the UX snappy.
- For automation/integrations that push a lot of changes, be mindful of Dataverse Service Protection API limits.
Resourcing
Detail | Assured envelope |
---|---|
Dataverse quota consumed per resource year | ~170 KB / Resource / Capacity‑Year |
Default capacity horizon | 4 years per resource (1 past, 3 future) |
Maximum capacity horizon | 11 years per resource (typically 1 past, 10 future) |
Maximum supported resources with calendars (at default horizon) | 2,000 resources with 4 years of planning |
Single‑view size for edit/save in resource grids | 45 resource‑years total in the visible view |
Timesheeting
Detail | Assured envelope |
---|---|
Rows per timesheet | 100 rows |
Typical Dataverse storage consumed by a timesheet with ~100 populated rows | ~375 KB / Timesheet |
Scheduled processes & automation
Detail | Assured envelope / platform rule |
---|---|
Max results retrieved in a single Altus scheduled process step | 500 |
Maximum runtime of synchronous Dataverse operation | 2 minutes |
Process log retention | 30 days |
Name fields
Table/Entity | Name column | Character limit | Rationale |
---|---|---|---|
Bookable Resource | Name | 358 | External sync scenarios may append the source system name. |
Portfolio | Name | 255 | Can be owned by a Microsoft 365 Group; align with M365 naming policy conventions. See M365 Groups & Teams naming policy and Entra ID enforcement. |
Program | Name | 255 | Same reason as Portfolio. |
Project | Name | 255 | Same reason as Portfolio. |
Proposal | Name | 255 | Proposals can be promoted to Projects. |
Task | Name | 256 | Keeps task names manageable and readable. |
- Text columns up to 4,000 characters; Multiline up to 1,048,576.
- For Microsoft 365 Group naming policies and constraints, see M365 Groups & Teams naming policy and Entra ID group naming policy.
Dataverse platform maximums (quick reference)
Area | Dataverse maximum / behavior | Reference |
---|---|---|
Data capacity | Tenant storage is pooled across Database/File/Log | Dataverse capacity |
Query page size | Max 5,000 rows/page for standard tables (500 elastic) | Paging (FetchXML) |
API protections | Throttling under load; implement retries/backoff | Service protection |
Synchronous operation time | 2 minutes max per operation | Analyze plug‑in performance |
Text columns | Up to 4,000 (single‑line); 1,048,576 (multiline) | Column data types |
File column | Up to 10 GB/file | File data |
Image column | Up to 30 MB/image | Image data |
Attachments/Notes | Max 128 MB | Manage email settings |