This is the first of 5 posts in my new series exploring the key things you need to know, as a citizen developer, when getting started with building model-driven apps, on the Power Platform.

1. Working with solutions (this post)
2. Working with tables
3. Working with forms
4. Working with views
5. Working with the App Designer

UPDATE: If you prefer to follow along in a YouTube video instead you can find it here:
Getting Start With Model-Driven Apps – Working with Solutions

In this post I will present the most important aspects of solutions that you need to be familiar with, when working with model-driven apps. Even though my focus is mainly on model-driven apps, many of the key points in this post also apply to canvas apps, and other objects on the power platform in general.

For every problem, there is a Solution

The Power Platform empowers organizations to create low-code/no-code tailored business applications and streamline their processes effectively. At the heart of this platform are the “solutions”, which serve as containers for organizing, managing, and deploying customizations.

In this post I am going to cover the 5 key areas that I think are most important to know about when working with solutions:

1) What are solutions
2) Managed and unmanaged layers
3) Best practice when working with solutions
4) Possible pitfalls
5) Key differences between working solutions and the app designer

1. What are solutions?

So what is a solution? A solution can be seen as the Power Platform framework for dealing with two distinct requirements when developing apps.

1: The first is the need to have a clear repository of what is being developed (this can be either by a specific person, company, or for a specific change request/issue/etc.).

2: The second is to manage the transfer of any modifications or customizations between environments – typically from the development environment, over to the test environment, and finally on to the production environment.

In this way, Solutions act as containers for customizations such as entities, fields, views, forms, workflows, and other objects. They allow users to package and distribute applications, business processes, or specific functionalities as manageable units. Solutions can be exported, imported, and shared across environments, providing a flexible and scalable approach to application development and deployment.

By doing this, they also provide an easy overview of what is being worked on either by a specific person or team, for a specific application or even for a specific function (the granularity of this can be determined based on your organizational needs). As mentioned above, you should adhere to a best-practice of using solutions to only contain what is being added or modified.

2. Managed and unmanaged layers

When working with solutions, it is imperative to understand the key differences between managed and unmanaged solutions, and the consequence of how each are used. I will first explain what the two terms mean, and then provide an example of what happens when solutions layers are applied.

Unmanaged Solutions
Unmanaged solutions are primarily used during the development phase. They allow direct customization of components within the solution, providing a highly flexible and iterative approach. With unmanaged solutions, changes made in one environment can be easily merged into another environment. However, caution must be exercised when using unmanaged solutions, as they offer fewer restrictions and can lead to unintended consequences if not managed properly.

Managed Solutions
Managed solutions are typically used for distribution and deployment in production environments. They provide a locked-down, packaged experience, ensuring that customizations within the solution cannot be modified directly in the target environment. Managed solutions offer a controlled environment where customizations are only allowed through the solution publisher, ensuring better governance, versioning, and control over the application lifecycle.

So what does this mean for me as a Power Platform citizen developer?
The dotted line on the left side represent the solution layer filtering. Everything goes from bottom to the top, and the top layer is always “right”. So irregardless of how many time an object has been altered throughout this filtering, the change made in the top layer will determine what actually happens in the application layer and what the end-user will see.

A concrete example of this could be the “full name” column in the user table. In the standard Dataverse system layer, the user table has the full name column as the primary name column, but there could be a managed solution where this column was renamed to just be “Name” instead. Then in the unmanaged layer it could be renamed to “Real name”.
The end result is that the application (including views) would see “Real name” and not any other of the options, as they are further down in the solution layers and therefore not relevant anymore.

For this reason it is also important to never have unmanaged layers on any other environments than the development environment, as unmanaged layers do not give you any control over the specific objects, nor the ability to roll back changes made. I will make a longer post at a later point diving in to solution management between environments.

