cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

Need advice on building solution layers

I have been using this product since MS CRM 3.0 was released and I am a developer by trade. I am building a complex application using both Canvas and Model driven apps on Dataverse and I am looking for some advise on best practices to build using application layers. Most of my experience has been working with single solution files delivered as unmanaged, but we have multiple people working now in a single dev environment and the customer prefers managed solutions.

 

Therefore, I think we should use segmented solutions to draw clear boundaries around where certain configuration parts are built. My plan is/was to emulate (something like) the ADX solution layer approach, and create a core solution with just table schema and metadata, one for automation, one for security, and a UI solution with forms and views (my memory is probably faulty in this regard). 

 

I have read the Solution Lifecycle Management PDF and it simply notes that there are challenges with this approach, but nothing I can start with. Can someone give me some of their lessons learned/best practices about how I should layer solutions? 

Thanks in advance. 

6 REPLIES 6
parvezghumra
Most Valuable Professional
Most Valuable Professional

Hi @eccountable,

 

I believe Microsoft still recommend building a single unmanaged solution per development environment, so that would potentially mean multiple different development environments for each 'layer', and each one being promoted to the development environment corresponding to higher layers as managed.

 

If your solution segmentation is based on technical boundaries (ie. component types), this can become quite expensive and complex to implement, so the approach I have taken so far is to have all my unmanaged solutions built in a single development environment. The Microsoft recommendation could potentially be more practical if your segmentation was based on another dimension (eg. based on geographic region, or business process/functionality etc)

 

I have been trying to work out a clean separation/segregation approach for solutions based on component types in my head for a while. The following is the best I could come up with but haven't tried it yet, so not 100% sure it would work. Hopefully it gives you a bit of a starting point. The idea is to think about potential component inter-dependencies and plan the correct solution to place each component type in in order to deploy in a fixed order gracefully. So any additional component you introduce, would need to be planned into the correct existing solution or introduced into a new solution in the correct place. I haven't considered here things like SLAs, Templates and many other component types that you should consider.

 

Solution 1: Custom Connectors and PCF Controls
Solution 2: Data Model (Entity, Columns, Choices, Web Resources, Security Roles, Field Security Profiles)

Solution 3: Plugin Assemblies, SDK Message Processing Steps, Custom Workflow Assemblies, Classic Workflows, Custom Actions, Custom APIs
Solution 4: UI (Forms, Views, Charts, Dashboards, Business Rules, Business Process Flows, Reports)
Solution 5: Cloud Flows and Connection References
Solution 6: Model-Driven Applications and Sitemaps, Canvas Apps, Custom Pages

 

Hope this helps. Happy to discuss further.




Parvez Ghumra, XRM Solutions UK
Microsoft Business Applications MVP | Power Platform | Dynamics 365 CE/CRM | Azure - Developer | Technical Consultant | Technical Architect | Community Super User | User Group Co-Organizer | Blogger

If this response helped you in any way, please give kudos by clicking the 'Thumbs Up'/'Like' button and/or marking it as an 'Accepted Solution'. This helps others by providing a quick way to identify likely solutions to their issues.

Also, for more useful content, please free to add me as a friend on this forum, follow my blog, follow me on Twitter and connect with me on LinkedIn

a33ik
Most Valuable Professional
Most Valuable Professional

@eccountable we use a pretty much similar structure of solutions that @parvezghumra provided with a slight variation.

@parvezghumra just for my understanding - when the custom entity is added how do you split Data Model (entity itself) and UI - Forms and Views one from another? It doesn't look like something doable for new custom entities.

 

