Unanet A/E Cloud Integrated Data
Field mapping reference for Unanet A/E Cloud
What this page covers: A complete reference mapping every Unanet A/E Cloud field to its Mosaic equivalent. Use this guide when configuring your integration, verifying synced data, or troubleshooting discrepancies.
| Integration type | Cloud (Unanet A/E REST API) |
| Authentication | API Key (HTTP Basic with apiKey:) |
| Setup complexity | Moderate |
| Configurable fields | Limited — fee source, status mappings, archive behavior, portfolio source |
| Prerequisite | Unanet A/E Cloud Integration Setup |
How Data Flows
Unanet A/E Cloud (REST API) → Mosaic Sync Engine (field mapping) → Mosaic (12 synced data types)
The integration uses the Unanet A/E REST API at https://<subdomain>.infocusapp.com/api/<database> to query Employees, Firms, Projects, Phases (Tasks), Timesheets, Job Titles (Roles), Rate Schedules, Org Units (Departments), and Company Addresses (Offices). Bill Rates and Portfolios are derived client-side from other entities (no dedicated endpoints).
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 A/E Cloud into Mosaic:
| Data Type | Description |
|---|---|
| Members | Employee records (name, email, location, department, archive status) |
| Clients | Firm records (title combines firm code and firm name) |
| Projects | Project records (title, code, fee, dates, billable derivation, rate group, portfolio) |
| Phases | Task / sub-project records under projects (multi-level parent linkage supported) |
| Time Entries | Timesheet items with hours, billable derivation, hourly rate, and notes |
| Roles | Job titles (name composed of [code]: name) |
| Rate Groups | Rate Schedules (one per rate ID; archived flag from isactive) |
| Rates | Rate Schedule items per role with effective dates (bill and cost rates) |
| Entity Rates | Per-role rate assignments inside a rate group |
| Bill Rates | Per-employee bill rate history synthesized from the employee's billrate field |
| Departments | Org Units (organizational hierarchy) |
| Offices | Company Addresses (office locations with full address) |
| Portfolios | Synthesized from each project's Project Manager (when configured) |
This list may expand as new features are added.
Not Synced
| Data Type | Description |
|---|---|
| Member Roles | Per-employee role assignments are not synced (Unanet A/E does not store start/end dates required by Mosaic) |
| Member Project Roles | Per-project role overrides are not synced |
| Member Project Bill Rates | Employee-specific (per-project) rate assignments are not synced |
| Member Cost Rates (separate entity) | Cost rates flow through the Rates entity (when isbillrate=false); there is no separate cost rate entity |
| Project Manager (Mosaic field) | Loaded but not assigned to a Mosaic Project Manager field — used only to derive Portfolios |
| Job Title on Member | Loaded but not surfaced — assignments are managed through the Roles entity instead |
| Office assignment to Members | Offices sync as standalone records but are not linked to employees |
| Work Plans / Budget Estimates | Resource planning data is not synced |
| Activities | No activity entity is fetched |
| Currency | Currency codes are not surfaced as Mosaic fields |
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 | firmcode • firmname = combined into [firmcode]: firmname |
> | Fallback priority — use the first available value | revStartDate > origStartDate = use revised; if null, use original |
or | Configurable — an integration setting selects which | fixedfee or laborbudget = your configuration chooses one |
Members
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Employee ID | The unique Unanet employee identifier |
| First Name | The employee's first name |
| Middle Name | The employee's middle name |
| Last Name | The employee's last name |
| The employee's work email (joined from the Contacts table) | |
| Department | The employee's organizational unit (orgid) |
| Location | The employee's address (street, city, state, zip, country) joined from the Addresses table |
| Is Archived | Derived from the employee's active flag — isactive = false = archived |
| Created / Modified Date | When the employee record was created and last modified |
Job title is not synced as a Member field. Employee roles are managed through the Roles entity. Mosaic does not import per-member role associations from Unanet A/E because Unanet does not provide start/end dates that Mosaic requires.
Clients
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Client ID | The unique Unanet firm identifier |
| Client Title | A composite of the firm code and firm name: [firmcode]: firmname |
| Client Number | The firm code |
| Created / Modified | When the firm record was created and last modified |
| Is Archived | Always false — Unanet's firms response does not include an active flag |
The composite title prevents collisions when multiple firms share the same display name but have different firm codes.
Projects
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Project ID | The unique Unanet project identifier |
| Project Title | The project name |
| Project Number | The project code |
| Client | The firm linked to the project |
| Start Date | The project start date |
| End Date | The project end date |
| Fee | The fixed fee (default), or the labor budget (configurable — see Fee Source) |
| Rate Group | The rate schedule assigned to the project (when one is set) |
| Billing Type | Always Role when a rate schedule is assigned |
| Is Billable | Derived from the project's charge type — B (Billable) = true; otherwise false |
| Status | Active if the project is active; otherwise the configured "inactive project" status mapping |
| Is Archived | When archive-on-inactive is enabled, projects with isactive = false are archived |
| Portfolio | When configured, the project's Project Manager drives portfolio assignment |
| Created Date | When the project record was created |
| Modified Date | Not synced — Unanet's modify date on projects is unreliable |
Project Manager
Mosaic does not populate a Project Manager field on the project. Instead, the PM is used to derive a Mosaic Portfolio when
portfolioSourceis set to Project Manager.
Phases
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Phase ID | The unique Unanet phase/task identifier |
| Phase Title | The phase name |
| Phase Number | The phase code |
| Project | The top-level project the phase belongs to |
| Parent | The parent project, or another phase if this is a nested sub-phase |
| Start Date / End Date | The phase start and end dates |
| Fee | The fixed fee (default), or the labor budget (configurable — same setting as projects) |
| Rate Group | The rate schedule assigned to the phase (when one is set) |
| Is Billable | Derived from the phase charge type — B (Billable) = true |
| Status | Active if the phase is active; otherwise the configured "inactive phase" status mapping |
| Is Archived | Always false (no archive-on-inactive setting for phases) |
Phases in Unanet A/E are stored as project records with a non-null
parentprojectid. Mosaic preserves multi-level nesting — a phase under another phase is parented to that phase rather than directly to the project.
Fee Source
Both projects and phases use the same configurable fee source.
| Fee Source Option | What It Uses |
|---|---|
| Fixed Fee | The fixed fee on the project or phase (default) |
| Labor Budget | The labor budget on the project or phase |
Time Entries
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Time Entry ID | The unique timesheet line identifier |
| Date | The work date |
| Hours | The hours worked |
| Employee | The employee who logged the time |
| Project | The top-level project the time was logged against |
| Phase | The phase the time was logged against (null if logged directly to the project) |
| Description | The PM comments on the time entry |
| Hourly Rate | The bill rate on the time entry |
| Billable | Derived from the bill status — Billed or ReadyToBill = billable; DoNotBill = not billable |
| Created / Modified | When the time entry was created and last modified |
Roles
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Role ID | The unique Unanet job title identifier |
| Role Name | A composite of the job title code and name: [jtcode]: jtname |
| Created / Modified | When the job title was created and last modified |
The composite name disambiguates job titles that share the same display name but have different codes. Description is not synced.
Rate Groups
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Rate Group ID | The unique Unanet rate schedule identifier |
| Rate Group Name | The rate schedule name |
| Active Entity Type | Always Role — rate schedules group rates by job title |
| Is Archived | Derived from isactive — inactive rate schedules are archived |
Rates
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Rate ID | A composite of rate group, role, and effective start date |
| Rate Group | The rate schedule this rate belongs to |
| Role | The job title the rate applies to |
| Rate Amount | The flat regular rate |
| Description | A composite display label: [ratename]: [[jtcode]: jtname] - YYYY-MM-DD |
| Start / End Dates | The effective date range for the rate |
| Is Cost Rate | Derived from isbillrate — false = cost rate, true = bill rate |
Bill rates and cost rates flow through the same entity. A rate schedule entry with
isbillrate = truebecomes a bill rate in Mosaic; one withisbillrate = falsebecomes a cost rate. There is no separate cost rate sync.
Entity Rates
Entity Rates link a rate to a specific role within a rate group, with effective dates. Each rate row from the Rates entity also produces a corresponding Entity Rate.
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Entity Rate ID | Same composite identifier as the linked Rate |
| Role | The job title the rate applies to |
| Rate Group | The rate schedule the rate belongs to |
| Rate | The linked Rate record |
| Start / End Dates | The effective date range for the rate |
| Is Cost Rate | Derived from isbillrate — same as Rates |
Bill Rates
Per-employee bill rates are synthesized from the employee's billrate field — Unanet A/E does not expose a dedicated bill rate history endpoint. When an employee's bill rate changes, Mosaic ends the prior rate (sets the previous record's end date to yesterday) and starts a new rate from today.
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Employee | The employee the bill rate applies to |
| Rate Amount | The current bill rate on the employee |
| Description | {firstname} {lastname} - Employee Bill Rate - {startdate} |
| Start Date | The first sync uses 1900-01-01; subsequent rate changes start today |
Bill Rate sync is triggered as a side effect of Member sync, not a separate endpoint call.
Departments
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Department ID | The unique Unanet org unit identifier |
| Department Name | A composite of the org name and org path: {orgname} ({orgpath}) |
| Created / Modified | When the org unit was created and last modified |
The full Org Unit record (including
orgcode,orglevel,parentorgid,isactive,currencyid) is preserved in raw form for reference but is not surfaced as Mosaic fields.
Offices
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Office ID | The unique Unanet company address identifier |
| Office Name | The address name |
| Address | Street (lines 1–3), city, state, country, zip |
| Created / Modified | When the company address was created and last modified |
Offices sync as standalone records but are not currently linked to employees in Mosaic.
Portfolios
Portfolios are synthesized from each project's Project Manager — Unanet A/E does not have a dedicated Portfolio entity. A portfolio is created per unique PM, and projects are assigned to that portfolio when the integration setting permits.
| What Syncs to Mosaic | Where It Comes From in Unanet A/E |
|---|---|
| Portfolio ID | A composite of the PM employee identifier: Employee={empid} |
| Portfolio Name | The PM's display name |
When this syncs
Portfolios only sync when
portfolioSourceis set to Project Manager. A project's portfolio is set only when the project's portfolio transfer mode is Transfer All (separate transfer modes apply for normal vs. Indirect-charge projects).
Configurable Settings
| Setting | Purpose | Default |
|---|---|---|
projectPhaseFeeSource | Source for project/phase fee — FixedFee or LaborBudget | FixedFee |
isActiveFalseMappingForProject | Mosaic project status when Unanet isactive = false | Proposal |
isActiveFalseMappingForPhase | Mosaic phase status when Unanet isactive = false | NotStarted |
isArchivingInactiveProjects | Whether to archive inactive Unanet projects in Mosaic | false |
portfolioSource | Project Manager to drive portfolios from PM, or none | none |
projectPortfolioTransferMode | Transfer all projects' portfolios, or none — for non-Indirect projects | TransferAll |
indirectChargeProjectPortfolioTransferMode | Override transfer mode for Indirect-charge projects (chargetypecode = 'I') | TransferAll |
Adjust these via your Customer Success Manager.
Troubleshooting & FAQ
Why isn't an employee's role appearing in Mosaic?
Mosaic does not import per-member role assignments from Unanet A/E because Unanet does not store the start/end dates Mosaic requires. Roles still sync as standalone records — see Roles — and members must be assigned roles manually in Mosaic with defined date ranges.
Where does the project's Project Manager go in Mosaic?
The PM is not assigned to a Mosaic Project Manager field. When portfolioSource is set to Project Manager, the PM is used to derive a Mosaic Portfolio instead.
Why is the project's Modified Date blank in Mosaic?
Unanet's modifydate on Projects has been observed to be unreliable. Mosaic deliberately does not sync it, to avoid surfacing stale or incorrect timestamps.
Why do bill rate and cost rate share the same entity?
Unanet A/E rate schedules use a single isbillrate flag to distinguish bill rates from cost rates — both flow through the same Rate / Entity Rate sync. A row with isbillrate = false is a cost rate; true is a bill rate.
Are Offices linked to Members?
Not currently. Offices sync as standalone records but the Member record does not store an Office reference.
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 15 days ago