3. Best Practices

  • Plan Ahead: Clearly define the scope and objectives of your solution before starting development to ensure a streamlined implementation.
  • Version Control: Maintain proper versioning of your solutions to track changes, rollback if necessary, and ensure smooth collaboration among team members.
  • Solution Layering: Organize your customizations into multiple layers within a solution, separating base components from customizations, and allowing easier maintenance and upgrades.
  • Documentation: Document your solution design, configurations, and dependencies to aid in troubleshooting, future enhancements, and knowledge sharing.
  • Solution Lifecycle Management: Follow a structured approach for solution deployment, testing, and promotion between environments using tools like Azure DevOps or Power Platform Build Tools.

4. Possible pitfalls

There are several things that you need to consider when working with solutions. These are a couple of examples of possible pitfalls:

  • Over-customization: Solutions can become complex if not planned properly, leading to performance issues, conflicts, and difficulty in maintaining and upgrading the solution.
  • Dependency Conflicts: Be cautious when managing dependencies between solutions, as changes made to one solution may impact others.
  • Solution Mismatch: Avoid deploying a solution to an environment where its dependencies or prerequisites are not met, as this can cause errors or unexpected behavior.
  • Data Loss: Exercise caution when uninstalling or removing managed solutions, as it may result in the loss of data associated with those customizations.

5. Key differences between working solutions and the app designer

Part five of this series will also cover the app designer in more depth, but I wanted to touch upon some key differences between the App Designer and solutions in this post, as this is important to be aware of at an early stage.

The App Designer is a visual tool within the Power Platform that enables users to create model-driven apps. As mentioned already, solutions provide a container for organizing and managing customizations. So the App Designer focuses on the design and configuration of the user interface, business logic, and app-specific functionalities. The App Designer thus allows for rapid application development using a low-code approach, while solutions provide a broader framework for managing the entire solution lifecycle, including customizations, dependencies, and deployment.

Many citizen developers instinctually gravitate towards working with the app designer first as a basis for building their application, which also makes sense from a UI/UX point of view, as this also lets you work with your application in preview-mode and is a graphical approach instead of the “technical” approach of the solution. However, it is important to keep in mind that any changes made in the app designer are not reflected in the solution and therefore, when exporting the solution to a new environment, changes made in the app designer need to be reflected in the solution as well. This is because the app designer itself only provides an overview of which elements are used in the application, whereas the solution only provides the image of what the specific development iteration contains. This can be hard to navigate for new users, as the layers of solutions can become quite complex.

An example could be adding a table and making modifications to it in an application. Even if the table is a standard CDS table, any modifications made to any objects in the table also needs to be added to the solution itself, or they will not work correctly when running the application on the test and production environments.

Wrapping up
Solutions play a crucial role in harnessing the full potential of the Power Platform by providing a structured approach to organizing and deploying customizations. By understanding the concepts of managed and unmanaged layers, as well as avoiding the pitfalls of working with solutions, you are well on your way to becoming a successful citizen developer!

Designed with WordPress

We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.
Cookies settings
Accept
Privacy & Cookie policy
Privacy & Cookies policy
Cookie name Active

Privacy Policy

What information do we collect?

We collect information from you when you register on our site or place an order. When ordering or registering on our site, as appropriate, you may be asked to enter your: name, e-mail address or mailing address.

What do we use your information for?

Any of the information we collect from you may be used in one of the following ways: To personalize your experience (your information helps us to better respond to your individual needs) To improve our website (we continually strive to improve our website offerings based on the information and feedback we receive from you) To improve customer service (your information helps us to more effectively respond to your customer service requests and support needs) To process transactions Your information, whether public or private, will not be sold, exchanged, transferred, or given to any other company for any reason whatsoever, without your consent, other than for the express purpose of delivering the purchased product or service requested. To administer a contest, promotion, survey or other site feature To send periodic emails The email address you provide for order processing, will only be used to send you information and updates pertaining to your order.

How do we protect your information?

We implement a variety of security measures to maintain the safety of your personal information when you place an order or enter, submit, or access your personal information. We offer the use of a secure server. All supplied sensitive/credit information is transmitted via Secure Socket Layer (SSL) technology and then encrypted into our Payment gateway providers database only to be accessible by those authorized with special access rights to such systems, and are required to?keep the information confidential. After a transaction, your private information (credit cards, social security numbers, financials, etc.) will not be kept on file for more than 60 days.

