Here’s a comprehensive solution addressing all three focus areas:
Field Mapping Validation:
The integration hub’s automatic validation checks syntax but not semantic correctness. You need to manually validate that each mapped field actually contains the expected data:
- Export your current field mapping configuration from Integration Hub > Connections > [Your Tableau Connection] > Field Mappings
- For each mapped field, verify in Creatio that it contains the data you expect (not null, correct data type, populated for all records)
- Pay special attention to calculated fields - these often use Creatio-specific aggregation logic that doesn’t translate directly
For your case count mismatch, check if the ‘ClosedCases’ field you’re mapping is a calculated field or a direct database field. If it’s calculated, the calculation might use filters (like excluding certain case statuses) that aren’t obvious in the field name. Create a custom SQL query in Creatio to verify the exact count matches what you expect before syncing.
Transformation Logic Review:
Your transformation logic has several issues that explain the data mismatch:
// Current problematic transformation:
DateClosed = CONVERT_TO_UTC(SourceDateClosed)
// This loses timezone context
// Corrected transformation:
DateClosed = CONVERT_TIMEZONE(SourceDateClosed, 'America/New_York', 'UTC')
DateClosedOriginal = SourceDateClosed
SourceTimezone = 'America/New_York'
// This preserves context for accurate filtering
The key is syncing both the converted timestamp AND the original timezone information. This allows Tableau to correctly interpret dates for filtering. Also review your numeric field transformations - if you’re using ROUND() or TRUNCATE() functions, you might be losing precision that accumulates across thousands of records.
For calculated fields, don’t sync the pre-calculated value. Instead, sync the source data and recreate the calculation in Tableau using Tableau’s calculation syntax. This ensures consistent aggregation logic.
Time Zone Alignment:
This is likely your primary issue. Implement explicit timezone handling throughout the sync pipeline:
-
In Creatio Integration Hub, configure the source connection with explicit timezone: System Designer > Integration Hub > Connections > [Creatio Source] > Advanced Settings > Source Timezone = ‘America/New_York’ (or your server timezone)
-
In your transformation logic, use timezone-aware conversion functions for all date fields:
CreatedDate = AT_TIMEZONE(SourceCreatedDate, 'America/New_York', 'UTC')
ModifiedDate = AT_TIMEZONE(SourceModifiedDate, 'America/New_York', 'UTC')
ClosedDate = AT_TIMEZONE(SourceClosedDate, 'America/New_York', 'UTC')
-
In Tableau, configure the data source to interpret all date fields as UTC: Data Source > [Your Connection] > Date Properties > Timezone = UTC
-
Create calculated fields in Tableau for display in local timezone:
Closed Date (Local) = DATEADD('hour', -5, [Closed Date])
// Adjust offset for your timezone
Testing the Fix:
After implementing these changes:
- Run a test sync with a small date range (single day)
- Manually verify record counts in both systems for that day
- Check boundary cases - records at midnight, early morning, late evening
- Compare not just counts but actual record IDs to identify which records are missing or duplicated
Your 5-8% variance (63 cases out of 1,250) likely represents cases closed between 7 PM and midnight EST that are being shifted to the next day in UTC conversion, placing them outside your Q4 filter in Tableau. Proper timezone handling will resolve this. The field mapping validation needs manual review to ensure calculated fields are handled correctly, and transformation logic must preserve timezone context throughout the pipeline.