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 typeCloud (Unanet GovCon REST API)
AuthenticationUsername + password (bearer token, 20-minute TTL)
Setup complexityModerate
Configurable fieldsProject status mappings, inactive phase mapping, project status exclusions
PrerequisiteUnanet 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 TypeDescription
MembersEmployee records (name, email, username, default role, archive status)
Member RolesMember-to-labor-category assignments derived from the employee's labor category
ClientsProject organization records
ProjectsContract / project records (title, code, status, organization, budget, billable flag)
PhasesTasks under projects with multi-level parent linkage
Time EntriesTimeslip records (hours, billable, description, hourly rate, status)
RolesLabor categories
Bill RatesPer-employee bill rate history (rate, classification, effective dates)
Cost RatesPer-employee cost rate history (paired with bill rates from the same endpoint)
Member Project Bill RatesOverride bill rates per (employee × project × phase) from people-assignments
Member Project RolesPer-(employee × project × phase) role assignments from people-assignments
Rate GroupsOne per project (synthesized from [code] - [title])
Entity Rates / RatesPer-(role × project) rates from project labor-categories
PortfoliosSynthesized from each project's Project Lead

This list may expand as new features are added.

Not Synced

Data TypeDescription
Project Manager (Mosaic field)The projectManager field is loaded but not assigned to a Mosaic Project Manager field
Bill Rate from Employee recordBill/cost rates do not come from the Employee record — they come from /people/{id}/rates
Labor Category on Time EntriesTime entries' own labor category is loaded but not surfaced as a Mosaic field
Cost Rates from labor categoriesProject-level labor category cost rates are not synced (only bill rates are)
ActivitiesNo activity entity is fetched
Work Plans / Budget EstimatesResource planning data is not synced
Project member cost rate overridesOnly 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.

SymbolMeaningExample
.API field referencePerson.firstName = the firstName field on the Person resource
Values combined into one composite valuecodetitle = combined into [code] - [title]
>Fallback priority — use the first available valuerevStartDate > origStartDate = use revised; if null, use original
orConfigurable — an integration setting selects whichStatus mappings select different Mosaic statuses


Members

What Syncs to MosaicWhere It Comes From in Unanet GovCon
Employee IDThe unique Unanet person identifier
First NameThe person's first name
Middle NameThe person's middle initial
Last NameThe person's last name
EmailThe person's email address
UsernameThe person's Unanet username
Default RoleThe person's labor category (linked to a Role)
Is ArchivedDerived from the person's active flag — active = false = archived
Created / ModifiedWhen 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 MosaicWhere It Comes From in Unanet GovCon
Member Role IDA composite of the employee and labor category keys
EmployeeThe employee this role belongs to
RoleThe 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 MosaicWhere It Comes From in Unanet GovCon
Client IDThe unique Unanet project organization identifier
Client TitleThe organization name
Client NumberThe organization code

Source: GET /rest/assigning/projects/organizations.


Projects

What Syncs to MosaicWhere It Comes From in Unanet GovCon
Project IDThe unique Unanet project identifier
Project TitleThe project title
Project NumberThe project code
ClientThe project organization linked to the project
DescriptionProject comments
CurrencyThe project currency code
Start DateThe revised start date (falling back to the original start date); sentinel dates 1900-01-01 and 2099-12-31 are nulled
End DateThe revised end date (falling back to the original end date); same sentinel handling
FeeThe project's labor bill budget
StatusThe project status, mapped to Mosaic's status values via configurable mappings
Is BillableDerived from the project type — billable project types result in billable projects
Rate GroupThe project itself acts as a rate group (when bill rate source is Labor Category)
Billing TypeEmployee when bill rate source is Person; Role otherwise (i.e., Labor Category or Override)
PortfolioThe project lead is mapped to a Portfolio
Created / ModifiedWhen the project record was created and last updated

Project Manager

Mosaic does not populate a Project Manager field. The projectLead field is used to derive a Portfolio instead.

Project Status Exclusion

Projects whose status name is in projectCustomStatusExclusion are skipped entirely.


Phases

