Apigee Edge to Apigee X migration antipatterns

You're viewing Apigee Edge documentation.
View Apigee X documentation.

As a current Apigee Edge customer, you might choose to migrate your installation to Apigee X.

This page describes antipatterns that you'll need to address before migrating to Apigee X.

Edge usage antipatterns

Summary Requires client-side changes? Resolution

Your production API proxies might use Edge antipatterns, which should be resolved now regardless of when you plan to migrate to Apigee X.

Resolve Apigee Edge antipatterns now to prevent problems from these antipatterns when migrating to Apigee X.

No

Resolution: Edge usage antipatterns

Review and resolve the Apigee Edge antipatterns.

Apps without API products

Summary Requires client-side changes? Resolution
Apps without API products

There are apps without API product(s).

Yes. All clients using app or consumer-key with no API products will be affected.

Resolution: Apps without API products

Associate every app with at least one API product. For more information, see Register apps and manage API keys.

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:

Apigee Edge Apigee X
Supports creation, update, and deletion of cache resource descriptors. Doesn't support creation, update, or deletion of cache resource descriptors.
Yes

Resolution: Cache without expiry time

Set an expiry time for all caches.

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 restrictions

Check 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:

Apigee Edge Apigee X
Supports deployment of multiple revisions of an API proxy where each revision can have a different base path. Doesn't support deployment of multiple revisions of an API proxy even though the proxy has different base paths.
No

Resolution: Multiple base paths deployed for an API proxy

Update all bundles so that only one revision of a bundle is deployed to an environment, regardless of the basepath.

Non-compliant RFC headers

Summary Requires client-side changes? Resolution

There are error(s) in RFC headers during API execution.

You cannot migrate to Apigee X if your API execution has one or more of the following errors:

  • INVALID_CHARACTERS_IN_HEADER
  • MISSING_COLON
  • MULTIPLE_CONTENT_LENGTH
  • CONTENT_LENGTH_NOT_INTEGER
  • INVALID_UPGRADE
  • URL_HEADER_SIZE_TOO_LONG
  • BODY_NOT_ALLOWED
  • UNSUPPORTED_HTTP_VERSION
  • ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT
  • UNSUPPORTED_RESPONSE_PREFIX
Yes

Resolution: Non-compliant RFC headers

You must fix the error(s) in RFC headers before migrating to Apigee X. If you're getting the error from any of your clients, you must ask them to fix the errors.

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:

Apigee Edge Apigee X
No constraint on the OAuth 2.0 token expiration time is currently enforced but enforcement is planned. See the guidelines in the OAuth section of the Limits page. You must set an access token and refresh token expiry time for OAuth 2.0. The supported ranges are:
  • 180 seconds <= OAuth 2.0 access token expiry time <= 30 days
  • 1 day <= OAuth 2.0 refresh token expiry time <= 2 years
No

Resolution: OAuth 2.0 token expiration time invalid

Use the OAuthV2 policy, and specify the expiry time in <ExpiresIn> and <RefreshTokenExpiresIn>.

Product limits exceeded

Summary Requires client-side changes? Resolution

Configuration of Apigee Edge is not compliant with the defined product limits. Product limits that are documented but not enforced on Apigee Edge are enforced on Apigee X.

No

Resolution: Product limits exceeded

Correct 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 <LocalTargetConnection> element should include either the <APIProxy> and <ProxyEndpoint> elements or the <Path> element, but not both. For more information, see the <LocalTargetConnection> element.

Apigee Edge documents this requirement but does not enforce it. Apigee X stops processing if it encounters a <LocalTargetConnection> with both configurations.

No

Resolution: ServiceCallout policies with both endpoint and path target connection specifiers

Check ServiceCallout policy configurations and eliminate any <LocalTargetConnection> configurations that are not compliant.

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 restrictions

Check 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

Virtual host(s) uses the built-in free trial certificate. This causes the virtual host to respond to *.apigee.net requests.

No

Resolution: Trial certificate in a virtual host

The free trial certificate is not available in Apigee X. You must get your own domain certificates and move away from Apigee-provided *.apigee.net certificates.

Unresolved DNS

Summary Requires client-side changes? Resolution

The target endpoint(s) have unresolved domain name(s).

Difference between Apigee Edge and Apigee X:

Apigee Edge Apigee X
If DNS resolution fails, Apigee appends .apigee.com to the domain name and the DNS resolves successfully with a 4xx response code. If DNS resolution fails, Apigee does not execute the request and returns a 5xx response code.
No

Resolution: Unresolved DNS

Update the target endpoint with a valid domain name.