diff --git a/scr/src/main/java/org/apache/felix/scr/Component.java b/scr/src/main/java/org/apache/felix/scr/Component.java
index 6cbf648..758c642 100644
--- a/scr/src/main/java/org/apache/felix/scr/Component.java
+++ b/scr/src/main/java/org/apache/felix/scr/Component.java
@@ -360,6 +360,16 @@
     String getConfigurationPid();
 
     /**
+     * Returns whether the configuration-pid has been declared in the descriptor
+     * or not.
+     *
+     * @return whether the configuration-pid has method has been declared in the descriptor
+     *      or not.
+     * @since DS 1.2
+     */
+    boolean isConfigurationPidDeclared();
+
+    /**
      * Enables this Component if it is disabled. If the Component is not
      * currently {@link #STATE_DISABLED disabled} this method has no effect. If
      * the Component is {@link #STATE_DESTROYED destroyed}, this method throws
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/ScrCommand.java b/scr/src/main/java/org/apache/felix/scr/impl/ScrCommand.java
index 1329d37..645164c 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/ScrCommand.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/ScrCommand.java
@@ -230,6 +230,14 @@
             }
             out.println();
 
+            out.print("Configuration Pid: ");
+            out.print(component.getConfigurationPid());
+            if (component.isConfigurationPidDeclared())
+            {
+                out.print(" (declared in the descriptor)");
+            }
+            out.println();
+
             if (component.getFactory() != null)
             {
                 out.print("Factory: ");
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
index fc74cd9..8e3f568 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
@@ -552,6 +552,11 @@
         return m_componentMetadata.getConfigurationPid();
     }
 
+    public boolean isConfigurationPidDeclared()
+    {
+        return m_componentMetadata.isConfigurationPidDeclared();
+    }
+
     public boolean isServiceFactory()
     {
         return m_componentMetadata.getServiceMetadata() != null
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/metadata/ComponentMetadata.java b/scr/src/main/java/org/apache/felix/scr/impl/metadata/ComponentMetadata.java
index e6b28b6..f74872e 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/metadata/ComponentMetadata.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/metadata/ComponentMetadata.java
@@ -448,6 +448,18 @@
         return getName();
     }
 
+    /**
+     * Returns whether the configuration-pid has been declared in the descriptor
+     * or not.
+     *
+     * @return whether the configuration-pid has method has been declared in the descriptor
+     *      or not.
+     * @since DS 1.2
+     */
+    public boolean isConfigurationPidDeclared()
+    {
+        return m_configurationPid != null;
+    }
 
     /**
      * Returns the value of the enabled flag
