cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
ZARE
Helper I
Helper I

Upate or Upgrade of large managed solution

Hi, I would like to get some advice around deployment strategy in situation when a solution gets very large and takes long time to deploy.

We have an ALM process where many developers send their customizations to a "build" environment. We gather all the customizations in one "main" solution, export it as managed and import to staging and production at the end of the sprint. Some of the problems:

  1. Solution takes a long time to deploy (we use Upgrade method)
  2. We have some out of the box entities there which we don't customize often. Multiple times we experienced issues when Microsoft installs an update in our dev or build environment BEFORE they do it in staging and production (we have asked multiple times if it is possible to control which environments get updates first, but we get response that it is totally random).

We are considering the following:

  1. Use "Update" instead of "Upgrade" method when importing. This way we should be able to always send "minimalistic" solution from our "Build" environment. I am not sure how easy it would be to handle deletion of components in this way. Some other disadvantages?
  2. Begin with a new solution and continue using "Upgrade" method. In this way our new solution would work as it works today, we would only have an extra layer on top of the solution we have now. It would also be tricky to delete stuff that is referenced in both layers, but I am not sure if we would have that need so often.

Thanks in advance

16 REPLIES 16
EricRegnier
Most Valuable Professional
Most Valuable Professional

Hi @ZARE, apologies for late reply. I understand what you are trying to do, and unfortunately solutions and pack/unpacking don't quite work like that. Unpacking/packing work at a solution level so if you have an updated solution with just the 5 components, after unpacking and committing, the repo will think all the other 95 components were deleted. If you absolutely want delta solutions, you'll to have create new solutions and unpack to different folders each time before committing, so from a repo history it will be messed up IMO. You may be overcomplicating it. May I ask why you would like to do this? Even though you unpack the full solution each time, with the repo history you'll only see those 5 changes, so you'll still have the traceability of only the components that changed. And since you're packing from the repo, you're ensuring that no WIP and only stable changes are being deployed. Even if you deploy components that didn't change, does it really matter? Comparing to traditional .NET deployment or Azure Functions, maybe a C# class didn't change but you still deploying the full DLL...

Hope this helps a little!

Apologies for late reply as well 🙂 We ended up creating another solution in our Build environment which we recreate after each sprint. We continue to maintain full solution like we did so far, but in addition we copy only components we worked with to this new solution. Deployment is done with "Update", not "Upgrade" method so no deletion is done. In repo we have both, full solution where we can trace changes like we could so far and the other one which is not so useful when it comes to tracking changes, but has only purpose of packing and deploying. The reason is that we experienced many times that Microsoft installs updates in our Build environment before Staging and Production. Then we get an error while importing and have to create a support ticket for MS to push updates in other environments as well. We will reduce this problem by deploying only those components we have worked with. Our pipeline will always pack both solutions, so we will be able to perform a full Upgrade (with deletion) occasionally. Hope this sounds reasonable 🙂

HEDI_BK
New Member

Hey @ZARE ,

How did you manage it at the end. I am facing the same issue of using a big solution for upgrade. I am thinking about making for each new release version a new solution that will contain only newly created components and the modified ones. So in AzureDevOps we need maintain two type of solutions, Sprint solution and Global solution

during a whole PI we deploy each sprint the sprint solution and at the end of the PI the Global one with Upgrade if needed.

In other projects, I've also seen a strategy that's totally based on a new solution for each Release, so there's no global solution. They always import a solution which contains the version in the name and not just in the version field so that let the target environment sees it as a new solution. The target environment contains several solutions:
R1_1_2    1.1.2
R1_2_0    1.2.0
R1_3_0    1.3.0
etc...
each time there is a new layer of solutions. I don't know whether this is a good solution or not.

Hi, we ended up with solution described above, let me know if there is something unclear in my description.

 

The catch is in maintaining a sprint solution which we recreate at the start of every sprint. In repo we change the name of the solution in Solution.xml with a PowerShell script and we set the same version as our full solution gets. When we pack it back from repo we are able to deploy it with Update method as a new version of existing solution (I was unsure first if this was going to work but it does) so no additional solution layers are created.

 

Strategy of deploying a new solution for every version does not sound like a good solution to me, there will be so many layers. How could you ever delete a component which is referenced in many of those versions?

Gusz
Regular Visitor

Our current set up is where have multiple solutions segmented by components e.g. schema (tables, columns, relationships, forms etc.), processes, security and so forth.

 

Some of these solutions have grown so large that when performing an upgrade the import takes upwards of two hours and during this time the system is next to unusable.

 

My current thought is using this structure but use update, though in the scenario we need to remove components we:

- create an "anchor" solution with the components to be removed 

- import the anchor solution to the target environment

- remove the components from the segmented solution

- import the segmented solution to the target environment

- delete the anchor solution from both source and target.

 

Just food for thought, have not tested this yet but in theory it should work.

piotr-albertin
Frequent Visitor

I’m not quite sure if I understood you correctly, and this topic is a bit old, but possibly someone else would benefit from the answers here.

 

My understanding of your scenario:

You have a base solution (following your example) with around 100 components. During a Sprint (the length probably doesn’t matter), you work on only 5 components. You want to reduce deployment time.

Btw, Could you clarify how long it currently takes you to deploy that solution with 100 components, and what duration you would consider as ‘reduced’?

 

Assuming my understanding is correct, here’s what you could do:

  1. Establish a regular ALM process to upgrade your BaseSolution (let’s use this term for simplicity). This process could be run every few sprints, or manually whenever you prefer.
  2. Prepare another ALM process that will import a solution called Sprint-XXX-Changes, which includes only the changes your team worked on during the Sprint. This way, you will have an additional layer on top of your BaseSolution, and deployment will be quicker (please clarify your goal here and why you want to achieve it). You could deploy this even every day during your sprint.

Note: Importing your updated (upgraded) BaseSolution should also remove your Sprint-XXX-Changes solution(s), as you wouldn’t want to have too many layers.

Hi @piotr-albertin, that can work but following healthy ALM practices is not recommended to have "Sprint-XXX-Changes:" or delta type of solutions. It could become quite a mess and interdependencies that might get impossible to solve. The import process and speed have improved quite a bit and will continue to improve. Having one solution (if possible) or practice a consistent solution segmentation is best, in otherwards, importing the same solution downstream (with version updates). If having separate solutions, suggest to have one environment per solution (exported as managed). More info at: https://learn.microsoft.com/power-platform/alm/?WT.mc_id=DX-MVP-5004271 

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

Users online (1,273)