You're viewing Apigee Edge documentation.
Go to the
Apigee X documentation. info
As a current Apigee Edge customer, you might choose to migrate your installation to Apigee X, in order to take advantage of new capabilities, or different regional availability.
This page describes antipatterns in your configuration that you'll need to address before migrating to Apigee X, as well as other changes in behavior that you should be aware of before migrating.
The broader list of Apigee Edge antipatterns describes usage practices that should be avoided in any case. This page describes the specific dis-recommended usage practices that will block a migration. Resolve these now to prevent problems when migrating to Apigee X.
Apps without API products | ||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
There are apps without API product(s). Difference between Apigee Edge and Apigee X:
|
No. |
Resolution: Apps without API productsAssociate every app credential with at least one API product. For more information on how to do this, see Register apps and manage API keys. An easy path is to assign each app access to all API Products. This will be the equivalent of what is possible in Apigee Edge. The challenge will be if you want to pursue a "least privilege" approach, then you will need to determine the minimum list of API Products that each app credential must have access to. You can analyze this with Apigee Edge Analytics reports, based on client ID. |
||||||||||||||||||||||
Cache without expiry time | ||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
Cache(s) don't have an expiry time. Difference between Apigee Edge and Apigee X:
|
No |
Resolution: Cache without expiry timeSet an expiry time for all caches. |
||||||||||||||||||||||
JSONPath filter expressions on non-definite paths | ||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
For non-definitive paths, querying the result of a filter expressions is not part of JSONPath spec. See https://goessner.net/articles/JsonPath/. Difference between Apigee Edge and Apigee X: When navigating this example structure, { "books": [ { "name": "A", }, { "name": "B", } ] } With the expression
With the expression
|
Yes |
Resolution: JSONPath filter expressions on non-definite pathsFind and replace affected queries. |
||||||||||||||||||||||
JSONPath expressions for indexes that are not present | ||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
JSONPath expressions with an index that is not present have different behaviors in Apigee X
versus Apigee Edge. Apigee X returns an Difference between Apigee Edge and Apigee X: When navigating this example structure, { "books": [ { "name": "A", }, { "name": "B", } ] } With the expression
|
Yes |
Resolution: JSONPath expressions for indexes that are not presentFind and replace affected queries. |
||||||||||||||||||||||
JSONPath expressions with an array index not returning an array object | ||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
JSONPath expressions with an array index or slices return an array object in Apigee X. Difference between Apigee Edge and Apigee X: When navigating this example structure, { "books": [ { "name": "A", }, { "name": "B", } ] } With the expression
With the expression
With the expression
|
Yes |
Resolution: JSONPath expressions with an array index not returning an array objectFind and replace expressions which might return different results after upgrade. |
||||||||||||||||||||||
Keystore name restrictions |
||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
Apigee X keystore names can only contain letters, numbers, and hyphens. Edge keystore names do not impose these restrictions. |
No |
Resolution: Keystore name restrictionsCheck keystore names and update the names to remove unsupported characters if necessary. |
||||||||||||||||||||||
Multiple base paths deployed for an API proxy |
||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
Multiple revisions of an API proxy are deployed in an environment and each revision has a different base path. Difference between Apigee Edge and Apigee X:
|
No |
Resolution: Multiple base paths deployed for an API proxyUpdate all bundles so that only one revision of a bundle is deployed to an environment, regardless of the basepath. |
||||||||||||||||||||||
Non-compliant HTTP messages |
||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
Clients or the API Proxy send messages (requests or responses) that do not comply with the HTTP standard. For example, invalid Header names, duplications in some restricted headers, and so on. You cannot migrate to Apigee X if your API execution has one or more of the following errors:
|
Yes, possibly. |
Resolution: Non-compliant HTTP messagesYou must fix any errors in HTTP protocols before migrating to Apigee X. If an error originates from a client application, you must ask the developer of the client app to correct the problem. |
||||||||||||||||||||||
OAuth 2.0 token expiration time invalid |
||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
OAuth 2.0 token expiration limits are outside of the prescribed range. Difference between Apigee Edge and Apigee X:
|
No |
Resolution: OAuth 2.0 token expiration time invalid
Use the OAuthV2 policy, and specify the expiry time in
|
||||||||||||||||||||||
Product limits exceeded |
||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
Configuration of Apigee Edge is not compliant with the defined product limits. Some product limits that are documented but not enforced on Apigee Edgeare enforced on Apigee X. |
No |
Resolution: Product limits exceededCorrect any usage that exceeds the product limits before migrating to Apigee X. |
||||||||||||||||||||||
ServiceCallout policies with both endpoint and path target connection specifiers |
||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
In the ServiceCallout policy, the
Apigee Edge documents this requirement but does not enforce it. Apigee X stops
processing if it encounters a |
No |
Resolution: ServiceCallout policies with both endpoint and path target connection specifiers
Check ServiceCallout policy configurations and eliminate any
|
||||||||||||||||||||||
Target server name restrictions |
||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
Apigee X target server names can only contain letters, numbers, hyphens, and periods. Edge target server names do not impose these restrictions. |
No |
Resolution: Target server name restrictionsCheck target server names and update the names to remove unsupported characters if necessary. |
||||||||||||||||||||||
Trial certificate in a virtual host |
||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
One or more Virtual hosts uses the Apigee-provided "free trial" certificate. This causes
the virtual host to respond to requests on domains like Difference between Apigee Edge and Apigee X:
|
Yes |
Resolution: Trial certificate in a virtual hostYou must configure your own domain, and provision certificates appropriately.
Any client application that depends on the legacy domain name of the
form |
||||||||||||||||||||||
Unresolved DNS |
||||||||||||||||||||||||
Summary | Requires client-side changes? | Resolution | ||||||||||||||||||||||
The target endpoint(s) have unresolved domain name(s). Difference between Apigee Edge and Apigee X:
|
No |
Resolution: Unresolved DNSUpdate the target endpoint with a valid domain name. |