Technical documentation
Gamtty’s limits, formats, behaviours and approximations, verified against the code. If anything here differs from the product, the mistake is ours — open a ticket.
Updated on August 3, 2026
Input file
Everything starts with Primavera P6's native export. These are the rules your file has to meet.
- Accepted extension
- Only .xer — P6's native export. We do not accept .mpp, .xml, .xlsx or .pdf.
- Extension case
- The extension must be lowercase: schedule.xer is accepted, SCHEDULE.XER is refused. Rename it before uploading.
- Maximum size
- 100 MiB (104,857,600 bytes). Above that the upload is refused with "File too large (100 MB max)".
- Accepted encodings
- cp1252 (Windows-1252), UTF-8 and latin-1 (ISO-8859-1), tried in that order. If none decodes the file, the conversion fails.
- Field separator
- Tab — the XER standard. Do not edit the file in a text editor before uploading.
- Decimal separator
- Period or comma. A P6 install configured for a European locale exports "298,5"; Gamtty normalises it automatically.
- Date format in the file
- YYYY-MM-DD or YYYY-MM-DD HH:MM. Dates in any other format are ignored and the field is left empty.
About accents and special characters: activity names with accents, cedillas or symbols are preserved. The three-encoding tolerance exists precisely because P6 installs in Latin locales write the file in cp1252, not UTF-8. If your file comes from a system with an unusual encoding and the conversion fails, re-export from P6 rather than converting the text by hand.
The size limit is checked at the end of the upload: a 500 MB file is transmitted in full before the refusal appears. On a slow connection, check the size first.
The reader parses 14 tables. Tables outside this list are simply ignored — they cause no error.
| Table | What Gamtty extracts |
|---|---|
| PROJECT | Project: code, name, data date |
| PROJWBS | Work breakdown structure (WBS) |
| TASK | Activities, durations, dates and float |
| TASKPRED | Predecessor relationships |
| ACTVTYPE | Activity code types |
| ACTVCODE | Activity code values |
| TASKACTV | Activity codes assigned per activity |
| UDFTYPE | User-defined field types |
| UDFVALUE | User-defined field values |
| CALENDAR | Calendars and working days |
| RSRC | Resources |
| RSRCCURV | Resource curves (21 points) |
| RSRCRATE | Resource availability limits |
| TASKRSRC | Resource assignment per activity |
How conversion works
Processing is asynchronous: the browser is not blocked waiting, and you follow progress in real time.
- The file is uploaded and a job is created.
- A background worker reads the XER and rebuilds project, WBS, activities, relationships, calendars and resources in the database.
- The spreadsheet is assembled and becomes available to download.
- Progress reaches the browser over a live connection (Server-Sent Events), with named stages — reading XER, processing hierarchy, inserting activities, building Excel.
- Uploads per minute
- Up to 20 uploads per minute per IP address. The rest of the API accepts 60 requests per minute.
- WBS level
- The root is level 1. The rebuild guards against circular references — a WBS with a cycle will not hang processing.
- Processing failure
- The job gets an error status and the technical failure message. A failed conversion does not consume your quota.
Spreadsheet and columns
There are two exporters: the standard one, available to everyone, and the custom one, on the Pro plan.
The standard spreadsheet has one sheet named Cronograma, with five columns and the WBS rebuilt as collapsible Excel groups.
| Column | Source |
|---|---|
| Activity ID | Activity code in P6 |
| Activity Name | Activity description |
| Original Duration | Original duration |
| Start | Actual start date; the planned date when there is none |
| Finish | Actual finish date; the planned date when there is none |
- WBS colours
- Seven levels with their own colour. Beyond level 7, colours 5 to 7 repeat.
- Actual dates
- Highlighted in dark green italics, to tell them apart from planned ones.
- Header
- Frozen pane and auto-filter already applied.
- Date format
- dd/mm/yyyy, written as text — not as an Excel serial date.
The Pro custom exporter offers 27 standard columns, in this order, and you choose which ones go in and in what sequence:
- Activity ID
- Activity Name
- Original Duration
- Remaining Duration
- Physical % Complete
- Total Float
- Free Float
- Activity Type
- Activity Status
- Target Start
- Target Finish
- Actual Start
- Actual Finish
- Early Start
- Early Finish
- Late Start
- Late Finish
- Primary Constraint
- Constraint Date
- Suspend Date
- Resume Date
- WBS
- Schedule % Complete
- Duration % Complete
- Units % Complete
- Labor Units % Complete
- Nonlabor Units % Complete
- Activity codes
- One column per activity code type present in your file. The list is discovered on upload, it is not fixed.
- User-defined fields (UDF)
- One column per UDF type present in the file. A schedule with 12 UDFs offers all 12.
- Total Float and Free Float
- P6 stores float in hours; the export converts to days by dividing by 8, to one decimal place.
- Units % columns
- Follow P6's formula: actual ÷ (actual + remaining) × 100. When there is no quantity on that basis, the cell is left empty instead of showing 0%.
- Preview before exporting
- Shows the first five activities with your chosen columns.
- Column widths
- Auto-fitted between 10 and 60 characters. Activity Name is left-aligned; the rest are centred.
Plans and usage limits
- Free plan
- One conversion every 45 days. It is an interval between conversions, not a monthly quota: the count starts from your last completed conversion.
- What counts as a conversion
- Each .xer file processed successfully. A failed job does not consume the interval.
- When the limit is checked
- Before the file is written. If you are still within the interval, the upload is refused and the next available date appears in the message.
- Spreadsheet mark (free)
- The first row carries a banner inviting you to Pro to remove it, and the sheet is protected against casual editing.
- Pro plan
- Unlimited conversions, no mark, and access to Workspace: S-curve, EVM indicators, DCMA assessment, Baseline Integrity, dashboards, PDF report and Dynamic Mode.
About sheet protection: it prevents casual removal through Excel's interface, it is not encryption. It is not a security measure — it is a UI brake, and we would rather say so than suggest otherwise.
If Pro access is revoked, the 45-day interval resumes from your most recent conversion, including ones made during the Pro period — it does not reset to the pre-subscription state.
Data retention and deletion
What is deleted, when, and what stays. This section is deliberately literal.
- Deleted in ~30 minutes
- The .xer file you uploaded and the standard spreadsheet generated, both removed from disk, plus the job record.
- Not deleted in that window
- The custom spreadsheet generated by the Pro exporter stays on disk. Project data — activities, WBS, relationships, resources — stays in the database: it is what feeds the Workspace modules.
- Configurable window
- The 30 minutes are the installation default and can be adjusted by the environment operator.
Why we do not delete everything: if project data were discarded along with the file, S-curve, indicators and assessments would need a fresh upload on every open, and Dynamic Mode would not exist. If you want a project gone, delete it from Workspace.
Account, access and session
- Session
- httpOnly cookie with a signed token (JWT, HS256), valid for 30 days. There is no API token for external use.
- Two-step sign-up
- A temporary 20-minute cookie covers the gap between creating the account and completing profile and verification.
- Social login
- Google, Microsoft and GitHub.
- SMS verification
- A code is sent by SMS when finishing sign-up, limited to 5 requests per minute.
- Password
- Stored with bcrypt. The form asks for at least 8 characters.
- Account created via social login
- Can set a password later without providing a previous one — because there was none.
About the 8-character minimum: today that requirement is validated by the browser, in the form. We recommend a long, unique password regardless — and preferably social login, which needs no password at all.
Output formats
- Spreadsheet
- .xlsx file (Excel 2007 or later, and any compatible editor: LibreOffice, Google Sheets, Numbers).
- File name
- The same as the uploaded file, with the extension swapped. The custom version gets a suffix.
- Report
- PDF generated on the server, with a cover, charts embedded as images and up to 13 selectable sections.
- PDF page orientation
- S-curve, Resource Charts and WBS Progress come out in landscape, because their charts are illegible squeezed into portrait. The other sections are portrait.
- Workspace exports
- Baseline Integrity exports to .xlsx, by dimension or all in one workbook.
Declared approximations and limitations
Where a calculation is an approximation, we say which and why. None of these is a defect: they are documented engineering choices, and you deserve to know them before taking a number into a meeting.
- DCMA — point 12 (Critical Path Test)
- A structural approximation: it detects an isolated critical activity, with no critical predecessor or successor, which indicates a logic break. It is not the literal test of adding 600 days and recomputing CPM. The result is flagged as an approximation on screen.
- DCMA — point 13 (CPLI)
- Critical path length is measured in calendar days. Total float already comes calculated by P6, respecting the calendar.
- DCMA — point 8 (High Duration)
- Applies the 44-day threshold without the Rolling Wave exception from the November 2009 revision.
- DCMA — point 5 (Hard Constraints)
- Uses P6's constraint set, not the MS Project-oriented list that appears in some versions of the checklist.
- S-curve — holidays
- Distribution uses the calendar's working-weekday pattern (Monday to Friday, or 7 days) but ignores the holiday list. P6 "24h" calendars post every weekend as an exception — thousands of entries — and honouring them would exclude nearly every day in the project, collapsing the curve. For a monthly S-curve, individual public holidays have negligible impact.
- Schedule % Complete
- Approximated by calendar days between early start and early finish. Milestones read as 100% the moment their date arrives.
- Float in hours
- P6 stores float in hours. We convert to days by dividing by 8 across the interface and the exports.
- Resource identifiers
- P6's internal resource id is unique within each file, not across files. When comparing two revisions, resources are reconciled by name.
- Resource levelling
- The Levelling and Combined models are different readings of the same histogram data; there is no separate levelling calculation behind them.
Error messages
What each refusal means and what to do.
| Message | Cause and fix |
|---|---|
| Only .xer files are accepted | The extension is not lowercase .xer. Rename the file or re-export from P6. |
| File too large (100 MB max) | The file exceeds 100 MiB. Export a smaller slice of the schedule or drop projects you do not need from the export. |
| Free plan limit: 1 conversion every 45 days | You are within the interval between conversions. The next available date comes in the message; the Pro plan removes the limit. |
| Available only on the Pro plan | The feature belongs to Workspace. Subscribe to Pro to unlock it. |
| Job not found or not yet completed | The conversion is still running, or the job has passed the 30-minute retention window. |
| File not found on server | The retention window expired and the file was deleted. Convert again. |
| Invalid or expired code | The SMS code expired or was mistyped. Request a new one. |
| Not authenticated | The session expired or the cookie was blocked. Sign in again and check that your browser accepts cookies from the site. |
Error during processing: when the failure happens while reading the file, the message shown is the technical exception text, not a curated one. If it makes no sense, open a ticket with the file name and the message — that is the fastest route.
Browser requirements
- A current browser with native ES module support — recent Chrome, Edge, Firefox or Safari.
- JavaScript enabled: the application is a single-page interface.
- Site cookies allowed. The session depends on a cookie; blocking it prevents sign-in.
- A live connection (Server-Sent Events) to follow conversion progress in real time.
- File drag-and-drop, if you prefer it to the file picker.
- Dashboard editor
- Only available on desktop, on screens of 1024 px or wider. Building uses drag-and-drop on a 12-column grid, which becomes unusable on a small screen. Viewing dashboards works at any size.
- Languages
- Portuguese and English, including API error messages. The language follows your choice on the site.
One honest caveat: the PDF report content is generated on the server and remains in Portuguese even with the interface in English. The titles of the 14 DCMA points also come from the server in Portuguese.
API reference
The API is internal, used by the application itself. There is no API token for external integration: authentication is by session cookie, and there is no key you can issue. This reference is here to explain product behaviour, not to automate from outside.
All paths are prefixed with /api/v1. Workspace routes require an authenticated session and the Pro plan.
| Method and route | What it does | Requires |
|---|---|---|
| POST /upload | Receives the .xer, validates extension, plan interval and size, and starts the conversion | Session |
| GET /jobs/{id}/status | Current conversion status | Session |
| GET /jobs/{id}/progress | Real-time progress (live connection) | Session |
| GET /jobs/{id}/download | Downloads the standard spreadsheet | Session |
| GET /jobs/{id}/available-fields | Standard columns, activity codes and UDFs available in the file | Pro |
| GET /jobs/{id}/preview | Preview of five activities with the chosen columns | Pro |
| POST /jobs/{id}/export | Generates the custom spreadsheet | Pro |
| GET /jobs/{id}/download-custom | Downloads the custom spreadsheet | Session |
| GET, POST /user-projects | Lists and creates Workspace projects | Pro |
| GET, POST, DELETE /user-projects/{id}/schedules | The project's schedule library, and which one is active | Pro |
| GET /user-projects/{id}/scurve | S-curve of the baseline and current pair | Pro |
| GET /user-projects/{id}/kpis | EVM indicators | Pro |
| GET /user-projects/{id}/dcma-assessment | 14-point DCMA assessment | Pro |
| GET /user-projects/{id}/baseline-adherence | Baseline Integrity across six dimensions | Pro |
| GET, POST, PUT, DELETE /user-projects/{id}/dashboards | Custom dashboards | Pro |
| GET /user-projects/{id}/general-report/pdf | General report as PDF | Pro |
| POST /auth/signup, /auth/login, /auth/logout | Sign-up, sign-in and sign-out | — |
| GET /auth/me | Current session data | Session |
| GET, POST /support/tickets | Support tickets | Session |
Rate limits: 60 per minute per IP address overall, 20 per minute on file upload, 10 per minute on sign-up, sign-in and password change, and 5 per minute on sending an SMS code.