Dynamics 2011 - What should I include in my base Library Solution? - dynamics-crm-2011

I am trying to sort out a best practise approach to organising solutions and more specifically what should be included in the 'base solution' or 'library solution'.
The SDK says the following:
Solution Libraries For an ISV with multiple solutions or a large
enterprise deployment, it is expected
that many solution components will
have to be shared. The best ways for
solutions to share components is to
create solution libraries. You create
a solution library by creating an
unmanaged solution in a separate
organization and then package those
components into a managed solution.
Install the managed solution into
another organization and let
developers reference these shared
components from the solutions they
create.
The Microsoft Dynamics CRM Solutions
Framework lets you build layers of
solutions that depend on each other.
Typically, you create a solution
library representing a ”base”
solution. Other solutions can be built
on top of this base solution.
What components should ideally be placed in the base/library solution? Core business entities and option sets? Core functionality and workflows?
There doesn't seem to be a great deal of guidance on the dynamics documentation.

If you have any functionality that you plan to share across multiple organizations that will be revisioned separately from the rest of your organization, then I would consider putting that in a separate solution.
For example, say you have multiple regions in your business that will each have their own CRM organization, but each of them uses a standard way of scoring and assigning leads. In this scenario, I'd create a solution that encompasses that functionality and install it on each organization, and that way when the process changed, the same solution could be pushed out to all the orgs and everyone would get the same changes.
Another possibility would be a common set of JavaScript libraries and plugins that you'd use across multiple organizations, maybe for things like autonaming or autonumbering records, or some custom business logic validation. That way if you found any bugs in them, you again could push the same changes to all orgs.
If you don't have multiple CRM organizations or you're not an ISV, I wouldn't bother with solutions. They're a great leap forward for CRM, but it's definitely the first pass around, and there are some quirks and headaches to working with them.

Related

Where should I create a new entity field Dynamics CRM 2016?

I'm working on Dynamics CRM online 2016, the requirement is to create a new entity field inside all the entities that we have in a third party vendor solution (unmanaged).
I'm wondering what is the way to solve this requirement. Because that Solution is huge and it has more than 20 entities.
The third party vendor told me that I have to create a new solution and add all the entities to this new solution and then add the field in each entity. I guess that they want to keep separately new configurations and customizations.
However, my boss told me; you are free to choose working in that solution (third party solution) or to create a new one.
I think it's better and easier to work in the third party solution (because at the end, when I need to migrate these changes to our other instances, I will export and import this solution), however I'm fairly new in Dynamics and in terms of migration process, I do not know what is the best approach.
I really appreciate any suggestion from you guys.
It is fine to work in the third party solution, which I would recommend. If for some reason you prefer, it is also fine to work from a new solution you create.
The key is to understand that solutions do not really matter: The entities themselves exist in the layer of unmanaged customizations of the system. Solutions are simply containers that point to these unmanaged entities.
No matter how many solutions you have that point to a given entity, any modification made will be made directly to the entity.
Since you are using CRM 2016 you have the possibility of choosing which fields from an entity to include in your solution. This could be used if you for some reason really want to have one solution with and one solution without your newly added field.
MSDN has the following note about having multiple solutions with shared components:
Some components can be included in more than one solution as long as
any changes that were made to them are compatible with all other
solutions that use them. It is important that all the solutions share
the same solution publisher. If the solution publisher is not
identical, organizations will not be able to install more than one of
your solutions.

Identify dependencies among crm 2011 solutions

I want to create a milestone solution containing all customizations(several unmanaged crm solutions) in the past 3 months for deployment.
we need a full milestone solution, not the patch-on-patch way.Unfortunately, I am not sure the dependencies among these customizations.
How can I to identify dependencies among crm 2011 solutions?
Are there any tools that can do this?
Thanks in advance
CRM 2011 has a built in dependency checker which can be used for each solution individually. You could start combining the solutions and adding the dependencies by clicking on the dependencies button in the Solution.
You could also programmatically add all dependency solutions:
Solutions are made of solution components. You’ll use the Solutions area in Microsoft Dynamics CRM to create or add solution components. You can perform these actions programmatically by using the AddSolutionComponentRequest message or any messages that create or update solution components that include a SolutionUniqueName parameter.
That is depending on how deep you want to get into the process.

