Upgrade's application-identifier entitlement string does not match installed application's application-identifier string

We are trying to create a new build of an app for iPad and iPhone which has just been transferred to a new account. The new build will not install over the version which is published on the AppStore.


XCode says... Failure Reason: This application’s application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.


The main error in the console is of the form... Upgrade's application-identifier entitlement string (NEWTEAMID.com.COMPANY.APP) does not match installed application's application-identifier string (OLDTEAMID.com.COMPANY.APP); rejecting upgrade. The only mismatch is in NEWTEAMID vs OLDTEAMID.


The app contains file picker and provider extensions sharing an app group with the app. The IDs for these these were not moved to the new account by the transfer process. We have re-created them in the new account with Xcode, which required that they were deleted from the old account. Data stored by the app includes files in the group folder and settings accessed via NSUserDefault, but nothing keychain related, I don't think.


Apple Developer Support - Development and Technical referred me to the documentation, including https://developer.apple.com/library/archive/technotes/tn2319/_index.html#//apple_ref/doc/uid/DTS40013778-CH1-ERRORMESSAGES-UPGRADE_S_APPLICATION_IDENTIFIER_DOES_NOT_MATCH_THE_INSTALLED_APP, which suggests that if the app is to use the new team ID, we need to manually edit entitlements files and request a special provisioning profile from Apple. I don't see how we could sign the app with the old team ID.


I have sent a request via the "Apple Developer Program Support" link in the tech note, using the heading "Certificates, Identifiers, Profiles". The new reply from Apple suggests I use a technical support incident via apple.developer.com/support/technical, but reading that page suggests to me it is for code level, API support.


There are other threads in these forums about this problem but I can't see any solutions apart from deleting the old application or resetting your watch, and there are "me too, did you manage to fix this" responses.


Does anyone know how can we proceed to update the existing app, so existing users will not lose data stored by the app?


It could be helpful to many to record the current solution here.

Replies

An Application Identifier consists of your Bundle ID, e.g. com.company.app as well as your TeamID as a prefix. Combined, the ApplicationID might be something like this: FEG63bFE.com.company.app. When transferring an app, your Bundle ID stays the same, however, your TeamID does change, resulting in a different Application Identifier. Therefore, the new version with the Application Identifier and the old version can not be matched.

To solve this problem, there are two steps to follow:

  1. Add a previous-application-identifiers entitlement to a code signing entitlements file for your app.

  2. Request a special provisioning profile from Developer Programs that will also contain the above entitlement. Make this request through the Developer Contact page > Membership > Enrollment and Account > Apple Developer Program Support form.

Please see the official Apple Developer Documentation on this topic.

Please see this official Apple Developer Tech Note for more information as well as a detailed step by step solution.

Here's how I do it:

  1. Download the OLDTEAMID APP first
  2. Use NEWTEAMID to package the new app and upload it to testflight
  3. Download the NEWTEAMID app, don’t open the app, don’t open the app, don’t open the app
  4. Use NEWTEAMID to recompile, install and run xcode to debug