
Solution Import fail
….Importeren van solutions in Dynamics CRM is dagelijks werk voor een Dynamics Consultant. Natuurlijk zijn de solutions die je opleverd vanuit de ontwikkel omgeving altijd managed, maar wat als een solution nu ineens niet meer importeerd met de melding “Solution import failing with A managed solution cannot overwrite the Attribute component with Id XXXX”.
Bovenstaande melding kwam ineens op mijn pad bij het deployen van versie zoveel van onze managed solution in de test omgeving. Hadden we unmanaged zaken geïntroduceerd in de test? Nee was het antwoord, dat zou niet zo moeten zijn. Het id gegeven in de foutmelding was vrij eenvoudig te herleiden naar een Microsoft eigen attribute (zie bv hier) op de contact entiteit, dus hoe nu op te lossen….
In ons geval gaat het om veld parent_contactid geïntroduceerd door Microsoft voor Organization Chart Hierarchy. Het simpel verwijderen van attributen uit een solution is afhankelijk van hoe de bovenliggende entiteit is toegevoegd. Als je zegt “add all assets” zal Dynamics alles toevoegen en kan je 1 attribute niet los verwijderen. OK, even de contact entiteit verwijderen en opnieuw toevoegen en selectief de attributen, forms e.d. kiezen. Export, import en……fail!
Wat nu weer, hoe kan dit. Het veld is toch niet meer aanwezig in de solution. Nee, dat klopt nu gaat het om veld parent_contactidname en deze is niet beschikbaar via de UI. Maar daar is een oplossing voor. En het stappen plan is als volgt:
- Open de solution die je wilt exporteren
- Druk op F12
- Ga naar de console en plak daar het volgende script
var clientUrl = Xrm.Page.context.getClientUrl();
var req = new XMLHttpRequest()
req.open(“POST”, encodeURI(clientUrl + “/api/data/v9.1/RemoveSolutionComponent”), true);
req.setRequestHeader(“Accept”, “application/json”);
req.setRequestHeader(“Content-Type”, “application/json; charset=utf-8”);
req.setRequestHeader(“OData-MaxVersion”, “4.0”);
req.setRequestHeader(“OData-Version”, “4.0”);
var body = JSON.stringify({
“SolutionComponent” : { “solutioncomponentid”: “<Your failing attribute ID>”},
“ComponentType” :2 ,
“SolutionUniqueName” :”Binck”
});
req.send(body); - Wacht tot response “undefined” is
Als je nu de solution exporteerd is het probleem opgelost