Do we use cookies?

Yes (Cookies are small files that a site or its service provider transfers to your computers hard drive through your Web browser (if you allow) that enables the sites or service providers systems to recognize your browser and capture and remember certain information We use cookies to help us remember and process the items in your shopping cart, understand and save your preferences for future visits, keep track of advertisements and compile aggregate data about site traffic and site interaction so that we can offer better site experiences and tools in the future. We may contract with third-party service providers to assist us in better understanding our site visitors. These service providers are not permitted to use the information collected on our behalf except to help us conduct and improve our business. If you prefer, you can choose to have your computer warn you each time a cookie is being sent, or you can choose to turn off all cookies via your browser settings. Like most websites, if you turn your cookies off, some of our services may not function properly. However, you can still place orders by contacting customer service. Google Analytics We use Google Analytics on our sites for anonymous reporting of site usage and for advertising on the site. If you would like to opt-out of Google Analytics monitoring your behaviour on our sites please use this link (https://tools.google.com/dlpage/gaoptout/)

Do we disclose any information to outside parties?

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our website, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety. However, non-personally identifiable visitor information may be provided to other parties for marketing, advertising, or other uses.

Registration

The minimum information we need to register you is your name, email address and a password. We will ask you more questions for different services, including sales promotions. Unless we say otherwise, you have to answer all the registration questions. We may also ask some other, voluntary questions during registration for certain services (for example, professional networks) so we can gain a clearer understanding of who you are. This also allows us to personalise services for you. To assist us in our marketing, in addition to the data that you provide to us if you register, we may also obtain data from trusted third parties to help us understand what you might be interested in. This ‘profiling’ information is produced from a variety of sources, including publicly available data (such as the electoral roll) or from sources such as surveys and polls where you have given your permission for your data to be shared. You can choose not to have such data shared with the Guardian from these sources by logging into your account and changing the settings in the privacy section. After you have registered, and with your permission, we may send you emails we think may interest you. Newsletters may be personalised based on what you have been reading on theguardian.com. At any time you can decide not to receive these emails and will be able to ‘unsubscribe’. Logging in using social networking credentials If you log-in to our sites using a Facebook log-in, you are granting permission to Facebook to share your user details with us. This will include your name, email address, date of birth and location which will then be used to form a Guardian identity. You can also use your picture from Facebook as part of your profile. This will also allow us and Facebook to share your, networks, user ID and any other information you choose to share according to your Facebook account settings. If you remove the Guardian app from your Facebook settings, we will no longer have access to this information. If you log-in to our sites using a Google log-in, you grant permission to Google to share your user details with us. This will include your name, email address, date of birth, sex and location which we will then use to form a Guardian identity. You may use your picture from Google as part of your profile. This also allows us to share your networks, user ID and any other information you choose to share according to your Google account settings. If you remove the Guardian from your Google settings, we will no longer have access to this information. If you log-in to our sites using a twitter log-in, we receive your avatar (the small picture that appears next to your tweets) and twitter username.

Children’s Online Privacy Protection Act Compliance

We are in compliance with the requirements of COPPA (Childrens Online Privacy Protection Act), we do not collect any information from anyone under 13 years of age. Our website, products and services are all directed to people who are at least 13 years old or older.

Updating your personal information

We offer a ‘My details’ page (also known as Dashboard), where you can update your personal information at any time, and change your marketing preferences. You can get to this page from most pages on the site – simply click on the ‘My details’ link at the top of the screen when you are signed in.

Online Privacy Policy Only

This online privacy policy applies only to information collected through our website and not to information collected offline.

Your Consent

By using our site, you consent to our privacy policy.

Changes to our Privacy Policy

If we decide to change our privacy policy, we will post those changes on this page.
Save settings
Cookies settings

Discover more from Power Apps Viking

Subscribe now to keep reading and get access to the full archive.

Continue reading