Skip to content

Solutions

Jan Koštejn edited this page Sep 5, 2019 · 1 revision

Contents

Introduction

Solution is '.zip' package which enables ISVs to import customizations to other (downstream) environment. This page will help you to understand what's defining solution and how one can be created.

Unmanaged vs. Managed

Let's start with the unmanaged vs. managed debate, because that's the first thing you need to understand if you want to deliver quality products for CDS.
images/solutions_unmanaged-vs-managed.png
This should be self-explanatory enough... If someone argues with you, that using unmanaged solutions is better, strongly disagree with him or her. Using unmanaged solutions is easier and quicker but doesn't make sense if there's need to scale the solution in the future. Using unmanaged solutions in downstream environments is a way straight to the hell from the long term support point of view.
Another important reason for using managed solutions is solution layering. If I simplify it - you can import and uninstall solution without any changes to a customer's environment thanks to solution layering.

Solution Internals - Web UI

First of all, you are able to find all solutions in the web UI. Go to Settings -> Solutions.
solution-ui

Solution Internals - Local Build

But you should understand what's a solution and how to create one without web UI... As I said in the beginning - solution is a '.zip' package. This goes for both managed and unmanaged ones.
files-in-folder
If you open this package you can find few files and maybe even folders.
opened-archive
'solution.xml' and 'customizations.xml' are the most important files.

solution.xml

If you open this file, you'll see the solution definition:

  • solution unique name
  • localized names
  • descriptions
  • version
  • package type ()
    • 0 = unmanaged
    • 1 = managed
    • 2 = both
  • publisher
  • root components
    • solution components - basically what's in the customizations.xml
  • missing dependencies
    • what are the components dependent on

solution-xml

customizations.xml

If you open this file, you'll see the concrete customizations done to a component. Or if you're adding some webresource, assembly or other binary file, you'll find description of that file here in the customizations.xml.

customizations-xml

This is how would empty solution look like.

Tooling

More on that in the tooling page but get used to SolutionPackager.exe you will need it a lot since it's the tool, that can extract all customizations from the customizations.xml into multiple files for more readable experience.

Clone this wiki locally