diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandler.java b/src/main/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandler.java
index 082ee61..45bf7a6 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandler.java
@@ -101,6 +101,7 @@
             // update cache
             if ( !context.isPrototypeMerge() ) {
                 targetApi.getFeatureToRegionCache().put(sourceFeature.getId(), sourceApi.detectRegion());
+                targetApi.getFeatureToRegionCache().putAll(sourceApi.getFeatureToRegionCache());
             }
             
             ConfigurationApi.setConfigurationApi(targetFeature, targetApi);
diff --git a/src/test/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandlerTest.java b/src/test/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandlerTest.java
index f2fdb94..3231fbe 100644
--- a/src/test/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandlerTest.java
@@ -382,4 +382,45 @@
         assertTrue(api.getInternalFrameworkProperties().contains("pb"));
         assertTrue(api.getInternalFrameworkProperties().contains("pc"));
     }
+
+    @Test public void testConfigurationApiMergeRegionCache() {
+        final BuilderContext context = new BuilderContext(id -> null);
+        context.addMergeExtensions(new ConfigurationApiMergeHandler());
+
+        final Feature featureA = new Feature(ArtifactId.parse("g:a:1"));
+        final ConfigurationApi apiA = new ConfigurationApi();
+        apiA.setRegion(Region.INTERNAL);
+        ConfigurationApi.setConfigurationApi(featureA, apiA);
+
+        final Feature featureB = new Feature(ArtifactId.parse("g:b:1"));
+        final ConfigurationApi apiB = new ConfigurationApi();
+        apiB.setRegion(Region.GLOBAL);
+        ConfigurationApi.setConfigurationApi(featureB, apiB);
+
+
+        final Feature featureC = new Feature(ArtifactId.parse("g:c:1"));
+        final ConfigurationApi apiC = new ConfigurationApi();
+        apiC.setRegion(Region.INTERNAL);
+        ConfigurationApi.setConfigurationApi(featureC, apiC);
+
+        final Feature featureD = new Feature(ArtifactId.parse("g:d:1"));
+        final ConfigurationApi apiD = new ConfigurationApi();
+        apiD.setRegion(Region.INTERNAL);
+        ConfigurationApi.setConfigurationApi(featureD, apiD);
+
+        final ArtifactId idIntermediate = ArtifactId.parse("g:i:1");
+        Feature intermediate = FeatureBuilder.assemble(idIntermediate, context, featureA, featureB);
+        final ArtifactId id = ArtifactId.parse("g:m:1");
+        Feature result = FeatureBuilder.assemble(id, context, featureC, featureD, intermediate);
+        ConfigurationApi api = ConfigurationApi.getConfigurationApi(result);
+        assertNotNull(api);
+
+
+        assertEquals(5, api.getFeatureToRegionCache().size());
+        assertEquals(Region.INTERNAL, api.getFeatureToRegionCache().get(featureA.getId()));
+        assertEquals(Region.GLOBAL, api.getFeatureToRegionCache().get(featureB.getId()));
+        assertEquals(Region.INTERNAL, api.getFeatureToRegionCache().get(featureC.getId()));
+        assertEquals(Region.INTERNAL, api.getFeatureToRegionCache().get(featureD.getId()));
+        assertEquals(Region.GLOBAL, api.getFeatureToRegionCache().get(idIntermediate));
+    }
 }
\ No newline at end of file