What Syncs to MosaicWhere It Comes From in Unanet GovCon
Phase IDThe unique Unanet task identifier
Phase TitleThe task name
Phase NumberThe task number
ProjectThe project the task belongs to
ParentThe parent task (if nested), or the project (if top-level)
Start Date / End DateThe revised dates (falling back to original); sentinel dates nulled (same handling as projects)
FeeThe task's labor bill budget
Is BillableInherited from the parent project's billable project type
StatusActive if the task is active; otherwise the configured "inactive phase" mapping
Budget Fee TypeDerived from the project's billing type — FP (Fixed Price) → Use Entered Budget; TM → Total Spent and Planned Time

Time Entries

What Syncs to MosaicWhere It Comes From in Unanet GovCon
Time Entry IDThe unique Unanet timeslip identifier
DateThe work date
HoursThe hours worked
DescriptionThe timeslip comments
EmployeeThe owner of the parent timesheet
ProjectThe project the time was logged against
PhaseThe task the time was logged against (null if logged directly to the project)
Hourly RateThe bill rate on the timeslip
BillableDerived from the project type — billable project types result in billable time
StatusRejected if a rejection reason exists; Approved if the timesheet status is APPROVING; otherwise Submitted
Created / ModifiedWhen the timeslip was posted and last updated

Roles

What Syncs to MosaicWhere It Comes From in Unanet GovCon
Role IDThe unique Unanet labor category identifier
Role NameThe labor category name
DescriptionThe labor category description
Is ArchivedDerived from the labor category active flag — active = false = archived

Bill Rates

What Syncs to MosaicWhere It Comes From in Unanet GovCon
Bill Rate IDThe unique Unanet rate record identifier
EmployeeThe employee this rate applies to
Rate AmountThe bill rate amount
DescriptionThe rate classification (e.g., NON_EMPLOYEE)
Start / End DatesThe 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 MosaicWhere It Comes From in Unanet GovCon
Cost Rate IDThe unique Unanet rate record identifier
EmployeeThe employee this cost rate applies to
Hourly RateThe cost rate amount
Rate TypeAlways Hourly
DescriptionThe rate classification
Start / End DatesThe effective date range for the rate

Bill rates and cost rates come from the same endpoint — each rate record contains both billRate and costRate fields.


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 MosaicWhere It Comes From in Unanet GovCon
EmployeeThe person assigned to the project
ProjectThe project the assignment is for
PhaseThe task the assignment is for (if set)
Rate AmountThe override bill rate
Start / End DatesThe effective date range for the override

Only assignments where billRateSource === OVERRIDE and billRate is set are synced.


Member Project Roles

What Syncs to MosaicWhere It Comes From in Unanet GovCon
EmployeeThe person assigned to the project
ProjectThe project the assignment is for
PhaseThe task the assignment is for (if set)
RoleThe labor category on the assignment
Start / End DatesThe effective date range for the assignment

For projects whose billRateSource === LABOR_CATEGORY, all people-assignments with a labor category sync. For other projects, only OVERRIDE assignments 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 MosaicWhere It Comes From in Unanet GovCon
Rate Group IDThe project key
Rate Group NameA composite of project code and title: {code} - {title}
Active Entity TypeAlways 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 MosaicWhere It Comes From in Unanet GovCon
Rate IDA composite of the labor category key and start date
Rate GroupThe project (the project itself is the rate group)
RoleThe labor category
Rate AmountThe bill rate from the project labor category rate row
DescriptionA composite display label: [{projectCode}]: {laborCategoryName} - {beginDate} (with - {endDate} appended when end date is set)
Start / End DatesThe effective date range (end date derived from the next entry's start)
Is Cost RateAlways 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 MosaicWhere It Comes From in Unanet GovCon
Portfolio IDThe Project Lead's employee identifier
Portfolio NameThe Project Lead's name

A portfolio is only created for projects that have a projectLead set. The project's targetPortfolioId is the same Project Lead key.


Configurable Settings

SettingPurposeDefault
projectCustomStatusExclusionSkip projects whose Unanet status name is in this list[]
customProjectStatusesToProposalMappingMap custom Unanet statuses → Mosaic Proposal[]
customProjectStatusesToActiveMappingMap custom Unanet statuses → Mosaic Active[]
customProjectStatusesToHoldMappingMap custom Unanet statuses → Mosaic Hold[]
customProjectStatusesToCompleteMappingMap custom Unanet statuses → Mosaic Complete[]
inactivePhaseStatusMappingMosaic phase status when Unanet active = falseHold
overrideNewestRateAlways 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

TopicLink
Unanet Help CenterUnanet Help
Unanet WebsiteUnanet

Related Documentation