Uninstall Process of Premium Wizard Application

I want to uninstall Genesys Cloud artifacts through the Install Wizard application when I get any exceptions while installing the premium application. But as per Genesys App Foundry norms, the 'enableUninstall' configuration should be disabled for the production environment.

So, how can I go forward with uninstall process from the Install wizard app?

Hello,

I assume you are developing your own Premium Application Wizard - i.e. a wizard to install your Premium Application integration.
If that's the case, indeed, we do not want Wizards to expose an uninstall functionality (after wizard has been deployed successfully).

This being said, regarding your case (removing objects created during a failed installation), you can extend the code if you want.
The Premium Application Wizard code is a sample code, a base start. You're free to use it as it is (modifying configuration), or to extend it (modifying code or supporting new modules/object types, ...), or to rewrite it from zero.
At this time, it does not manage the case you are describing. But as said you can modify the code to catch exceptions during installation and uninstall corresponding objects.
If your question is to keep the enableUninstall to true and implicitly invoke the wizard url with it when something fails during the installation, the answer is no. This capability was just meant for dev and hasn't been tested thoroughly.

Regards,

Hello,

Thanks for your response.

I have an extension question to the main one. Once installation is successful, how does a Genesys Org get rid of the Genesys entities created by this app when they decide not to continue with the subscription (say after a few years)? By performing Uninstall on the Integration page, it DOESN'T remove Genesys items created by the installer.

What is the Genesys recommendation for this one?

Assume, we enable Uninstall of the Integration using a link (say embedded part of the developed application), and an Organization decides to proceed with Uninstall, this would allow the cleanup of all Genesys items created by our installer. If the user decides to install again, all they have to do is launch the application and it would start the installation again before redirecting to the main app.

Also, we intend to only show uninstall link ONLY for Genesys Administrators.

Is this ok to go with this approach?

Hello,

Ending the subscription will cause the "types" created specifically for your Premium App to be removed from the customer's environment.
What I mean is the integration type id, product, license, permission created for the premium app (using the example: premium-app-example, examplePremiumApp, integration:examplePremiumApp:view).

Doing Uninstall on the integration page does not end a subscription. It just deletes the integration object/instance.
Ending a subscription can be done from the Subscriptions page (if purchased from AppFoundry site directly) or contacting his Sales representative to have it removed from the customer's subscription.

Regards,

Thanks for your response.

I understand what you are saying. My question is subtly different. Say my application install wizard creates 2 Roles, 1 OAuth Client, and 1 Group, and creates/updates the app instance. This OAuth Client is used by our application to pull the required data. When an Org no longer has a need for my application, they would cancel the subscription appropriately.

How do the 2 Roles/ 1 OAuth Client, and 1 Group I created get cleaned up? Is it Organization's Administrator's responsibility to keep track and remove them later? Else they may just be there forever. Which is a concern from my point of view as this OAuth Client needs to be removed somehow.

This cleanup is done by the Uninstaller portion of the app. If we set enableUninstall: true, in production too, we can provide an Uninstall application URL part of the loaded application in IFrame (visible ONLY to Genesys Administrator). Clicking on this one would do the required cleanup.

Is this ok to move forward with enableUninstall: true or we should ALWAYS have enableUninstall: false for production?

What is the concern issue Genesys is recommending apps to have enableUninstall: false for production?

Objects with types which have been removed will either be modified (exemple: premium app permission removed from roles that used to contain it, integrations of Premium Integration type removed, ...).
Roles:OAuth Clients will remain.

"Is it Organization's Administrator's responsibility to keep track and remove them later?"
Yes.

"Is this ok to move forward with enableUninstall: true or we should ALWAYS have enableUninstall: false for production?"
No.

"What is the concern issue Genesys is recommending apps to have enableUninstall: false for production?"

We do not want uninstall capability to be exposed after wizard is deployed.

Regarding the specific case that you raised (remove objects catching exception when wizard is running and fails), you can manage it as I said.
You just need to modify your wizard sample code accordingly to manage it.
We do not want you to leverage the uninstall:true in this case as it was not tested for this (just a quick piece of code to allow developers to easily uninstall deleting objects when there is no risk as it is not a production environment, and may delete unwanted objects). You would have to modify the code to keep the id of objects you have created and delete them one by one and not rely on the wizard existing uninstall.

Regards,

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.