diff --git a/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java b/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java
index 5dee8b9..c5824ce 100644
--- a/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java
@@ -75,6 +75,7 @@
     private final IRequirement[] m_requirements;
     private final IRequirement[] m_dynamicRequirements;
     private final R4Library[] m_nativeLibraries;
+    private final int m_activationPolicy;
     private final Bundle m_bundle;
 
     private IModule[] m_fragments = null;
@@ -132,6 +133,7 @@
         m_requirements = null;
         m_dynamicRequirements = null;
         m_nativeLibraries = null;
+        m_activationPolicy = EAGER_ACTIVATION;
     }
 
     public ModuleImpl(
@@ -163,6 +165,7 @@
         m_requirements = mp.getRequirements();
         m_dynamicRequirements = mp.getDynamicRequirements();
         m_nativeLibraries = mp.getLibraries();
+        m_activationPolicy = mp.getActivationPolicy();
         m_symbolicName = mp.getSymbolicName();
         m_isExtension = mp.isExtension();
 
@@ -297,6 +300,11 @@
         return m_nativeLibraries;
     }
 
+    public int getActivationPolicy()
+    {
+        return m_activationPolicy;
+    }
+
     //
     // Run-time data access.
     //
diff --git a/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java b/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java
index 64b1a29..e5e8eb2 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/manifestparser/ManifestParser.java
@@ -24,6 +24,7 @@
 import org.apache.felix.framework.util.FelixConstants;
 import org.apache.felix.framework.util.VersionRange;
 import org.apache.felix.moduleloader.ICapability;
+import org.apache.felix.moduleloader.IModule;
 import org.apache.felix.moduleloader.IRequirement;
 import org.osgi.framework.*;
 
@@ -32,6 +33,7 @@
     private final Logger m_logger;
     private final Map m_configMap;
     private final Map m_headerMap;
+    private volatile int m_activationPolicy = IModule.EAGER_ACTIVATION;
     private volatile boolean m_isExtension = false;
     private volatile String m_bundleSymbolicName;
     private volatile Version m_bundleVersion;
@@ -249,6 +251,12 @@
             m_libraryHeaders = tmp;
         }
 
+        //
+        // Parse activation policy.
+        //
+
+        m_activationPolicy = parseActivationPolicy(headerMap);
+
         // Do final checks and normalization of manifest.
         if (getManifestVersion().equals("2"))
         {
@@ -298,6 +306,11 @@
         return (manifestVersion == null) ? "1" : manifestVersion.trim();
     }
 
+    public int getActivationPolicy()
+    {
+        return m_activationPolicy;
+    }
+
     public boolean isExtension()
     {
         return m_isExtension;
@@ -1175,6 +1188,32 @@
         return result;
     }
 
+    private static int parseActivationPolicy(Map headerMap)
+    {
+        int policy = IModule.EAGER_ACTIVATION;
+
+        Object[][][] clauses = parseStandardHeader(
+            (String) headerMap.get(Constants.BUNDLE_ACTIVATIONPOLICY));
+
+        if (clauses.length > 0)
+        {
+            // Just look for a "path" matching the lazy policy, ignore
+            // everything else.
+            for (int i = 0;
+                i < clauses[0][CLAUSE_PATHS_INDEX].length;
+                i++)
+            {
+                if (clauses[0][CLAUSE_PATHS_INDEX][i].equals(Constants.ACTIVATION_LAZY))
+                {
+                    policy = IModule.LAZY_ACTIVATION;
+                    break;
+                }
+            }
+        }
+
+        return policy;
+    }
+
     public static final int CLAUSE_PATHS_INDEX = 0;
     public static final int CLAUSE_DIRECTIVES_INDEX = 1;
     public static final int CLAUSE_ATTRIBUTES_INDEX = 2;
diff --git a/framework/src/main/java/org/apache/felix/moduleloader/IModule.java b/framework/src/main/java/org/apache/felix/moduleloader/IModule.java
index 37994de..833ca54 100644
--- a/framework/src/main/java/org/apache/felix/moduleloader/IModule.java
+++ b/framework/src/main/java/org/apache/felix/moduleloader/IModule.java
@@ -29,6 +29,9 @@
 
 public interface IModule
 {
+    final static int EAGER_ACTIVATION = 0;
+    final static int LAZY_ACTIVATION = 1;
+
     void setSecurityContext(Object securityContext);
     Object getSecurityContext();
 
@@ -41,6 +44,7 @@
     IRequirement[] getRequirements();
     IRequirement[] getDynamicRequirements();
     R4Library[] getNativeLibraries();
+    int getActivationPolicy();
 
     // Run-time data access methods.
     Bundle getBundle();
