diff --git a/nuxeo-core-jcr-connector/src/main/java/org/nuxeo/ecm/core/repository/jcr/JCRLifeCycleManager.java b/nuxeo-core-jcr-connector/src/main/java/org/nuxeo/ecm/core/repository/jcr/JCRLifeCycleManager.java
--- a/nuxeo-core-jcr-connector/src/main/java/org/nuxeo/ecm/core/repository/jcr/JCRLifeCycleManager.java
+++ b/nuxeo-core-jcr-connector/src/main/java/org/nuxeo/ecm/core/repository/jcr/JCRLifeCycleManager.java
@@ -23,8 +23,8 @@
 import javax.jcr.PathNotFoundException;
 import javax.jcr.RepositoryException;
 
-import org.nuxeo.ecm.core.lifecycle.AbstractLifeCycleManager;
 import org.nuxeo.ecm.core.lifecycle.LifeCycleException;
+import org.nuxeo.ecm.core.lifecycle.LifeCycleManager;
 import org.nuxeo.ecm.core.model.Document;
 
 /**
@@ -38,7 +38,7 @@
  * @author <a href="mailto:ja@nuxeo.com">Julien Anguenot</a>
  *
  */
-public class JCRLifeCycleManager extends AbstractLifeCycleManager {
+public class JCRLifeCycleManager implements LifeCycleManager {
 
     // :XXX: Check if we should take care of synchronization at this level.
 
diff --git a/nuxeo-core/pom.xml b/nuxeo-core/pom.xml
--- a/nuxeo-core/pom.xml
+++ b/nuxeo-core/pom.xml
@@ -10,6 +10,7 @@
 
   <artifactId>nuxeo-core</artifactId>
   <name>Nuxeo Core</name>
+  <version>1.4.2-NXP-2567</version>
   <description>Nuxeo Core: The Core.</description>
 
   <dependencies>
diff --git a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycle.java b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycle.java
--- a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycle.java
+++ b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycle.java
@@ -47,13 +47,6 @@
     String getInitialStateName();
 
     /**
-     * Gets the life cycle manager name.
-     *
-     * @return the life cycle manager name
-     */
-    String getLifeCycleManagerName();
-
-    /**
      * Gets the life cycle name.
      *
      * @return the life cycle name
diff --git a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycleManager.java b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycleManager.java
--- a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycleManager.java
+++ b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycleManager.java
@@ -26,26 +25,12 @@
  * <p>
  * Responsible of the life cycle properties storage abstraction.
  *
- * @see org.nuxeo.ecm.jcr.JCRLifeCycleManager
+ * @see org.nuxeo.ecm.core.repository.jcr.JCRLifeCycleManager
  *
- * @author <a href="mailto:ja@nuxeo.com">Julien Anguenot</a>
+ * @author Julien Anguenot
+ * @author Florent Guillaume
  */
 public interface LifeCycleManager {
-
-    /**
-     * Returns the name of the manager.
-     *
-     * @return the name of the manager as a string.
-     */
-    String getName();
-
-    /**
-     * Sets the name of the life cycle manager.
-     *
-     * @param name
-     *            of the life cycle manager
-     */
-    void setName(String name);
 
     /**
      * Returns the state of a given document.
diff --git a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycleService.java b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycleService.java
--- a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycleService.java
+++ b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/LifeCycleService.java
@@ -92,19 +92,11 @@
             throws LifeCycleException;
 
     /**
-     * Returns the life cycle managers.
+     * Returns the life cycle manager.
      *
-     * @return a LifeCycleManager collection
+     * @return a LifeCycleManager
      */
-    Collection<LifeCycleManager> getLifeCycleManagers();
-
-    /**
-     * Returns the life cycle manager given its name.
-     *
-     * @param name the life cycle manager's name
-     * @return a LifeCycleManager instance.
-     */
-    LifeCycleManager getLifeCycleManagerByName(String name);
+    LifeCycleManager getLifeCycleManager();
 
     /**
      * Returns a life cycle given its name.
@@ -154,15 +146,6 @@
     /**
      * Sets the mapping from life cycle names to life cycle instances.
      *
-     * @param lifeCycleManagers
-     *            a mapping from life cycle names to life cycle instances
-     */
-    void setLifeCycleManagers(
-            Map<String, LifeCycleManager> lifeCycleManagers);
-
-    /**
-     * Sets the mapping from life cycle names to life cycle instances.
-     *
      * @param lifeCycles
      *            a mapping from life cycle names to life cycle instances
      */
diff --git a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/extensions/LifeCycleDescriptor.java b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/extensions/LifeCycleDescriptor.java
--- a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/extensions/LifeCycleDescriptor.java
+++ b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/extensions/LifeCycleDescriptor.java
@@ -12,14 +12,16 @@
  * Lesser General Public License for more details.
  *
  * Contributors:
- *     Nuxeo - initial API and implementation
- * $Id: LifeCycleDescriptor.java 16207 2007-04-15 11:56:45Z sfermigier $
+ *     Julien Anguenot
+ *     Florent Guillaume
  */
 
 package org.nuxeo.ecm.core.lifecycle.extensions;
 
 import java.util.Collection;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.nuxeo.common.xmap.annotation.XNode;
 import org.nuxeo.common.xmap.annotation.XObject;
 import org.nuxeo.ecm.core.lifecycle.LifeCycle;
@@ -34,18 +36,23 @@
  * @see org.nuxeo.ecm.core.lifecycle.impl.LifeCycleServiceImpl
  * @see org.nuxeo.ecm.core.lifecycle.LifeCycle
  *
- * @author <a href="mailto:ja@nuxeo.com">Julien Anguenot</a>
+ * @author Julien Anguenot
+ * @author Florent Guillaume
  */
 @XObject(value = "lifecycle", order = { "@name" })
 public class LifeCycleDescriptor {
+
+    private static final Log log = LogFactory.getLog(LifeCycleDescriptor.class);
 
     /** Name of this life cycle. */
     @XNode("@name")
     private String name;
 
-    /** The life cycle manager that will be used for this given life cycle. */
     @XNode("@lifecyclemanager")
-    private String lifeCycleManager;
+    public void setLifeCycleManager(String lifeCycleManager) {
+        log.warn("Ignoring deprecated lifecyclemanager attribute '" +
+                lifeCycleManager + "' for lifecycle '" + name + "'");
+    }
 
     /** The initial state name. */
     @XNode("@initial")
@@ -69,10 +76,6 @@
         this.description = description;
     }
 
-    public String getLifeCycleManager() {
-        return lifeCycleManager;
-    }
-
     public String getName() {
         return name;
     }
@@ -81,10 +84,6 @@
         LifeCycleStateConfiguration conf = new LifeCycleStateConfiguration(
                 states);
         return conf.getStates();
-    }
-
-    public void setLifeCycleManager(String lifeCycleManager) {
-        this.lifeCycleManager = lifeCycleManager;
     }
 
     public void setName(String name) {
@@ -114,8 +113,8 @@
      * @return a life cycle instance out of the life cycle configuration.
      */
     public LifeCycle getLifeCycle() {
-        return new LifeCycleImpl(name, lifeCycleManager, initialStateName,
-                getStates(), getTransitions());
+        return new LifeCycleImpl(name, initialStateName, getStates(),
+                getTransitions());
     }
 
     public void setInitialStateName(String initialStateName) {
diff --git a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/extensions/LifeCycleManagerDescriptor.java b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/extensions/LifeCycleManagerDescriptor.java
--- a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/extensions/LifeCycleManagerDescriptor.java
+++ b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/extensions/LifeCycleManagerDescriptor.java
@@ -27,17 +27,14 @@
  * @see org.nuxeo.ecm.core.lifecycle.impl.LifeCycleImpl
  * @see org.nuxeo.ecm.core.lifecycle.LifeCycleManager
  *
- * @author <a href="mailto:ja@nuxeo.com">Julien Anguenot</a>
+ * @author Julien Anguenot
+ * @author Florent Guillaume
  */
-@XObject(value = "lifecyclemanager", order = {"@name"})
+@XObject("lifecyclemanager")
 public class LifeCycleManagerDescriptor {
-
-    @XNode("@name")
-    private String name;
 
     @XNode("@class")
     private String className;
-
 
     public String getClassName() {
         return className;
@@ -47,12 +44,4 @@
         this.className = className;
     }
 
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
 }
diff --git a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/impl/LifeCycleImpl.java b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/impl/LifeCycleImpl.java
--- a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/impl/LifeCycleImpl.java
+++ b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/impl/LifeCycleImpl.java
@@ -30,15 +30,13 @@
  *
  * @see org.nuxeo.ecm.core.lifecycle.LifeCycle
  *
- * @author <a href="mailto:ja@nuxeo.com">Julien Anguenot</a>
+ * @author Julien Anguenot
+ * @author Florent Guillaume
  */
 public class LifeCycleImpl implements LifeCycle {
 
     /** The name of the life cycle. */
     private final String name;
-
-    /** The life life cycle manager name for the life cycle. */
-    private final String lifeCycleManagerName;
 
     /** The initial state name. */
     private final String initialStateName;
@@ -50,11 +48,10 @@
     private final Collection<LifeCycleTransition> transitions;
 
 
-    public LifeCycleImpl(String name, String lifeCycleManagerName,
-            String initialStateName, Collection<LifeCycleState> states,
+    public LifeCycleImpl(String name, String initialStateName,
+            Collection<LifeCycleState> states,
             Collection<LifeCycleTransition> transitions) {
         this.name = name;
-        this.lifeCycleManagerName = lifeCycleManagerName;
         this.initialStateName = initialStateName;
         this.states = states;
         this.transitions = transitions;
@@ -62,10 +59,6 @@
 
     public String getInitialStateName() {
         return initialStateName;
-    }
-
-    public String getLifeCycleManagerName() {
-        return lifeCycleManagerName;
     }
 
     public String getName() {
diff --git a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/impl/LifeCycleServiceImpl.java b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/impl/LifeCycleServiceImpl.java
--- a/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/impl/LifeCycleServiceImpl.java
+++ b/nuxeo-core/src/main/java/org/nuxeo/ecm/core/lifecycle/impl/LifeCycleServiceImpl.java
@@ -52,8 +53,8 @@
 
     private static final Log log = LogFactory.getLog(LifeCycleServiceImpl.class);
 
-    /** Lifecycle manager name -> life cycle manager instance. */
-    private Map<String, LifeCycleManager> lifeCycleManagers;
+    /** Lifecycle manager instance. */
+    private LifeCycleManager lifeCycleManager;
 
     /** Lifecycle name -> life cycle descriptor instance. */
     private Map<String, LifeCycle> lifeCycles;
@@ -62,7 +63,6 @@
     private Map<String, String> typesMapping;
 
     public LifeCycleServiceImpl() {
-        lifeCycleManagers = new HashMap<String, LifeCycleManager>();
         lifeCycles = new HashMap<String, LifeCycle>();
         typesMapping = new HashMap<String, String>();
     }
@@ -76,28 +76,12 @@
         return getLifeCycleByName(lifeCycleName);
     }
 
-    public LifeCycleManager getLifeCycleManagerByName(String name) {
-        return lifeCycleManagers.get(name);
-    }
-
     public LifeCycleManager getLifeCycleManagerFor(Document doc) {
-
-        LifeCycleManager lifeCycleManager;
-
-        // Try if a life cycle is associated to this given document.
-        LifeCycle lifeCycle = getLifeCycleFor(doc);
-        if (lifeCycle != null) {
-            lifeCycleManager = getLifeCycleManagerByName(lifeCycle
-                    .getLifeCycleManagerName());
-        } else {
-            lifeCycleManager = null;
-        }
-
         return lifeCycleManager;
     }
 
-    public Collection<LifeCycleManager> getLifeCycleManagers() {
-        return lifeCycleManagers.values();
+    public LifeCycleManager getLifeCycleManager() {
+        return lifeCycleManager;
     }
 
     public String getLifeCycleNameFor(String typeName) {
@@ -143,10 +127,6 @@
 
     public void setLifeCycles(Map<String, LifeCycle> lifeCycles) {
         this.lifeCycles = lifeCycles;
-    }
-
-    public void setLifeCycleManagers(Map<String, LifeCycleManager> lifeCycleManagers) {
-        this.lifeCycleManagers = lifeCycleManagers;
     }
 
     public void initialize(Document doc) throws LifeCycleException {
@@ -212,23 +192,19 @@
         Object[] contributions = extension.getContributions();
         if (contributions != null) {
             if (extension.getExtensionPoint().equals("lifecycle")) {
-                for (Object lifeCycle : contributions) {
-                    LifeCycleDescriptor lifeCycleDescriptor = (LifeCycleDescriptor) lifeCycle;
-                    log.info("Registering lifecycle: " +
-                            lifeCycleDescriptor.getName());
-                    lifeCycles.put(lifeCycleDescriptor.getName(),
-                            lifeCycleDescriptor.getLifeCycle());
+                for (Object contribution : contributions) {
+                    LifeCycleDescriptor desc = (LifeCycleDescriptor) contribution;
+                    log.info("Registering lifecycle: " + desc.getName());
+                    lifeCycles.put(desc.getName(), desc.getLifeCycle());
                 }
             }
             if (extension.getExtensionPoint().equals("lifecyclemanager")) {
-                for (Object lifeCycleManager : contributions) {
-                    LifeCycleManagerDescriptor desc = (LifeCycleManagerDescriptor) lifeCycleManager;
-                    LifeCycleManager manager = (LifeCycleManager) extension.getContext().loadClass(
-                                    desc.getClassName()).newInstance();
-                    manager.setName(desc.getName());
-                    log.info("Registering lifecycle manager: " +
-                            manager.getName());
-                    lifeCycleManagers.put(manager.getName(), manager);
+                for (Object contribution : contributions) {
+                    LifeCycleManagerDescriptor desc = (LifeCycleManagerDescriptor) contribution;
+                    String className = desc.getClassName();
+                    lifeCycleManager = (LifeCycleManager) extension.getContext().loadClass(
+                            className).newInstance();
+                    log.info("Registering lifecycle manager: " + className);
                 }
             }
             if (extension.getExtensionPoint().equals("types")) {
@@ -300,10 +276,10 @@
                 }
             }
             if (extension.getExtensionPoint().equals("lifecyclemanager")) {
-                for (Object lifeCycleManager : contributions) {
-                    LifeCycleManagerDescriptor desc = (LifeCycleManagerDescriptor) lifeCycleManager;
-                    log.debug("Unregister lifecycle manager: " + desc.getName());
-                    lifeCycleManagers.remove(desc.getName());
+                for (Object contribution : contributions) {
+                    LifeCycleManagerDescriptor desc = (LifeCycleManagerDescriptor) contribution;
+                    log.debug("Unregister lifecycle manager: " + desc.getClassName());
+                    lifeCycleManager = null;
                 }
 
             }
diff --git a/nuxeo-core/src/main/resources/OSGI-INF/LifeCycleCoreExtensions.xml b/nuxeo-core/src/main/resources/OSGI-INF/LifeCycleCoreExtensions.xml
--- a/nuxeo-core/src/main/resources/OSGI-INF/LifeCycleCoreExtensions.xml
+++ b/nuxeo-core/src/main/resources/OSGI-INF/LifeCycleCoreExtensions.xml
@@ -9,21 +9,14 @@
     @author <a href="mailto:ja@nuxeo.com">Julien Anguenot</a>
   </documentation>
 
-  <require>
-    org.nuxeo.ecm.core.repository.jcr.lifecycle.JCRLifeCycleManager
-  </require>
-
   <extension target="org.nuxeo.ecm.core.lifecycle.LifeCycleService"
     point="lifecycle">
 
     <documentation>
-
       Nuxeo core default life cycle definition.
-
     </documentation>
 
-    <lifecycle name="default" lifecyclemanager="jcrlifecyclemanager"
-      initial="project">
+    <lifecycle name="default" initial="project">
       <transitions>
         <transition name="approve" destinationState="approved">
           <description>Approve the content</description>
diff --git a/nuxeo-core-jcr-connector/pom.xml b/nuxeo-core-jcr-connector/pom.xml
--- a/nuxeo-core-jcr-connector/pom.xml
+++ b/nuxeo-core-jcr-connector/pom.xml
@@ -9,6 +9,7 @@
 
   <artifactId>nuxeo-core-jcr-connector</artifactId>
   <name>Nuxeo Core JCR Connector</name>
+  <version>1.4.2-NXP-2567</version>
   <description>Nuxeo Core: JCR Connector.</description>
 
   <properties>
@@ -19,6 +20,7 @@
     <dependency>
       <groupId>org.nuxeo.ecm.core</groupId>
       <artifactId>nuxeo-core</artifactId>
+      <version>1.4.2-NXP-2567</version>
     </dependency>
     <dependency>
       <groupId>org.nuxeo.common</groupId>
