AnsweredAssumed Answered

How to override a (corrupt) dynamic content model with a bootstrapped one?

Question asked by mathias.lin on Jan 19, 2016
Latest reply on Jan 19, 2016 by mathias.lin
A <strong>corrupt dynamic content model</strong> to Alfresco (5.0.d CE) was deployed and activated.

By corrupt I mean, the content model is not valid, because a wrong type has been used which does not exist. Something like:


<property name="my:name">
    <type>test</type>
</property>


where "test" is obviously not valid - but the mistake in the model does not really matter here.

So, this content model was deployed dynamically to the

Repository > Data Dictionary > Models

and then unfortunately <strong>activated via Alfresco API call</strong> (and not via Share UI; since the Share UI usually checks if a model is valid before actually allowing to activate it).

This causes the Alfresco repository to not start anymore but fail with the error:


2016-01-19 18:17:11,780 ERROR [org.springframework.web.context.ContextLoader] [localhost-startStop-1] Context initialization failed
org.alfresco.service.namespace.NamespaceException: A namespace prefix is not registered for uri my.test.model
on booting up.


My question is now, <strong>how to deactivate this corrupt model again</strong> without having access to the running Alfresco repository instance, this not able to access the Data Dictionary > Models folder anymore.

<strong>I already tried to deploy a customModel.xml and custom-model-context.xml with the same model name</strong> etc. inside to the /alfresco/tomcat/shared/classes/alfresco/extension folder, but this does not seem to override the dynamic model. When booting up Alfresco, I still get the error above.

Any ideas anybody? Thanks!

Just for reference, this is the customModel.xml file that I use to override the old one:


<?xml version="1.0" encoding="UTF-8"?>

<!– Custom Model –>

<!– Note: This model is pre-configured to load at startup of the Repository.  So, all custom –>
<!–       types and aspects added here will automatically be registered –>

<model name="my:testModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>
   <description>Custom Model</description>
   <author></author>
   <version>1.0</version>

   <imports>
      <!– Import Alfresco Dictionary Definitions –>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <!– Import Alfresco Content Domain Model Definitions –>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>

   <!– Introduction of new namespaces defined by this model –>
   <!– NOTE: The following namespace custom.model should be changed to reflect your own namespace –>
   <namespaces>
      <namespace uri="my.test.model" prefix="my"/>
   </namespaces>

</model>


<hr/>
<strong>UPDATE:</strong>
A useful answer has been provided on StackOverflow: http://stackoverflow.com/questions/34883278/alfresco-how-to-override-a-corrupt-dynamic-content-model-with-a-bootstrapped/34886741

Outcomes