Unanet GovCon Integrated Data
Field mapping reference for Unanet GovCon
What this page covers: A complete reference mapping every Unanet GovCon field to its Mosaic equivalent. Use this guide when configuring your integration, verifying synced data, or troubleshooting discrepancies.
| Integration type | Cloud (Unanet GovCon REST API) |
| Authentication | Username + password (bearer token, 20-minute TTL) |
| Setup complexity | Moderate |
| Configurable fields | Project status mappings, inactive phase mapping, project status exclusions |
| Prerequisite | Unanet GovCon Integration Setup |
How Data Flows
Unanet GovCon (REST API) → Mosaic Sync Engine (field mapping) → Mosaic (12 synced data types)
The integration uses the Unanet GovCon REST API to query People, Project Organizations, Projects, Tasks, Time, Labor Categories, Person Rates, Project People-Assignments, and Project Labor-Categories. Portfolios and Rate Groups are derived client-side from project records.
Data flows one way only — Unanet → Mosaic. Records are read-only from Mosaic's perspective.
Integrated Data Types
The integration syncs 12 data categories from Unanet GovCon into Mosaic:
| Data Type | Description |
|---|---|
| Members | Employee records (name, email, username, default role, archive status) |
| Member Roles | Member-to-labor-category assignments derived from the employee's labor category |
| Clients | Project organization records |
| Projects | Contract / project records (title, code, status, organization, budget, billable flag) |
| Phases | Tasks under projects with multi-level parent linkage |
| Time Entries | Timeslip records (hours, billable, description, hourly rate, status) |
| Roles | Labor categories |
| Bill Rates | Per-employee bill rate history (rate, classification, effective dates) |
| Cost Rates | Per-employee cost rate history (paired with bill rates from the same endpoint) |
| Member Project Bill Rates | Override bill rates per (employee × project × phase) from people-assignments |
| Member Project Roles | Per-(employee × project × phase) role assignments from people-assignments |
| Rate Groups | One per project (synthesized from [code] - [title]) |
| Entity Rates / Rates | Per-(role × project) rates from project labor-categories |
| Portfolios | Synthesized from each project's Project Lead |
This list may expand as new features are added.
Not Synced
| Data Type | Description |
|---|---|
| Project Manager (Mosaic field) | The projectManager field is loaded but not assigned to a Mosaic Project Manager field |
| Bill Rate from Employee record | Bill/cost rates do not come from the Employee record — they come from /people/{id}/rates |
| Labor Category on Time Entries | Time entries' own labor category is loaded but not surfaced as a Mosaic field |
| Cost Rates from labor categories | Project-level labor category cost rates are not synced (only bill rates are) |
| Activities | No activity entity is fetched |
| Work Plans / Budget Estimates | Resource planning data is not synced |
| Project member cost rate overrides | Only project member bill rate overrides are synced |
Reading the Field Mapping Tables
Symbol legend for technical tables
The Technical Reference tabs below use a shorthand notation for API sources. Read this legend before reviewing the mappings.
| Symbol | Meaning | Example |
|---|---|---|
. | API field reference | Person.firstName = the firstName field on the Person resource |
• | Values combined into one composite value | code • title = combined into [code] - [title] |
> | Fallback priority — use the first available value | revStartDate > origStartDate = use revised; if null, use original |
or | Configurable — an integration setting selects which | Status mappings select different Mosaic statuses |
Members
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Employee ID | The unique Unanet person identifier |
| First Name | The person's first name |
| Middle Name | The person's middle initial |
| Last Name | The person's last name |
| The person's email address | |
| Username | The person's Unanet username |
| Default Role | The person's labor category (linked to a Role) |
| Is Archived | Derived from the person's active flag — active = false = archived |
| Created / Modified | When the person record was created and last modified |
Bill rates and cost rates do not come from the Member record. They come from a separate endpoint — see Bill Rates and Cost Rates.
Member Roles
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Member Role ID | A composite of the employee and labor category keys |
| Employee | The employee this role belongs to |
| Role | The employee's labor category |
Member Roles only sync when the employee has a labor category assigned. Member Role records do not have start or end dates.
Clients
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Client ID | The unique Unanet project organization identifier |
| Client Title | The organization name |
| Client Number | The organization code |
Source:
GET /rest/assigning/projects/organizations.
Projects
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Project ID | The unique Unanet project identifier |
| Project Title | The project title |
| Project Number | The project code |
| Client | The project organization linked to the project |
| Description | Project comments |
| Currency | The project currency code |
| Start Date | The revised start date (falling back to the original start date); sentinel dates 1900-01-01 and 2099-12-31 are nulled |
| End Date | The revised end date (falling back to the original end date); same sentinel handling |
| Fee | The project's labor bill budget |
| Status | The project status, mapped to Mosaic's status values via configurable mappings |
| Is Billable | Derived from the project type — billable project types result in billable projects |
| Rate Group | The project itself acts as a rate group (when bill rate source is Labor Category) |
| Billing Type | Employee when bill rate source is Person; Role otherwise (i.e., Labor Category or Override) |
| Portfolio | The project lead is mapped to a Portfolio |
| Created / Modified | When the project record was created and last updated |
Project Manager
Mosaic does not populate a Project Manager field. The
projectLeadfield is used to derive a Portfolio instead.
Project Status Exclusion
Projects whose status name is in
projectCustomStatusExclusionare skipped entirely.
Phases
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Phase ID | The unique Unanet task identifier |
| Phase Title | The task name |
| Phase Number | The task number |
| Project | The project the task belongs to |
| Parent | The parent task (if nested), or the project (if top-level) |
| Start Date / End Date | The revised dates (falling back to original); sentinel dates nulled (same handling as projects) |
| Fee | The task's labor bill budget |
| Is Billable | Inherited from the parent project's billable project type |
| Status | Active if the task is active; otherwise the configured "inactive phase" mapping |
| Budget Fee Type | Derived from the project's billing type — FP (Fixed Price) → Use Entered Budget; TM → Total Spent and Planned Time |
Time Entries
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Time Entry ID | The unique Unanet timeslip identifier |
| Date | The work date |
| Hours | The hours worked |
| Description | The timeslip comments |
| Employee | The owner of the parent timesheet |
| Project | The project the time was logged against |
| Phase | The task the time was logged against (null if logged directly to the project) |
| Hourly Rate | The bill rate on the timeslip |
| Billable | Derived from the project type — billable project types result in billable time |
| Status | Rejected if a rejection reason exists; Approved if the timesheet status is APPROVING; otherwise Submitted |
| Created / Modified | When the timeslip was posted and last updated |
Roles
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Role ID | The unique Unanet labor category identifier |
| Role Name | The labor category name |
| Description | The labor category description |
| Is Archived | Derived from the labor category active flag — active = false = archived |
Bill Rates
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Bill Rate ID | The unique Unanet rate record identifier |
| Employee | The employee this rate applies to |
| Rate Amount | The bill rate amount |
| Description | The rate classification (e.g., NON_EMPLOYEE) |
| Start / End Dates | The effective date range for the rate |
Bill rates are fetched from a per-employee endpoint, not from the employee record itself.
Cost Rates
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Cost Rate ID | The unique Unanet rate record identifier |
| Employee | The employee this cost rate applies to |
| Hourly Rate | The cost rate amount |
| Rate Type | Always Hourly |
| Description | The rate classification |
| Start / End Dates | The effective date range for the rate |
Bill rates and cost rates come from the same endpoint — each rate record contains both
billRateandcostRatefields.
Member Project Bill Rates
Override bill rates per (employee × project × phase) — used when a specific person has a different rate on a specific project than their default rate.
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Employee | The person assigned to the project |
| Project | The project the assignment is for |
| Phase | The task the assignment is for (if set) |
| Rate Amount | The override bill rate |
| Start / End Dates | The effective date range for the override |
Only assignments where
billRateSource === OVERRIDEandbillRateis set are synced.
Member Project Roles
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Employee | The person assigned to the project |
| Project | The project the assignment is for |
| Phase | The task the assignment is for (if set) |
| Role | The labor category on the assignment |
| Start / End Dates | The effective date range for the assignment |
For projects whose
billRateSource === LABOR_CATEGORY, all people-assignments with a labor category sync. For other projects, onlyOVERRIDEassignments with a labor category sync.
Rate Groups
A Rate Group is created for every project synced from Unanet — there is no separate Rate Group entity in Unanet GovCon. The Project's targetRateGroupId is set to the Rate Group only when the project's bill rate source is Labor Category.
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Rate Group ID | The project key |
| Rate Group Name | A composite of project code and title: {code} - {title} |
| Active Entity Type | Always Role |
Entity Rates / Rates
Each project's labor categories produce one Entity Rate and one Rate per (project × role × effective period). End dates are derived as the day before the next rate's start date; the latest rate has no end date.
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Rate ID | A composite of the labor category key and start date |
| Rate Group | The project (the project itself is the rate group) |
| Role | The labor category |
| Rate Amount | The bill rate from the project labor category rate row |
| Description | A composite display label: [{projectCode}]: {laborCategoryName} - {beginDate} (with - {endDate} appended when end date is set) |
| Start / End Dates | The effective date range (end date derived from the next entry's start) |
| Is Cost Rate | Always false |
Project-level cost rates from labor categories are loaded by the API but are not synced as Mosaic cost rate records — only bill rates flow through.
Portfolios
Portfolios are synthesized from each project's Project Lead — Unanet GovCon does not have a dedicated Portfolio entity. A portfolio is created per unique Project Lead.
| What Syncs to Mosaic | Where It Comes From in Unanet GovCon |
|---|---|
| Portfolio ID | The Project Lead's employee identifier |
| Portfolio Name | The Project Lead's name |
A portfolio is only created for projects that have a
projectLeadset. The project'stargetPortfolioIdis the same Project Lead key.
Configurable Settings
| Setting | Purpose | Default |
|---|---|---|
projectCustomStatusExclusion | Skip projects whose Unanet status name is in this list | [] |
customProjectStatusesToProposalMapping | Map custom Unanet statuses → Mosaic Proposal | [] |
customProjectStatusesToActiveMapping | Map custom Unanet statuses → Mosaic Active | [] |
customProjectStatusesToHoldMapping | Map custom Unanet statuses → Mosaic Hold | [] |
customProjectStatusesToCompleteMapping | Map custom Unanet statuses → Mosaic Complete | [] |
inactivePhaseStatusMapping | Mosaic phase status when Unanet active = false | Hold |
overrideNewestRate | Always push the newest member bill rate (consumed downstream) | false |
Adjust these via your Customer Success Manager.
Troubleshooting & FAQ
Where does the project's Project Manager go in Mosaic?
The projectManager field is loaded from Unanet but not assigned to a Mosaic Project Manager field. The projectLead field is used to derive a Mosaic Portfolio instead.
Why aren't bill rates and cost rates on the Member record?
Unanet GovCon stores rates in a separate /people/{key}/rates endpoint, not on the Person record. Each rate record contains both billRate and costRate fields, which become Mosaic Bill Rates and Cost Rates respectively.
Why aren't certain projects syncing?
Projects whose status name appears in projectCustomStatusExclusion are skipped entirely. Adjust this setting to include those projects.
Why isn't a phase's labor budget for expenses syncing?
Only Task.laborBillBudget is mapped to Mosaic's Fee field. The separate expBillBudget field is not synced.
Are cost rates from project labor categories synced?
No. Only bill rates from project labor categories sync (as Entity Rates and Rates). The corresponding costRate field on each rate row is not surfaced.
I need a data source or field that isn't listed here.
Any integration not listed in this documentation is considered a customization and is charged at an hourly rate. For more information, see Integration Requests.
Unanet Documentation Links
| Topic | Link |
|---|---|
| Unanet Help Center | Unanet Help |
| Unanet Website | Unanet |
Related Documentation
Updated 19 days ago
