What's New in Migration Center
Discover the latest updates to Arc XP's Migration Center application.
Release dates
Sandbox - Monday, March 17, 2025
Production - Wednesday, March 19, 2025
Release summary
This release contains small patches to dependencies and adds a new API to allow you to query the completion estimate and amount of time remaining for a content stream. These estimations are available only for existing supported ANS types and is not available to source content uploads at this time. For more information, see Migration Center API.
You can now programmatically send smaller batches of content query for a completion date and use that date to programmatically send more content. These estimations can help with projecting dates for planning and scheduling workloads and resources for migrations.
Users affected
Developers
Action required
None
Release dates
Production - Monday, July 15, 2024
Release summary
Arc XP is excited to announce that Migration Center is now offering an extended set of tools to help customer developers who want a more streamlined process for getting content into Arc XP for both large one-time data migrations and for ongoing inbound data feeds.
Some key benefits include:
Reduced Developer Time
Migrate onto Arc XP from a legacy CMS. Our Migration Center tools and APIs provide well-defined paths for loading content at scale helping you move more quickly through the process.
Establish ongoing inbound content integrations. Our tools provide a way to quickly map content from the provider format to ANS and to load content to Arc with the same scale and processes used for migrations.
Lower Risk of Data Errors
Validate the successful transformation of external content to ANS prior to loading including content tracking and success/failure metrics.
Migration Center is designed to optimize the content ingest process to the Arc platform, which ensures fast content loading without adding the risk of errors.
Value Adds
Visual mapping tool to help create content transformation maps from external data formats more quickly and with a higher rate of success.
Starter data transformation maps for key supported providers (AP, Reuters, Getty Images, AFP, WaPo) give you a robust start to successfully mapping external data to the Arc Native Specification (ANS).
Arc XP hosted migration API endpoint allows you to focus on gathering and preparing content wherever you need to, but have a single enterprise endpoint to which data is sent.
Users affected
Developers, Migration Center users
Action required
To learn more about how Migration Center Inbound Content Pipelines can help you, contact Arc XP Customer Support.
Release dates
Sandbox - Tuesday, July 9, 2024
Production - Thursday, July 11, 2024
Release summary
This release improves stability around retry scenarios for story content.
Users affected
Developers
Action required
None
Release dates
Sandbox - Thursday, June 27, 2024
Production - Friday, June 28, 2024
Release summary
The /migrations/v3/report/summary
API now supports the query parameter limit to allow callers to return a smaller result set for their records.
Users affected
Developers
Action required
None
Release dates
Sandbox - Monday, June 10, 2024
Production - Tuesday, June 11, 2024
Release summary
Migration Center now prioritizes content to downstream services as expected.
ANS mapper now allows you to filter arrays using JMESPath or XML queries
This release also includes general background optimizations with background tasks.
Users affected
Developers
Action required
None
Release dates
Sandbox and Production - Tuesday, February 20, 2024
Release summary
This release introduces inbound content pipelines, which are a set of capabilities that let you self-configure inbound content feeds from external content sources, such as legacy CMS systems or third-party content providers (like The Associated Press and Getty Images). This new feature set extends Migration Center’s existing loading capabilities to help you more quickly map external content formats from external sources to Arc XP’s internal format by generating content maps and then using our extended Migration Center APIs to transform and load content at scale.
Whether you are a customer developer, an Arc XP development partner tasked with migrating large volumes of content to Arc XP from a legacy CMS, or a client who needs to create ‘live ingest’ pipelines of content from third-party providers, Arc XP’s inbound content pipelines provide a toolkit to help you create those integrations with more speed and reliability than writing your integrations directly to Draft API. Additionally, the toolkit is designed to be completely self-service, meaning you have control over your integration without needing input or assistance from Arc XP development staff.
Users affected
Developer beta participants
Action required
None
Launch dates
Sandbox - Friday, February 3, 2023
Production - Wednesday, February 8, 2023
Release summary
In this release, we upgraded components within Migration Center to meet the demands of our growing customer base. Changes include replacing default messaging components with auto-scaling elements, so messages generated by ingested documents are always delivered to the content queues without failure. Additionally, we updated retry mechanisms and the application configuration to help improve the stability of the migration pipeline.
Also in this release, we deployed a new batch processing framework to service long-running processes separately and asynchronously. At this time, we are not shipping any customer-facing services that leverage the new batch framework, but we will be releasing new APIs, including a redesigned Reset and Counts API for public use, after an internal assessment of the framework. More details will be available at the time of the release.
Users affected
All changes in this release affect all Migration Center customer environments.
Action required
None
Hotfixes
3.4.1
Release dates
Sandbox - Monday, February 27, 2023
Production - Wednesday, March 1, 2023
Bug fix summary
We consolidated the number of internal system calls required to migrate stories with many circulations. This fix has the dual benefit of optimizing the performance of the story migration queue as well as further mitigating the frequency of 429 errors that the Arc XP platform throws.
Users affected
All the bug fixes in this patch release are applied to all Migration Center customer environments.
Action required
None
3.4.2
Release dates
Sandbox - Wednesday, March 8, 2023
Production - Friday, March 10, 2023
Bug fix summary
We consolidated the number of internal system calls required to publish migrated stories. This fix has the dual benefit of optimizing the story migration queue's performance and further mitigating the frequency of 429 errors that the Arc XP platform throws.
We now correctly update the timestamp when a document is re-queued for migration to prevent unintentionally re-queuing for duplicate items in the migration pipeline.
Users affected
All the bug fixes in this patch release are applied to all Migration Center customer environments.
Action required
None
3.4.3
Release dates
Sandbox - Monday, March 27, 2023
Production - Wednesday, March 29, 2023
Bug fix summary
We improved the application's security for back-end service-to-service calls and implemented data sensitivity safeguards to Migration Center's cloud infrastructure.
We removed unnecessary cloud infrastructure that the application no longer uses.
We optimized the Migration Center's document circulation mechanism by switching to a bulk operation model. This enhancement helps to reduce the likelihood of encountering HTTP 429 errors during migration.
Users affected
All the bug fixes in this hotfix release are applied to all Migration Center customer environments.
Action required
None
3.4.4
Release dates
Sandbox - Monday, April 3, 2023
Production - Monday, April 3, 2023
Bug fix summary
Migration Center now correctly logs errors caused during circulations. Previously, the application ignored such errors, leading to them failing silently without communicating to the end user. With this update, as with any error status, the /report/detail
API response body returns circulation errors within the errorMessage
property, along with the status
set to FailStory
.
For more information, see Using Migration Center to circulate documents during a migration.
Users affected
All the bug fixes in this hotfix release are applied to all Migration Center customer environments.
Action required
None
Launch dates
Sandbox - Friday, January 20
Production - Monday, January 23
Bug fix summary
We have updated the outbound content submission component in Migration Center to mitigate spikes in requests from Migration Center to Draft API and consequently have significantly reduced the chances of HTTP 429 rate limit errors with Draft API while migrating stories with high circulation count.
We fixed an issue with the internal queueing system in Migration Center to process messages in the Dead Letter queue. As a result, any unsuccessful messages sent to the Dead Letter queue will be reprocessed to retry migrating the associated content.
We fixed an issue with the internal queueing system in Migration Center so it now correctly deletes messages that have been processed.
Users affected
All the bug fixes in this patch release will be applied to all Migration Center customer environments.
Action required
None
Release dates
Sandbox: Monday, December 12, 2022
Production: Friday, December 16, 2022
Improvements
Webhook integration for auto-notification of migration status changes
Migration Center is now able to send notifications to customer applications when a document has been fully migrated to Arc. This occurs when you register a webhook URL with Migration Center's Webhook registration service. If the webhook setting is enabled for a tenant, Migration Center sends a message to the URL whenever an ingested document of any content type reaches one of the following statuses:
Success
Circulated
Published
Scheduled
FailVideo
FailImage
FailStory
FailGallery
FailAuthor
FailTag
The webhook registration service lets customers create and update a webhook with Migration Center. Only one webhook is permitted in a customer's Arc XP environment. You can create and update a webhook through HTTP calls as the following code samples illustrate.
Create a webhook in Migration Center
curl --location --request POST 'https://api.{org}.arcpublishing.com/migrations/v3/webhook' \ --header 'Authorization: Bearer <INSERT YOUR ARC BEARER TOKEN HERE' \ --header 'Content-Type: application/json' \ --data-raw '{ "endpoint":"https://api.{org}.arcpublishing.com/notify/stage/bug_bush_3_3", "authToken":" <INSERT YOUR WEBHOOK BEARER TOKEN HEREl", "isEnabled":true, "headers":{ "Accept-Language":"en-US" }, "subscriber": "sandbox_webhook_1" }'
The POST request sent to the /migrations/v3/webhook endpoint requires an authorization token and a Content-type header as is the case with any other API endpoints within Migration Center. The request payload must contain the following properties:
Request Body Property | Property Description |
---|---|
endpoint | The customer's webhook API endpoint. This endpoint must support a POST operation. |
authToken | The authorization token to secure calls to the customer's webhook endpoint. |
isEnabled | A boolean value to start and stop notifications to the webhook API |
headers | A dictionary of any HTTP headers that are required to passed in the request to the customer's webhook endpoint. If no headers are required, this property can be ignored. |
subscriber | The name of the webhook in the case where the client maintains multiple webhooks with Migration Center. Passing the subscriber name in the POST /ans or POST /ans/bulk API call will link the ANS document(s) in the POST call to a particular webhook integration on the client side. Migration Center will call the webhook that matches the subscriber name. |
Update a webhook in Migration Center
curl --location --request PATCH 'https://api.{org}.arcpublishing.com/migrations/v3/webhook/1' \ --header 'Authorization: Bearer INSERT YOUR ARC BEARER TOKEN HERE' \ --header 'Content-Type: application/json' \ --data-raw '{ "isEnabled":false }'
You can update the webhook through a PATCH call to the webhook registration service as shown in the previous sample and passing in the ID returned in the API response to the POST /migrations/v3/webhook call. This process lets you update your authorization tokens when they are recycled or disable notifications from Migration Center.
Get a list of all webhooks in Migration Center
curl --location --request GET 'https://api.{org}.arcpublishing.com/migrations/v3/webhook' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer INSERT YOUR ARC BEARER TOKEN HERE' \ --data-raw ''
And the response looks something like this:
{ "hasMore": false, "webhooks": [ { "id": 1, "endpoint": "https://api.{org}.arcpublishing.com/migrations/v3/mywebhookapi", "headers": { "Content-Type": "application/json" }, "isEnabled": true, "createDate": "2022-12-08T17:33:56.990Z", "updateDate": "2022-12-08T17:44:20.804Z", "subscriber": "test" } ] }
For security reasons, the response does not include the authorization token.
Using the subscriber to link a POST /ans request to a specific webhook
In the case where the client application maintains multiple webhooks with Migration Center, the subscriber name can be utilized to match specific migration records to webhooks. Passing the subscriber name in the POST /ans or POST /ans/bulk API call will link the ANS document(s) in the POST call to a particular webhook integration on the client side. Migration Center will call the webhook that matches the subscriber name.
{ "tags": { "webhookSubscriber": "sandbox_webhook_1" }, "ANS": {...} }
Notification message by Migration Center to the webhook
If a webhook has been registered and its isEnabled setting is set to true, Migration Center will POST a message to the webhook URL using the authorization token and HTTP headers provided during registration, whenever an ingested document reaches a terminal status. The list of statuses can be found at the beginning of this section. The POST message payload will look something like this and will include the ansId, ansType and status of the migrated document, along with the document's metadata.
"record": { "id": 229338, "sourceLocation": null, "sourceAdditionalProperties": null, "ansId": "T3GBOT63EBA4JGFU4RPTCQPK4Q", "ansType": "author", "ansLocation": "{org}/stage/author/7fc2b6cb-badb-438a-8d13-8ec8d9fde628/ans.json", "status": "Circulated", "website": null, "operations": null, "circulationLocation": "{org}/stage/author/7fc2b6cb-badb-438a-8d13-8ec8d9fde628/circulations.json", "createDate": "2022-12-07T19:49:00.157Z", "updateDate": "2022-12-07T19:49:00.157Z", "errorMessage": null, "priority": "historical", "arcAdditionalProperties": null, "groupId": null }
PATCH inventory-data API endpoint supports ansId and ansType as request parameters
The PATCH /inventory-data API now accepts ansId and ansType as request parameters. The following values can be updated when ansId and ansType are used. The ansId
field cannot be updated through the request body when the request parameter also contains ansId.
{ "sourceAdditionalProperties": {}, "groupId": "string", "website": "string", "arcAdditionalProperties": {} }
The request should contain either sourceId and sourceType OR ansId and ansType to be passed but not all parameters in the same request. If a request contains all of the parameters, only ansId and ansType will be used to look up the record in Migration Center.
Bug Fixes
This release fixes an issue to retry previously failed galleries due to missing images. This improvement also ensures that records are always updated to the most current status and reduces the incidence of silent failures. For example, a silent failure can occur when a record fails to migrate to Arc XP, but its status remains Queued due to an unhandled exception thrown during migration.
Roll-out dates
Sandbox: Wednesday, November 16, 2022
Production: Wednesday, November 30, 2022
Improvements
Update arcAdditionalProperties using the PATCH API endpoint
arcAdditionalProperties can be now updated using the PATCH /inventory-data API. This eliminates the need to pass in the entire ANS object a second time to make changes to the ANS metadata. For example, to publish a story that was previously ingested, the client can now submit a request to the PATCH /inventory-data API as shown below:
curl --location --request PATCH 'https://api.{{org}}.arcpublishing.com/migrations/v3/inventory-data?sourceId=123_abc&sourceType=test_record' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer' \ --data-raw '{ "arcAdditionalProperties": { "story": { "publish": true } } }'
A successful response would look like this:
{ "success": true, "message": "Inventory data has been accepted." }
Ingestion API response returns status information of ingested record
The POST /ans API endpoint has been updated to return information about the state of the resource (ANS record) through hypermedia in the response body. The updated response body format conforms to the HATEOS principle of the REST application architecture. A sample response is shown below:
{ "message": "ANS content has been accepted and added to the queue for migration.", "success": true, "_links": { "self": "https://api.{{org}}.arcpublishing.com/migrations/v3/report/detail?ansId=&ansType=" } }
In the above example, the HATEOS hypermedia “_links.self” informs clients of the URL to fetch the status of the ANS record in Migration Center.
Pass URL collision behavior when migrating stories
Users can pass options in the API request to control how the Arc XP Publishing Platform handles requests to register or generate URLs that already exist. The option is defined through a new property in arcAdditionalProperties.
{ ANS:..., "arcAdditionalProperties": { "story": { "circulation": { "collision_behavior": "increment|fail (default)" } } } }
Property | Value | Description | Example |
---|---|---|---|
collision_behavior | increment | The increment behavior will avoid a collision with an existing URL by appending a -2, (or -3, -4, etc.) to the end of the requested or generated URL. | URL /news/man-bites-dog currently points to live story ABC. An API user requests to assign the URL /news/man-bites-dog to story DEF using collision behavior increment. URL Service assigns /news/man-bites-dog-2 to story DEF. The URL /news/man-bites-dog remains assigned to ABC. |
fail | The fail behavior will immediately abort the request with a 400 response code and return an error to the API client if a request is made that would collide with an existing URL. Clients can then react appropriately using their own custom logic and subsequent requests to the URL Service. This is the strongly recommended behavior. | URL /news/man-bites-dog currently points to live story ABC. An API user requests to assign the URL /news/man-bites-dog to story DEF using collision behavior fail. URL Service returns a 400 response code and DEF is not assigned a URL. |
Additional filters in Report Summary API
The GET /report/summary API endpoint now accepts two optional query parameters to sort items inside the source and/or ANS record collection returned in the response. The parameters are shown below.
Parameter | Values | |
---|---|---|
sort | createDate | default |
updateDate | ||
sortOrder | asc | |
desc | default |
Below is an example CURL request with the new parameters. While the sort parameter values are case-sensitive, the sortOrder parameter values are not.
curl --location --request GET 'https://api.{{org}}.arcpublishing.com/migrations/v3/report/summary?sort=createDate&sortOrder=DESC'
Bug Fixes
This release includes a fix to ensure ingested records do not remain stuck in a particular state when an internal system process performing a migration task experiences an unhandled exception.
The ingestion API (POST /ans) has been updated to return an HTTP 400 Bad Request status code when the ANS in the request body is missing ans_id. Prior to this release, this scenario would have prompted the API to return an HTTP 500 Internal Server Error which is misleading to the client.
This release includes a fix to automatically re-queue certain failed records that have a high chance of success if they are re-submitted to Arc.
This release includes a fix to the internal polling mechanism to periodically re-queue any ingested records that have not transitioned from the “Queued” status for more than 4 days.
Roll-out dates
Sandbox: Friday September 16, 2022
Production: Monday September 19, 2022
Bug Fixes
The POST /source and PATCH /inventory-data APIs have been updated to require the Content-Type HTTP header on incoming requests. With this update, the endpoints will also return a HTTP 415 Unsupported Mediatype error when the header is not set on a request. Previously if a user did not set the Content-Type header, the request could silently fail and did not return an error code which created confusion as to whether the request was processed successfully. Going forward all requests to the API endpoints must include a header as shown below.
header 'Content-Type: application/json'
Users reported receiving a Version Out of Sync error when updating Photos and/or Galleries through Migration Center. This patch has fixed this issue by adding the correct version and the created_date to the incoming ANS before pushing the ANS content to Photo Center.
We’ve added additional logging to Migration Center API components for better visibility into the URL(s) and headers passed to downstream services.
Roll-out dates
Sandbox: Tuesday, July 26, 2022
Production: Wednesday July 27. 2022
Bug Fixes
Some users reported getting an ambiguous error response when attempting to create a gallery through Migration Center. This occurs when the gallery is missing images and user’s feedback stated that the error response did not convey any useful information. This patch addresses it by updating the error message returned to a user friendly format.
Some users reported getting a runtime error when attempting to create an author through Migration Center. This patch resolves the issue so authors can be migrated successfully.
Roll-out dates
Sandbox: Thursday, June 30, 2022
Production: Tuesday, July 12, 2022
Improvements
New request parameters with the Count API
priority is now an optional query parameter that can be passed in the /report/status/count request to filter the count by document priority. Accepted values are live or historical (default). documentType is now an optional query parameter that can be passed in the /report/status/count request to filter the count by document type. Accepted values are source or ans (default). An example is shown below:
https://api.sandbox.{org}.arcpublishing.com/migrations/v3/report/status/count?documentType=ans&priority=live
Content size limit increased in the Bulk Ingestion API
The maximum allowed items that can be passed within a single request to the Bulk Ingestion API has been increased to 50 which enables users to migrate up to 50 ANS documents using a single API request. The content
property can now accept up to 50 items in the array. If you want to optimize bulk ingestion, we recommend continuing to limit requests to 25 items.
{ "defaultPriority": "live", "defaultWebsite": "defaultWebsite", "defaultCorrelationId": "test_batch", "content": [ { "ANS": { }, "ANS": { }, . . . <!-- upto 50 ANS documents allowed --> } ] }
New validation for circulation and content operations
The ingestion API now validates the circulation and content operations objects submitted in the request. If any of the required properties are missing or if the format violates the expected JSON schema, the API will return a user friendly error message. An example error message is shown below.
{ "success": false, "message": "[{\"instancePath\":\"/circulations/0\",\"schemaPath\":\"#/properties/circulations/items/oneOf/0/required\",\"keyword\":\"required\",\"params\":{\"missingProperty\":\"website_id\"},\"message\":\"must have required property 'website_id'\"},{\"instancePath\":\"/circulations/0\",\"schemaPath\":\"#/properties/circulations/items/oneOf\",\"keyword\":\"oneOf\",\"params\":{\"passingSchemas\":null},\"message\":\"must match exactly one schema in oneOf\"}]" }
Upon inspecting the message closely, it shows that the circulations object is missing a required property called website_id.
\“keyword\“:\“required\“,\“params\“:{\“missingProperty\“:\“website_id\“}
Additional properties for ingesting videos
The ingestion API now accepts useLastUpdated for videos which is passed to Video Center. The expected format for this request is shown below.
{ "ANS": { ... }, "arcAdditionalProperties": { "video": { "useLastUpdated": true } } }
Bug Fixes
In 3.1, we have reintroduced support for POST ANS requests to update existing photos and galleries in Photo Center. There is no need for users to fetch the latest ANS for the Photo or Gallery since Migration Center will apply the updates to the latest version of the asset from Photo Center. However, while processing updates to these assets, Photo Center will overwrite the additional_properties.version property that is passed in the user request.
API validation for the ans_type request parameter has been added, so that only supported types such as story, photo, gallery, video, author and tag are accepted by the API.
Appropriate API responses for 404 scenarios has been added in order to avoid confusion when making invalid requests to the API.
Roll-out dates
Sandbox: Friday, April 1, 2022
Production: Monday, April 25, 2022
Migration Center v3.0 is now live. In addition, we are excited to reintroduce our UAT process flow. With UAT, you will have access to the latest release as soon as it is coded, tested, and deployed in the sandbox environment. During UAT, we welcome all feedback in order to incorporate any additional changes to the platform.
Enhancements
New serverless architecture for scaling and operational improvements
New Bulk Ingestion API endpoint optimized for loading multiple documents
New Record Count API endpoint to get the number of documents migrated
Updated content status lifecycle for better visibility into the pipeline
Archiving source content is now optional
Bug Fixes
Updated website documentation to explain the new migration pipeline and best practices
Planning an Upgrade
Note
Customers upgrading from previous versions, such as V1 or V2, should note that their older pipelines will become non-operational once their 3.0 pipelines are provisioned. Running APIs from different versions side by side can lead to negative consequences in record processing, so terminating the older pipeline is done as a safeguard measure to prevent such scenarios.
Coming Soon
Migration Center 3.1 Release (ETA May 2022)
Our next scheduled release will be backwards compatible with 3.0 and customers who have integrated with Migration Center 3.0 do not have to update their API clients to take advantage of the following platform improvements coming in 3.1.
Scalability improvements for minimizing error rates during peak loads
Enhanced logging of content status changes within the pipeline
Support for migrating the Redirects content type