Deltek Ajera Cloud Integrated Data
Field mapping reference for Deltek Ajera Cloud
What this page covers: A complete reference mapping every Deltek Ajera Cloud field to its Mosaic equivalent. Use this guide when configuring your integration, verifying synced data, or troubleshooting discrepancies.
| Integration type | Cloud (Ajera REST API + ODBC) |
| ODBC required? | Yes — for Time Entries, Work Categories, Rate Groups, and Rates |
| Setup complexity | Moderate |
| Configurable fields | Limited — fee source, time entry hours/rate source, status mappings |
| Prerequisite | Ajera Cloud Integration Setup |
How Data Flows
Ajera Cloud (REST API + ODBC) → Mosaic Sync Engine (field mapping) → Mosaic (12 synced data types)
The Cloud integration uses the Ajera REST API to query most data (employees, clients, projects, phases, roles, work plans, rate group metadata) and an Ajera ODBC connection to access tables that are not exposed by the API (time entries, activities, and rate table details).
Data flows one way only — Ajera → Mosaic. Time entries and other records are read-only from Mosaic's perspective.
ODBC Required
Time Entries, Work Categories, Rate Groups, and Rates all require an Ajera ODBC connection. Without ODBC credentials configured, those four data types will not sync. See Deltek Ajera Cloud ODBC for setup instructions.
Integrated Data Types
The integration syncs 12 data categories from Ajera Cloud into Mosaic:
| Data Type | Source | Description |
|---|---|---|
| Members | API | Employee records (name, email, status) |
| Member Roles | API | Member-to-role assignments based on Ajera Employee Type |
| Clients | API | Client records (name, description) |
| Projects | API | Project records (description, fee, dates, billing type, status, project manager) |
| Phases | API | Phase breakdowns under projects (recursive nesting, flattened to single-parent in Mosaic) |
| Time Entries | ODBC | Posted labor transactions with hours, rates, billability, and approval status |
| Work Categories | ODBC | Activity records used for time entry categorization (Labor activities only) |
| Roles | API | Active employee types from Ajera |
| Rate Groups | API + ODBC | Active rate tables (billing type enriched via ODBC) |
| Rates | ODBC | Role-based labor bill rates from rate table detail rows |
| Work Plans | API | Resource planning assignments (planned hours per employee, project, and phase) |
| Budget Estimates | API | Budgeted hours per employee per phase (latest resource per phase) |
This list may expand as new features are added.
Not Synced
| Data Type | Description |
|---|---|
| Member Cost Rates | Employee cost rates are not synced from Ajera |
| Member Project Bill Rates | Employee-specific (per-project) rate assignments are not synced |
| Member Project Roles | Per-project role overrides are not synced |
| Standard Bill Rates (cost) | Cost rates from rate tables are not synced (only role-based bill rates are) |
| Activity-based bill rates | Rate table rows keyed by activity rather than employee type are not synced |
| Employee-specific bill rates | Rate table rows keyed by individual employee are not synced |
| Project Type, Department, Region, Office | Available in Ajera but 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 and ODBC sources. Read this legend before reviewing the mappings.
| Symbol | Meaning | Example |
|---|---|---|
. | API or table field reference | Project.Description = the Description field on the Project resource |
> | Fallback priority — use the first available value | ActualStartDate > EstimatedStartDate = use Actual; if null, use Estimated |
• | Values combined into one composite value | tDate • tEmployee = combined into a composite identifier |
or | Configurable — an integration setting selects which | tBilledRate or tEarnedRate = your configuration chooses one |
Members
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Employee ID | The unique Ajera 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 email address | |
| Is Archived | Derived from the employee status — Inactive = archived |
| Created Date | When the employee record was last modified (used as the create timestamp) |
Members are fetched from the Ajera Cloud
ListEmployeesendpoint.
Member Roles
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Member Role ID | A composite of the employee identifier and their employee type |
| Employee | The employee this role assignment belongs to |
| Role | The Ajera Employee Type assigned to the employee |
Member Roles are derived from the Employee record's
EmployeeTypeKey. If the Roles API method is denied for your tenant, member roles will not sync.
Clients
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Client ID | The unique Ajera client identifier |
| Client Title | The client description |
| Description | The client's website |
| Created Date | When the client record was last modified |
| Is Archived | Always false |
Clients are fetched from the Ajera Cloud
ListClientsendpoint.
Projects
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Project ID | The unique Ajera project key |
| Project Title | The project description |
| Project Number | The project ID/number |
| Client | The client linked to the project via the project's first invoice group |
| Company Name | The project's company description |
| Project Manager | The employee assigned as project manager |
| Fee | The labor contract amount, optionally plus the consultant contract amount (configurable — see Fee Source) |
| Billing Type | Set to Role when the project's rate table is unambiguously role-based; otherwise null. Activity-based, Employee-based, and mixed rate tables are not surfaced as Mosaic rate groups |
| Rate Group | The rate table assigned to the project (when billing type is Role) |
| Is Billable | Derived from the project billing type — see Billable Status |
| Status | The project status, mapped to Mosaic's status values (configurable) |
| Is Archived | Derived from the project status — Closed statuses = archived |
| Start Date | The actual start date, falling back to the estimated start date |
| End Date | The actual completion date, falling back to the estimated completion date |
| Modified Date | When the project record was last modified |
Project status mappings (configurable)
Mosaic maps the project's
Statusvalue to a Mosaic status using a default table, with configurable overrides for the three "ambiguous" Ajera statuses:holdStatusMappingForProject,workHoldStatusMappingForProject, andclosedStatusMappingForProject. Equivalent phase-side overrides exist (holdStatusMappingForPhase,workHoldStatusMappingForPhase,closedStatusMappingForPhase). Contact your Customer Success Manager to adjust these mappings.
Phases
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Phase ID | The unique Ajera phase key |
| Phase Title | The phase description |
| Phase Number | The phase ID/number |
| Parent | The parent project, or the parent phase if this phase is nested under another phase |
| Project | The top-level parent project |
| Client | The client linked to the phase's project |
| Company Name | The parent project's company description (inherited from the project, not the phase itself) |
| Fee | The labor contract amount, optionally plus the consultant contract amount (same configuration as projects) |
| Estimated Hours | The budgeted hours for the phase |
| Billing Type | Set to Role when the phase's rate table is unambiguously role-based; otherwise null |
| Rate Group | The rate table assigned to the phase (when billing type is Role) |
| Is Billable | Derived from the phase billing type |
| Status | The phase status, mapped to Mosaic's status values (configurable) |
| Is Archived | Derived from the phase status — Closed statuses = archived |
| Start Date | The actual start date, falling back to the estimated start date |
| End Date | The actual completion date, falling back to the estimated completion date |
| Modified Date | When the phase record was last modified |
| Order | The phase's display order within its project |
Nested Phases
Ajera Cloud nests phases recursively (
Phases.Phases). Mosaic flattens this hierarchy to a single-parent chain — each phase records its immediate parent (project or another phase). Sub-phases of sub-phases are fully supported.
Fee Source
Both projects and phases use the same configurable fee source.
| Fee Source Option | What It Includes |
|---|---|
| Labor Contract Amount | Labor contract amount only (default) |
| Labor Contract Amount + Consultant Contract Amount | Labor contract amount plus the consultant contract amount |
Billable Status
The Mosaic Is Billable flag for projects and phases is derived from the Ajera billing type:
Ajera BillingType | Mosaic Is Billable |
|---|---|
| TimeAndExpense, FixedFee, PercentComplete, UnitPrice, PercentofConstructionCost, Adjustment | Billable |
| Nonbillable, Marketing, Overhead | Not Billable |
Time Entries
Requires Ajera ODBC. Time Entries can only sync with an Ajera ODBC connection configured. Without ODBC credentials, time entry sync is disabled.
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Time Entry ID | The unique Ajera transaction key |
| Date | The transaction date of the time entry |
| Employee | The employee who logged the time |
| Project | The project the time was logged against |
| Phase | The phase the time was logged against (if applicable, otherwise null) |
| Work Category | The activity associated with the time entry |
| Hours | The hours logged — defaults to entered hours, configurable to use billed hours |
| Description | The time entry notes |
| Hourly Rate | The billed rate by default, configurable to use the earned (spent) rate |
| Billable | Derived from the entry status — Billable status = true; defaults to true if no status is set |
| Status | Derived from rejection/submission/approval flags on the linked timesheet (configurable) |
| Is Archived | Derived from tIsCurrent — entries marked as not current are archived |
| Is Deleted | Derived from tIsDeleted |
Time Entry Filters
Mosaic syncs labor transactions only —
tActivityType = 1. Worksheet entries (tType = 2) and posted entries (tType = 0) are both included. Records must be current (tIsCurrent = TRUE) and have a non-null employee, activity, and project.
Approval Status Mapping
Time entry status is derived from these timesheet fields and the
timeEntryApprovalTypesetting:
tTimeRejectedBy(rejection)tsSubmittedBy(submission)tsSupervisorApprovedBy(supervisor approval)tsAccountingApprovedBy(accounting approval)Approval modes: ApprovedBySupervisor, ApprovedByAccounting, or ApprovedBySupervisorOrAccounting.
Work Categories
Requires Ajera ODBC. Work Categories can only sync with an Ajera ODBC connection configured.
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Activity ID | The unique Ajera activity key |
| Activity Code | The activity key (used as the display code) |
| Activity Title | The activity description |
| Is Billable | Not derived — synced as null |
Only Labor-type activities (
actType = 1) sync. Other activity types (Expense, Consultant, etc.) are excluded.
Roles
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Role ID | The unique Ajera Employee Type key |
| Role Name | The Employee Type description |
Source: Ajera Cloud
ListEmployeeTypesfiltered toFilterByStatus = ['Active'].
Rate Groups
Requires Ajera ODBC. Without ODBC credentials configured, Rate Groups will not sync (since rate metadata cannot be enriched).
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Rate Group ID | The unique Ajera rate table key |
| Rate Group Name | The rate table description |
| Active Entity Type | Always Role — Mosaic only surfaces role-based rate tables |
Source: Ajera Cloud
ListRateTablesfiltered toFilterByStatus = ['Active']. The billing type is enriched via ODBC fromAxRateTableDetailrows.
Rates
Requires Ajera ODBC. Rates are queried from the Ajera database via ODBC.
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Rate ID | A composite of the rate table, role, and rate detail row identifiers |
| Rate Group | The rate table this rate belongs to |
| Role | The Employee Type the rate applies to |
| Rate Amount | The bill rate from the rate table detail row |
| Description | The rate table name combined with the role name and the start date |
| Start / End Dates | The effective date range for the rate |
| Is Cost Rate | Always false — only bill rates are synced |
Only role-based bill rates sync. Rate table rows keyed by individual employee or by activity are not surfaced. Cost rates (
rtlCost) are not synced.
Work Plans
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Workplan ID | The unique resource assignment identifier |
| Project | The project the work plan is assigned to |
| Phase | The phase the work plan is assigned to (sub-phase preferred over phase) |
| Employee | The specific employee assigned (if present) |
| Hours (Planned Time) | The planned hours for the assignment |
| Description | The work plan description |
| Bill Rate | The fee rate on the resource assignment |
| Cost Rate | The cost rate on the resource assignment |
| Start Date | The resource start date, falling back through phase and project dates |
Source: Ajera Cloud
GetProjectsWithResources. Mosaic walksInvoiceGroups[].Phases[].Phases[].Resources[]to extract assignments.
Budget Estimates
| What Syncs to Mosaic | Where It Comes From in Ajera |
|---|---|
| Project | The project the budget estimate is assigned to |
| Phase | The phase the budget estimate is assigned to |
| Employee | The employee the budget estimate is assigned to |
| Hours | The budgeted hours |
| Is Archived | Derived from the resource status — Inactive = archived |
Budget Estimates are deduplicated to the latest resource per (Project, Phase, Employee) combination. Source: same
GetProjectsWithResourcesAPI call as Work Plans.
Troubleshooting & FAQ
Why do Time Entries, Work Categories, Rate Groups, and Rates require Ajera ODBC?
The Ajera Cloud REST API does not expose those tables directly. An ODBC connection to your Ajera database is required to retrieve them. See Deltek Ajera Cloud ODBC for setup, or Ajera Cloud ODBC Troubleshooting if you're seeing connection issues.
Why aren't my employee-specific or activity-specific rates syncing?
Only role-based bill rates are currently synced. Rate table rows keyed by individual employee (rtlEmployee IS NOT NULL) or by activity (rtlActivity IS NOT NULL) are not surfaced. Cost rates (rtlCost) are also not synced.
Are work plans available in the Cloud integration?
Yes — Work Plans and Budget Estimates are Cloud-only features and are not available in the On-Premise integration.
Can I rename field labels in Mosaic to match my Ajera custom labels?
No. Custom field name changes in Mosaic to match Ajera labeling is not supported as a standard integration feature.
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.
Deltek Documentation Links
A consolidated reference of Deltek Ajera documentation:
| Topic | Link |
|---|---|
| Ajera Online Help | Ajera Help |
| Deltek Help & Learning | Deltek Help |
Related Documentation
Updated 9 days ago
