diff --git a/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/scope/conversation/ConversationContextAdapter.java b/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/scope/conversation/ConversationContextAdapter.java
index 78f65eb..11a4248 100644
--- a/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/scope/conversation/ConversationContextAdapter.java
+++ b/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/scope/conversation/ConversationContextAdapter.java
@@ -20,6 +20,7 @@
 
 import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
 import org.apache.myfaces.extensions.cdi.core.api.config.view.DefaultErrorView;
+import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider;
 import org.apache.myfaces.extensions.cdi.core.api.security.AccessDeniedException;
 import org.apache.myfaces.extensions.cdi.core.api.security.event.InvalidBeanCreationEvent;
 import org.apache.myfaces.extensions.cdi.core.api.security.SecurityViolation;
@@ -29,6 +30,7 @@
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.PassivationCapable;
 import java.lang.annotation.Annotation;
 import java.util.HashSet;
 import java.util.Set;
@@ -71,6 +73,12 @@
      */
     public <T> T get(Contextual<T> component, CreationalContext<T> creationalContext)
     {
+        if (component instanceof PassivationCapable && !(component instanceof Bean))
+        {
+            component = (Contextual<T>) BeanManagerProvider.getInstance().getBeanManager()
+                .getPassivationCapableBean(((PassivationCapable) component).getId());
+        }
+
         if (component instanceof Bean)
         {
             //since the basic use-case is related to topics like security,
@@ -99,6 +107,12 @@
             return null;
         }
 
+        if (component instanceof PassivationCapable && !(component instanceof Bean))
+        {
+            component = (Contextual<T>) BeanManagerProvider.getInstance().getBeanManager()
+                .getPassivationCapableBean(((PassivationCapable) component).getId());
+        }
+
         if (component instanceof Bean)
         {
             return this.conversationContext.resolve((Bean<T>)component);
diff --git a/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/context/TransactionBeanEntry.java b/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/context/TransactionBeanEntry.java
index 837601e..fc13df9 100644
--- a/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/context/TransactionBeanEntry.java
+++ b/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/context/TransactionBeanEntry.java
@@ -18,9 +18,12 @@
  */
 package org.apache.myfaces.extensions.cdi.jpa.impl.transaction.context;
 
+import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider;
+
 import javax.enterprise.context.spi.Contextual;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.PassivationCapable;
 import java.lang.annotation.Annotation;
 import java.util.Collections;
 import java.util.Set;
@@ -37,6 +40,12 @@
 
     public TransactionBeanEntry(Contextual<T> bean, T contextualInstance, CreationalContext<T> creationalContext)
     {
+        if (bean instanceof PassivationCapable && !(bean instanceof Bean))
+        {
+            bean = (Contextual<T>) BeanManagerProvider.getInstance().getBeanManager()
+                .getPassivationCapableBean(((PassivationCapable) bean).getId());
+        }
+
         this.bean = bean;
 
         this.contextualInstance = contextualInstance;
