Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
catalin
Partner - Contributor III
Partner - Contributor III

Qlik Sense Application ID persistence

Hello, dear Qliknauts!

I have a question about how Qlik deals with IDs when importing/exporting apps.

Let's suppose I have QS app ID 1 on machine A. I have the same QS app with ID 2 on machine B.

I modify the app on machine A. I export it through QMC. I import it into machine B with the option to replace the existing application.

Do you know what gets to remain and what changes regarding IDs on machine B?

I can't wrap my head around app IDs, sheet IDs, object IDs, and master objects, concerning import/export procedures from one machine to another. 

The reason that I ask is we will have to implement QS on multiple machines, which will contain a bunch of applications that are common to all of the machines. There is one Development server in which the changes on each application are processed, then exported and imported to each of the Prod machines.

We use various dashboards integrated with web apps, with visuals specific to each QS instance, to display to factory workers some details for the production line.

I am looking for a way to persist a unique identifier for the app, sheet, and object to correctly identify them by this unique tag in our web apps, even when the IDs get modified by a replace operation.

Any insights about this are highly appreciated.

Thanks a bunch!

Catalin

 

Labels (1)
1 Solution

Accepted Solutions
JonnyPoole
Former Employee
Former Employee

App Object IDs do NOT change.  So if you have a text/image object in AppID1 it will persist with the same App Obect ID after export from site A and import to site B.

If you publish App1 in site B and update App2, the app object will be added to App2 and retain the app object ID as it was in App1.

When republishing App1 to update App2 later, the object ID will only change if it was changed in App1 (like if it was deleted and recreated in App1).

Maybe store app object version values in regular variables and reference them in the app object descriptions?  Variables can be stored/maintained externally and updated through a driver file (INLCUDE file or excel spreadsheet). 

View solution in original post

5 Replies
JonnyPoole
Former Employee
Former Employee

App IDs change when export/import. An app with an AppID exported from siteA will have a different AppID after being imported into siteB. 

However, when you publish/replace an app, the target AppID does not change.

1. AppID1 in site A = 'A'

2. AppID1 in site B after being exported from site A and imported into site B = 'B'

3. AppID2 in site B = 'C'

4. When you do a publish/replace operation using App1 to update App2 in Site B, the AppID of App2 is retained and stays as 'C'. 

JonnyPoole
Former Employee
Former Employee

App Object IDs do NOT change.  So if you have a text/image object in AppID1 it will persist with the same App Obect ID after export from site A and import to site B.

If you publish App1 in site B and update App2, the app object will be added to App2 and retain the app object ID as it was in App1.

When republishing App1 to update App2 later, the object ID will only change if it was changed in App1 (like if it was deleted and recreated in App1).

Maybe store app object version values in regular variables and reference them in the app object descriptions?  Variables can be stored/maintained externally and updated through a driver file (INLCUDE file or excel spreadsheet). 

Øystein_Kolsrud
Employee
Employee

One thing that could be worthwhile to add here is that there is a difference between the IDs used by the engine and the IDs used by the repository. The engine object IDs are unique within an app not between apps, and they will be preserved if you duplicate or import it. That is not the case for the IDs used by the repository, and if you look at the IDs in the app objects section of the QMC, then it's the repository IDs you see. Those IDs need to be unique for the whole installation, so if you duplicate an app, then the engine object IDs are preserved, but the repository object IDs will be new ones.

When you import and replace an app then the system strives to preserve the IDs. So any engine object that matches an object that is already present will preserve both IDs. But if there is for instance a new sheet in the app you are replacing with, then the repository ID of that sheet will be a new unique ID.

The endpoint "/qrs/app/object/{id}" returns both IDs:

https://help.qlik.com/en-US/sense-developer/February2024/APIs/RepositoryServiceAPI/index.html?page=5...

You'll see that the response carries both a property named "id" and a property named "engineObjectId". The first one is the repository ID and the second one is the one used by the engine.

catalin
Partner - Contributor III
Partner - Contributor III
Author

Thanks a lot! This helps me greatly!

catalin
Partner - Contributor III
Partner - Contributor III
Author

Thanks a lot!