When you enable data sync for a record type, the record type caches your source data in Appian. To keep your synced data up-to-date with the source, an immediate sync occurs whenever Appian writes to the source of your data. You can also schedule daily syncs so your data is synced at least once a day.
However, sometimes record types fail to sync to the source. When this happens, you can use the information in this article and in the error messages found in the monitoring view to resolve issues with sync.
This article provides troubleshooting steps for sync failures due to:
When you enable data sync for your record type and configure your record fields, Appian automatically creates a mapping between the source schema and record type schema. The source schema includes the names, types, and uniqueness constraints of all the fields in your source. This schema must match the record type's schema in order for Appian to sync the source data.
If a change is made to the source schema without making a corresponding change to the record type, the record type will fail to sync. There are three common causes for a mismatch between the two schemas.
To update the mappings for any of these scenarios, follow these steps:
To remove a record field and its source field, click the delete icon.
Removing a record field will cause any existing field references to break. To see which objects reference a record field, click next to the record field on the Data Model page of the record type.
You can also use this mapping tool if you need to change the database table or Salesforce object that backs your record.
When data is entered into your source, it's possible to enter values which aren't compatible with data sync. This means that the value in a source field may work fine in your source, but may not be a compatible value for that field in Appian when data sync is enabled.
This most commonly occurs with date fields and date and time fields. Appian has a certain range that all date and date and time values must be within in order for the source data to work with data sync. This range may not be the same range that is accepted by the source; so it's possible that a value can be valid in the source's range but not in Appian's. If the value of a date or date and time field isn't within the range allowed by data sync, the sync will fail.
This specific error message appears when the value of a date and time field in the source is outside of the range of date values that work with data sync. To resolve the error, find the field with the invalid date and time value, update the value so that it is within the valid range, and then resync the record type to the source.
Field Type | Range | Other Limits |
---|---|---|
Date & Time | Between 1707-09-22 00:12:43.145224193 and 2292-04-10 23:47:16.854775806 |
Shouldn't contain the value of 00 for the day or month, or 0000 for the year. |
To update the invalid date and time value in the database table:
APNX-3-1100-007: marshal: unsupported timestamp 3000-01-01 00:00:00 +0000 UTC
1
SELECT * FROM `< table name >` WHERE date(< field name >) = `< the invalid value >
To update the invalid date and time value in Salesforce:
APNX-3-1100-007: marshal: unsupported timestamp 3000-01-01 00:00:00 +0000 UTC
When you set up your Salesforce object as the source for your record type, you have to provide login credentials in order to access Salesforce. If the Salesforce object's credentials are determined to be invalid at the time of the sync, your sync will fail. It could simply be that the password has expired or that the credentials have changed. In order to successfully sync, you need to verify the credentials and re-sync the record type.
To check the credentials and re-sync:
For more information on authentication, credentials, and configuring a Salesforce object, see Salesforce Connected Systems.
With data sync, a record type object can sync up to 1,000,000 rows of data from a selected source. This limit applies to new rows of data introduced by an immediate sync.
If you try to sync more than 1,000,000 rows, the sync will fail and the record type will be unavailable. Sources within 10% of the limit (900,000 to 1,000,000 rows) will sync successfully, but a warning will let you know that the source is approaching or has reached the row limit.
To keep your source from exceeding the row limit, apply one or more source filters to limit the number of rows cached in Appian from the source. If the source is expected to regularly exceed 1,000,000 rows, you may choose to disable data sync.
To disable data sync, you will need to change the data source from the record type's Data Model and update all references to the original record fields throughout your application.
To find specific field references in your environment:
/*
and */
.In the OBJECTS View, paste the string into the search box under DESIGN OBJECTS.
You can search for multiple strings at once by separating each string with a space.
Every object that references the string will appear in your search results. Once you have located all the references in your objects, update the field references. For updating field references in interfaces, we recommend updating the references in Expression Mode.
If you're performing a full sync (all syncs other than an immediate sync) that takes longer than 4 hours, it's possible that the sync will time out and fail. When the sync fails, the record type will become unavailable and you'll see an error in your stack trace.
A sync timeout can occur on any record type with data sync enabled, but may be more common on synced record types that use a web service as the source.
To prevent a sync from timing out, consider:
If you cannot modify the above configurations, or your record type uses a database table as the source, you may choose to disable data sync on your record types that take longer than 4 hours to sync.
To disable data sync, you will need to change the data source from the record type's Data Model and update all references to the original record fields throughout your application.
To find specific field references in your environment:
/*
and */
.In the OBJECTS View, paste the string into the search box under DESIGN OBJECTS.
You can search for multiple strings at once by separating each string with a space.
Every object that references the string will appear in your search results. Once you have located all the references in your objects, update the field references. For updating field references in interfaces, we recommend updating the references in Expression Mode.
When you use a web service as the source of a record type with sync enabled, the web service itself could return an error. For instance, the web service could be temporarily unavailable or the request from Appian may not be structured correctly.
When these errors occur, the Monitoring View can display the error received from the web service to help in troubleshooting. However, the source expression must be set up correctly to expose these error messages to the monitor.
In the source expression rule, each batch result must return a list of dictionary, map, or CDT to perform a successful sync; any other result will cause the sync to fail.
However, if the expression rule returns a result of type Integration Error in a batch, the batch will fail and the full details of the integration error will be displayed in the Monitoring View for the record sync.
The Integration Error data type returns details on the error that occurred with any integration call. It is returned by default in any integration response using the error
parameter. See below for an example on how to configure the source expression to return the integration error.
Since the integration error typically contains the error received from the web service, it can help troubleshoot issues for the batch that failed.
To provide the integration error in a failed batch, make sure the source expression returns the appropriate integration error. For example, the following source expression would return the results if the integration succeeds and the integration error if it fails.
1
2
3
4
5
6
7
8
a!localVariables(
local!integration: rule!EX_IntegrationResult(batch: ri!batch),
if(
local!integration.success,
local!integration.result.body, /* Returns the result body when the request succeeds */
local!integration.error /* Returns the integration error when the request fails*/
)
)
Check the integration error against common HTTP errors and update the configuration of the integration object to resolve the error. For example, an error code of 401 typically means that the request did not have the correct authentication, so the credentials may need to be updated.
In some cases, it may be necessary to contact the owner of the web service to troubleshoot further.
Sometimes record types fail to sync to the source because of issues that require troubleshooting outside of Appian. When this happens, check the error message for information to help you troubleshoot the issue or contact your system administrator for further assistance. Here are a few brief explanations of these issues and their possible causes:
Issue | Error Message | Possible Cause |
---|---|---|
Problem connecting to the source. | Unable to sync because the data source did not respond. |
The source didn't respond, VPN failed, or the API limit has been reached. |
Problem with the sync server. | Unable to sync due to a system issue. or Not enough disk space to complete sync. |
The disk is full or the disk space is at or near 95% capacity. Alternatively, the sync server may be down. |
Problem with row size. | Unable to sync because a source row exceeds the size limit. |
A source row exceeds 1 MB. |
Problem with resource use. | Generic error: Unable to sync due to an error with the data source. |
Too much competition for resources between syncs and other processes. |
Problem with invalid batches. | Unable to sync due to an error with the data source. The Record Data Source did not apply the batch number correctly. The first two responses returned the same data. |
The sync expects that the data changes with each batch, but the first two batches returned the same data. |
Problem with invalid primary key data. | Unable to sync due to an error with the data source. The result batch contained multiple records with the same primary key. The primary key must be unique across all records in the same batch. |
The data source has multiple records that have the same primary key value. |