Your organization is launching a new "Customer 360" initiative. They need to unify customer data that currently resides in two separate silos: a legacy on-premises SQL database and a third-party SaaS platform accessed via a REST API.
The business requirements are:
- Unified View: Support agents must see a single, combined record for each customer.
- Performance: The application must handle high-volume traffic without lagging, even when fetching data from the external API.
- Business Intelligence: Management wants to use Process HQ to analyze this customer data and identify bottlenecks in the support lifecycle.
As a senior developer, how would you architect this solution using Appian’s Data Fabric? In your response, please address the following:
How would you use Record Types to bridge these disparate data sources?
What Sync Options would you configure for these records to meet the performance and reporting requirements ?
How does your architectural choice enable the data to be accessed and analyzed within Process HQ?
Your organization is launching a new "Customer 360" initiative. They need to unify customer data that currently resides in two separate silos: a legacy on-premises SQL database and a third-party SaaS platform accessed via a REST API.
The business requirements are:
- Unified View: Support agents must see a single, combined record for each customer.
- Performance: The application must handle high-volume traffic without lagging, even when fetching data from the external API.
- Business Intelligence: Management wants to use Process HQ to analyze this customer data and identify bottlenecks in the support lifecycle.
As a senior developer, how would you architect this solution using Appian’s Data Fabric? In your response, please address the following:
How would you use Record Types to bridge these disparate data sources?
What Sync Options would you configure for these records to meet the performance and reporting requirements ?
How does your architectural choice enable the data to be accessed and analyzed within Process HQ?
Answer
I would build this on Appian Data Fabric, using Record Types to give agents one data model across the SQL database and the SaaS platform. The architecture covers data integration, performance, and analytics. I would keep those three concerns separate and connect them through Data Fabric.
1. Connect both sources with Record Types
I would create one Record Type for each existing system.
Legacy customer (database-backed). This Record Type reads customer data from the on-premises SQL database. For example:
Customer ID | Customer Name | |
|---|---|---|
1001 | John Smith | |
1002 | Sarah Lee |
Appian connects to the database through a supported database connection. On Appian Cloud, that may need a VPN or another supported private connectivity option.
SaaS customer (service-backed). Appian supports REST APIs as the source for service-backed Record Types. I would set up:
- An HTTP Connected System for authentication and connection details
- An Integration Object that retrieves customers from the REST API
- A Record Data Source expression rule that maps the API response into the shape Appian needs
- A service-backed Record Type with optimized data access
For example, the SaaS system might return:
Customer ID | Subscription | Status |
|---|---|---|
1001 | Premium | Active |
1002 | Standard | Active |
2. Relate the Record Types
I would join the two Record Types on a shared field such as customerId (Customer.customerId = SaaSCustomer.customerId). Appian relationships connect data from different sources without moving both into one database.
If each customer has one SaaS profile, the relationship is one-to-one. If the SaaS system allows several subscriptions per customer, I would add a Subscription Record Type and use one-to-many.
The identifiers have to match across both systems. If they don’t, I would build a mapping table that links them reliably.
With this in place, an agent opens one customer record and sees John Smith (ID 1001) with his Premium subscription, active status, and email, plus his recent support cases: CASE-101 (billing issue, resolved) and CASE-102 (login issue, in progress). Agents no longer switch between applications.
3. Configure synchronization for performance
Under high-volume traffic, sync is the main performance lever. I would enable optimized data access (data sync) on both Record Types. Appian then serves reads from its own data service, so interfaces don’t query the source system on every load.
Strategy | SQL Record Type | SaaS Record Type |
|---|---|---|
Optimized data access | Enable | Enable |
Scheduled incremental sync | Use a last-modified field | Use a changed-data expression if the API supports it |
Scheduled full sync | Periodically, for reconciliation and deletions | Off-peak when needed |
Targeted sync | Sync records for rows changed outside Appian | Sync records when changed IDs are known |
Rate limit | Not applicable | Set to match API limits |
SQL database. Incremental sync on a last-modified timestamp keeps routine syncs small. Changes made through the Write Records smart service sync automatically. Changes made directly in the database by other systems need one of the sync options above. I would schedule periodic full syncs to catch hard-deleted records.
SaaS API. I would page through the API in batches instead of pulling the whole customer set in one request. If the API can return changes since a timestamp, I would add a changed-data expression and use incremental sync. If not, I would run full syncs off-peak with a rate limit that respects the provider’s restrictions. Where it matters, I would add event-driven targeted sync to keep key customer updates fresh.
Other performance measures:
- Query only the fields each interface needs
- Paginate and filter customer lists
- Index the SQL source queries where needed
- Keep API responses lean
- Monitor sync failures, sync duration, and query performance
- Stay within the data limits of the capability tier
Sync filters apply to database-backed Record Types only. For service-backed ones, I would filter through the record data source expression and the API’s query parameters.
Sync speeds up reads but does not make the data real time. How fresh the data is depends on the sync strategy.
4. Prepare support data for Process HQ
Data Fabric reports and dashboards can use synced or unsynced Record Types. Process HQ process analysis requires synced Record Types with structured case and event history data. So I would add two more Record Types.
Support Case. One row per support request:
Case ID | Customer ID | Issue | Status |
|---|---|---|---|
101 | 1001 | Billing issue | Resolved |
102 | 1002 | Login issue | Open |
Support Event History. One row per event in a case’s lifecycle:
Event ID | Case ID | Activity | Timestamp |
|---|---|---|---|
1 | 101 | Ticket Created | 09:00 AM |
2 | 101 | Assigned to Agent | 09:15 AM |
3 | 101 | Escalated | 11:30 AM |
4 | 101 | Resolved | 02:00 PM |
Support Case and Support Event History have a one-to-many relationship, so Process HQ can analyze the full sequence of activities for each case. If the application is built in Appian, I would configure Record Events to capture the activity history. Appian can generate the event history Record Type and its relationships from that feature.
5. Analyze bottlenecks in Process HQ
After deployment, I would work with the data stewards to make the data available in Process HQ and set up permissions.
In the example case, the ticket was created at 9:00 and assigned at 9:15. It then waited 2 hours 15 minutes before escalation at 11:30 and was resolved at 2:00 PM. Process HQ can measure durations like that across many cases. Management could use it to see:
- Which activities have the longest waits
- How often cases are escalated
- Whether certain subscription types take longer to resolve
- Which activities or process variations cause delays
- How durations change after process improvements
Because cases are related to customer and subscription data, the analysis can use customer attributes, not just isolated tickets. Data Fabric supplies the connected business data, and Process HQ uses the prepared event data to show how the support process performs.
Check yourself
Question 1 of 3, on what the answer above covers.
- 1.A customer row is hard deleted in the on-premises SQL database. Your synced record type uses scheduled incremental syncs, but the customer still appears in Appian. What is the right fix?
- 2.Which setup does Process HQ process analysis require for your support case data?
- 3.An agent updates a customer's email through a Write Records node on a database-backed record type with data sync enabled. How does the synced record data stay current?