I looked at the code and this is how the cartridges are loaded: <!-- language: java --> public static Engine newEngine() throws AmbientDataException { try { AmbientDataConfig ambientDataConfig = AmbientDataContext.getAmbientDataConfig(); Set cartridgeDefinitions = new HashSet(); Configuration config; for(Iterator i$ = ambientDataConfig.getCartridgeConfigurations().iterator(); i$.hasNext(); cartridgeDefinitions.add(cartridgeDefinitionFromConfig(config))) config = (Configuration)i$.next(); return new Engine(cartridgeDefinitions); } catch(ConfigurationException ex) { LOG.error("Unable to configure the AmbientData Framework", ex); throw new AmbientDataException("Error while configuring ambient data framework", ex); } } So it "seems" it loads the cartridges from the xml confg file (`cd_ambient_conf.xml`) in the `getCartridgeConfigurations` by executing the following loop: <!-- language: java --> for(Iterator i$ = ConfigurationHelper.getConfigurations(configuration, "/Configuration/Cartridges/Cartridge").iterator(); i$.hasNext(); result.add((new XMLConfigurationReader()).readConfiguration(fileName, "schemas/cd_ambient_cartridge_conf.xsd"))) { .... } Which means they should be loaded in the same order they show in the configuration file. Further investigation, the cartridges configuration are saved on a `java.util.HashSet` object which by definition it doesn't care about the order of its elements. Copied from the [javadoc][1]: public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable This class implements the Set interface, backed by a hash table (actually a HashMap instance). It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time. This class permits the null element. So I think that answers your question. I don't think there's a way to control the order of the execution. But yet again, let's see if someone from R&D confirms my research. [1]: http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html **UPDATED:** The ordering apparently happens using the `DependencyAnalyzer` class which moves the cartridge definitions into "Sorted Lists" (`java.util.ArrayList`). Such DependencyAnalyzer indeed checks the Input/Ouput claims configuration to determine what's the right order for the cartridges, it does it both for RequestStart & RequestEnd as well as SessionStart & SessionEnd.