How do you organize your sharepoint developments?

I am starting to do a lot of sharepoint development lately, and some of the things that I have done and I dont like is to use sharepoint designer directly for things like pagelayouts, lists definitions, master pages, etc.
From my point of view I think its more organized to do everything in Visual Studio. In that way you can connect each solution to a source control database and deploy/retract/upgrade easier with scripts.
My idea is to create a vs solution like this:
1. One for list and content type defintions.
2. One for webparts.
3. One for branding
but maybe this approach has any disadvantage, what other approaches are you using?
The real answer is going to be: it depends.
I do not think there is one best way to organize a Visual Studio solution or SharePoint solution packages. In the end, you need to find what works best for your organization and go with that.
The only guidance I have seen is from the SharePoint Online documentation:
If the development team is designing a solution that requires more than 10 WSP files, the team should reconsider its architecture. It is difficult to manage and deploy so many WSP files within a single deployment window, and the solution risks rejection because of the complexity for SharePoint Online of managing it.
A large number of solution packages (WSP files) that need to be tracked and managed pose a challenge for deployment. The more solution packages in a customization, the greater the possibility that something will not be installed correctly, the longer the solution will take to deploy, and the easier it is to mix incompatible versions of solution packages. We recommend that customers scrutinize their deployment plans and keep the number of solution packages to the minimum number needed for the project. Keep in mind that a solution package can contain several features, so there is no necessity to have one solution package for each feature.
And I would agree with this. You seem to be outlining 3 Visual Studio solutions and/or SharePoint solution packages for what really are 3 Features within a single SharePoint solution package.
I tend to create one Visual Studio solution for each project. For a very large project, that single Visual Studio solution might contain several projects where each represents a SharePoint solution package.
For Farm solutions, each SharePoint solution package will contain a number of Features and files that are all related in terms of functionality or application. If two or more SharePoint solution packages share common Features, I will put those shared Features into a separate solution package.
Sandbox solutions tend to be much smaller than Farm solutions. While my Farm solutions usually represent an application, my Sandbox solutions are more focused to solve one particular issue. So my Sandbox solutions usually only contain one Feature that does not rely on other custom Features or solutions.
As I said in the beginning, I do not believe there is one hard or fast rule. It is usually determined by the preferences and style of a particular development team. Try a couple different ways in the beginning and eventually you will find what fits your team best.

CRM 2011 - How to install different solutions (features) for a client of our company

We offer multiple packages with features for our clients with Microsoft Dynamics CRM.
Is there a way where we can publish our sollutions with our modifications for certain entities without overwriting the form layout that already existed.
How should we organise our sollutions so there will be no conflicts within the entities in our sollutions nor with the entities that were already modified by our clients where we want to install our sollution?
now we have to modify most entities manualy...
I hope you have some experience you want to share with us.
We broke up each section of our project into solutions. For example, entities, reports, plugins, etc.
This allowed us to deploy bits and pieces of our project as we went along (moving from dev -> test -> production).
You can't break out pieces of entities (or exclude things like the forms), but you could export the existing solution, make your changes and then re-import (as a manage or unmanaged).
There's a really good diagram here under "Conflict Resolution".

What are best practices for adding Sharepoint Fields,ContentTypes,Lists, etc.?

For our application, when the site gets installed, it creates a bunch of different fields, lists, content types, etc., etc. There are a lot of dependencies to manage there, and I'm wondering how others go about this, from an OOD perspective.
We use feature stapling to do this kind of work. For more detail information (and reference application) checkout the Microsoft SharePoint Patterns and Practices.
http://www.codeplex.com/spg

Resources