The v2 Apps had been a first experimental feature to enable AI based application development in Simplifier. With our integration of Anna into Simplifier, Ai based development gets a lot easier. External AI development is still possible but adapted to enable Anna to also work with the results of the external development.
You migrate an application in six steps:
- Before the upgrade: Update your local clone of the v2 app and delete it in Simplifier
- After the upgrade: Create an AI App
- edit one file in your local clone of the v2 app
- push,
- verify,
- deploy.
Doings before the upgrade to MAKERS CHOICE 26-09
Before you start the upgrade of your instance
- Update your local clone of your v2 apps and make sure it is the latest version.
- Note each v2 app’s technical name, role assignments, project and transport packages — none of them are carried over.
After that, delete your v2 apps in Simplifier, so the application’s names are available for the migrated applications.
Now your are ready to upgrade your instance to MAKERS CHOICE 26-09.
Doings after the upgrade to MAKERS CHOICE 26-09
1. Create the AI App
In the Admin UI: Applications → Create → App Editor Version: AI App.
Or via REST. Use basic auth with your Simplifier user as header parameter. The call answers as soon as the repository exists:
POST https://<host>/UserInterface/api/application
{"category": "Application", "name": "<AiAppName>", "displayName": "<display name>", "description": "",
"appEditorVersion": "aiApp", "defaultLanguageCode": "en_US",
"systemLib": {"name": "<lib>", "version": "<version>"}, "assignedProjects": {}}
2. Fix the API base URL in webapp/modules/AppSettings.ts
In your v2 clone, this file derives the API base URL from the page path and does not know ‘/ai/app/‘. Without this edit, every backend call from the live preview goes to ‘/UserInterface/‘ and fails with 404. Replace the ‘apiBaseUrl‘ assignment with:
export const apiBaseUrl: string = _injected?.apiBaseUrl
?? (_inBtpLaunchpad
? _launchpadApiBaseUrl()
: (window.location.pathname.startsWith("/appDirect/")
|| window.location.pathname.startsWith("/ai/app/"))
? "/"
: "/UserInterface/");
Commit the change.
3. Push your v2 clone into the AI App
In the clone’s directory:
git remote set-url origin https://<host>/ai/app/git/<AiAppName> git push --force origin master git pull
- ‘–force‘ is required because the AI App starts with its own initial commit.
- ‘git pull‘ fetches the commit the AppServer makes during the push (its entries in ‘.gitignore‘, its block in ‘webapp/index.html‘).
Your v2 clone is now your working copy of the AI App; rename the local folder if you like. The sources may keep the v2 namespace (‘sap.app.id‘, ‘<title>‘). Only if you no longer have a clone: ‘git clone https://<host>/ai/app/git/<AiAppName>‘.
All other v2 files stay, including ‘.env‘ and the tooling configs. The app also keeps its v2 structure: backend calls go through ‘webapp/modules/*‘ and ‘BaseController‘, where a native AI App uses ‘webapp/util/*‘. Both work side by side, but Anna’s instructions describe the native helpers, so she may add ‘webapp/util/‘ files next to the existing modules/ ones.
If the push is rejected
| Message | What to do |
|---|---|
| Updates were rejected because the tip of your current branch is behind | ‘git pull‘, then push again. |
| Working directory has unstaged changes | The app is being edited (an Anna turn is running). Wait, then push again. |
| Could not update working tree to new HEAD | An untracked file on the server is in the way (in older AI Apps typically ‘pnpm-lock.yaml‘). Create a fresh AI App and push into that. |
4. Verify the application
Recreate the data, that is yet missing:
- Project assignments: Assign the AI App to its project
- Permissions and role assignments: Re-create/Re-assign the roles and permissions required for application
- Transport packages: Add the AI App to the required packages. Adapt your new app transport package, if you have assigned additional artifacts before
- Browser tab title: The ‘<title>‘ in ‘webapp/index.html‘ still reads ‘UI5 Application: <namespace>‘. Change it to the app’s real title.
- ‘README.md‘: Still describes the v2 workflow. Rewrite it, or replace it with a fresh AI App’s ‘README.md‘
- ‘dependencies.json‘: No longer used — an AI App derives its dependencies from the sources. Delete it
Now check that the live preview renders and that the app’s login works.
5. Deploy the application
Deploy the application in the application editor.
Or deploy via REST. Unlike the call in step 1, this one does not accept basic auth — fetch a token first and send it as the SimplifierToken header:
POST https:///genToken/
{"user": "", "pass": ""}
answers ‘{“result”: “”, “success”: true}‘. Then:
POST https:///ai/app//deploy
SimplifierToken:
{"deployToBtp": false}
The call builds the app before it answers, which takes about a minute.
- ‘deployToBtp: true‘ also copies the build into the app’s BTP deployment directory, if one is configured.
- A failed build still answers ‘200‘, with ‘message‘ reading ‘deploy failed: <reason>‘ instead of ‘deploy completed‘ – check the message, not the status code.