Here is the structure we used in one of the projects I'm currently working on:

  • WebResources and PCFs
  • Core - Entities, Fields, Views, Dashboards, Global Optionsets, Connection Roles
  • Misc - Knowledge Management, Email Templates, Environment Variables, Record Creation, and Update Rules
  • .Net Components - Plugins Assemblies, Plugins, Plugin Steps (Excluding steps that handle actions' messages), Custom Workflow Steps
  • Processes - Workflows, BPFs, Actions with steps that handle actions, Custom API
  • Flows - Connection References, Custom Connectors, Power Automate Flows
  • Security - Security Roles, FLS Profiles
  • Applications - Model Driven Apps, Canvas Apps, Custom Pages, SiteMaps, Component Libraries, Settings

If you have anything extra that is not listed you will have to either find the most appropriate solution or add a new solution that has dependencies only on previous elements

parvezghumra
Most Valuable Professional
Most Valuable Professional

@a33ik That's a great point that I hadn't considered. Thanks for raising. As I said, I haven't tried and tested this particular approach yet 😃 Based on this I would assume you would place your forms into your 'Core' solution with Views? If that's true, wouldn't your Security Roles need to go into the 'Core' solution too because of potential dependencies that forms can have on them?

 

Now that you mention it, and having thought this through again, I think there's no option but to move forms and views out of solution 4 and include into solution 2 instead if you're following the pattern I suggested in my previous comment?

 

Great discussion, and this is always a fascinating discussion!




Parvez Ghumra, XRM Solutions UK
Microsoft Business Applications MVP | Power Platform | Dynamics 365 CE/CRM | Azure - Developer | Technical Consultant | Technical Architect | Community Super User | User Group Co-Organizer | Blogger

If this response helped you in any way, please give kudos by clicking the 'Thumbs Up'/'Like' button and/or marking it as an 'Accepted Solution'. This helps others by providing a quick way to identify likely solutions to their issues.

Also, for more useful content, please free to add me as a friend on this forum, follow my blog, follow me on Twitter and connect with me on LinkedIn

a33ik
Most Valuable Professional
Most Valuable Professional

@parvezghumra good point on Forms that are dependent on Security Roles. In this case, I believe Security Roles can be placed into "Core" solution.

Thanks @parvezghumra and @a33ik (Andrew). The layers work, but the stumbling block is that when I create a custom table, it creates forms and views in the core solution that cannot be removed. That means if I add lookups, subgrids, or quick views to the forms, then my core solution begins to have dependencies to objects in the UI solution. Now my plan is to use a pristine 'core' environment where I create the tables but do nothing else, and export that core solution to my dev environment as managed (thus mimicking the CDS managed layer). Then I can build my segmented solutions on top of that in a single environment. Here is my model / deployment order:

  • Utility - Reusable code that is not specific to an environment, such as a PCF, web resource, or JS
  • Core - Custom tables
  • Foundation - Additional fields, relationships, global choice, table metadata 
  • Automation - Business logic such as WF, CF, Plugin, data duplication rules, connection references
  • Security - Security Roles and FLS profiles
  • UI - App, site map, forms, views, JS, BR, dashboards, template, canvas page

I am able to successfully build and deploy layers of managed solutions to a production environment, although this was a very simple test run with a couple tables and not a fully-loaded development effort. One more thing I learned was that the publisher I created in the Core environment is not available in my Dev environment, so I also had to create a solution for just the publisher and import it as unmanaged into the Dev environment so that I didn't end up with more than one publisher. 

 

I will be updating this thread as I learn more. 

parvezghumra
Most Valuable Professional
Most Valuable Professional

Nice work @eccountable. Sounds like you're on the right track




Parvez Ghumra, XRM Solutions UK
Microsoft Business Applications MVP | Power Platform | Dynamics 365 CE/CRM | Azure - Developer | Technical Consultant | Technical Architect | Community Super User | User Group Co-Organizer | Blogger

If this response helped you in any way, please give kudos by clicking the 'Thumbs Up'/'Like' button and/or marking it as an 'Accepted Solution'. This helps others by providing a quick way to identify likely solutions to their issues.

Also, for more useful content, please free to add me as a friend on this forum, follow my blog, follow me on Twitter and connect with me on LinkedIn

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!   This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08  23 @WarrenBelz  31 @DBO_DV  10 @Amik  19 AmínAA 6 @mmbr1606  12 @rzuber  4 @happyume  7 @Giraldoj  3@ANB 6 (tie)   @SpongYe  6 (tie)     Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08  10@WarrenBelz 25 @DBO_DV  6@mmbr1606 14 @AmínAA 4 @Amik  12 @royg  3 @ANB  10 @AllanDeCastro  2 @SunilPashikanti  5 @Michaelfp  2 @FLMike  5 @eduardo_izzo  2   Meekou 2   @rzuber  2   @Velegandla  2     @PowerPlatform-P  2   @Micaiah  2     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27     Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8   SunilPashikanti8

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages