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">

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="">

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

      <!– Import Alfresco Dictionary Definitions –>
      <import uri="" prefix="d"/>
      <!– Import Alfresco Content Domain Model Definitions –>
      <import uri="" prefix="cm"/>

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


A useful answer has been provided on StackOverflow: