diff --git oak-pojosr/pom.xml oak-pojosr/pom.xml
index fc61cc1..2b5e53a 100644
--- oak-pojosr/pom.xml
+++ oak-pojosr/pom.xml
@@ -86,6 +86,16 @@
   </build>
 
   <dependencies>
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>osgi.core</artifactId>
+      <version>6.0.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>osgi.cmpn</artifactId>
+      <version>6.0.0</version>
+    </dependency>
   
     <!-- Pojo SR -->
     <!-- Added first to ensure that in an IDE the transitive dependencies of the oak modules
@@ -149,7 +159,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.scr</artifactId>
-      <version>1.8.2</version>
+      <version>2.0.12</version>
       <exclusions>
         <exclusion>
           <groupId>org.codehaus.mojo</groupId>
@@ -158,9 +168,14 @@
       </exclusions>
     </dependency>
     <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.dto</artifactId>
+      <version>1.0.0</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.configadmin</artifactId>
-      <version>1.8.6</version>
+      <version>1.8.16</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
diff --git oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/AbstractRepositoryFactoryTest.groovy oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/AbstractRepositoryFactoryTest.groovy
index e0d08b5..148e58c 100644
--- oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/AbstractRepositoryFactoryTest.groovy
+++ oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/AbstractRepositoryFactoryTest.groovy
@@ -31,6 +31,9 @@ import org.osgi.framework.ServiceEvent
 import org.osgi.framework.ServiceListener
 import org.osgi.framework.ServiceReference
 import org.osgi.service.cm.ConfigurationAdmin
+import org.osgi.service.component.runtime.ServiceComponentRuntime
+import org.osgi.service.component.runtime.dto.ComponentDescriptionDTO
+import org.osgi.util.promise.Promise
 import org.osgi.util.tracker.ServiceTracker
 
 import javax.jcr.*
@@ -223,4 +226,24 @@ abstract class AbstractRepositoryFactoryTest{
             registry.removeServiceListener(listener)
         }
     }
+
+    protected void disableComponent(String name) {
+        ServiceComponentRuntime scr = getServiceWithWait(ServiceComponentRuntime.class)
+        ComponentDescriptionDTO dto = getComponentDTO(scr, name)
+        Promise p = scr.disableComponent(dto)
+        p.getValue() //Block on get
+    }
+
+    protected void enableComponent(String name) {
+        ServiceComponentRuntime scr = getServiceWithWait(ServiceComponentRuntime.class)
+        ComponentDescriptionDTO dto = getComponentDTO(scr, name)
+        Promise p = scr.enableComponent(dto)
+        p.getValue() //Block on get
+    }
+
+    ComponentDescriptionDTO getComponentDTO(ServiceComponentRuntime scr, String name) {
+        ComponentDescriptionDTO dto = scr.getComponentDescriptionDTOs().find {ComponentDescriptionDTO d -> (d.name == name) }
+        assert dto : "No component found with name $name"
+        return dto
+    }
 }
diff --git oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/PropertyIndexReindexingTest.groovy oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/PropertyIndexReindexingTest.groovy
index 6fc7020..a61c0f2 100644
--- oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/PropertyIndexReindexingTest.groovy
+++ oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/PropertyIndexReindexingTest.groovy
@@ -20,8 +20,6 @@
 package org.apache.jackrabbit.oak.run.osgi
 
 import org.apache.felix.connect.launch.PojoServiceRegistry
-import org.apache.felix.scr.Component
-import org.apache.felix.scr.ScrService
 import org.apache.jackrabbit.JcrConstants
 import org.apache.jackrabbit.commons.JcrUtils
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants
@@ -66,17 +64,14 @@ class PropertyIndexReindexingTest extends AbstractRepositoryFactoryTest{
         s.logout()
 
         //4. Disable the PropertyIndexEditor
-        ScrService scr = getService(ScrService.class)
-        Component[] c = scr.getComponents('org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider')
-        assert c
-
-        c[0].disable()
+        def indexComponent = 'org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider'
+        disableComponent(indexComponent)
         TimeUnit.SECONDS.sleep(1)
        assert registry.getServiceReference(Repository.class.name) == null : "Repository should be unregistered " +
                "if no property index editor found"
 
         //5. Re-enable the editor and wait untill repository gets re-registered
-        c[0].enable()
+        enableComponent(indexComponent)
         getServiceWithWait(Repository.class, registry.bundleContext)
 
         //6. Reindex flag should be stable
diff --git oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy
index b0e55f6..caf0026 100644
--- oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy
+++ oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy
@@ -21,16 +21,12 @@ package org.apache.jackrabbit.oak.run.osgi
 
 import groovy.util.logging.Slf4j
 import org.apache.felix.connect.launch.PojoServiceRegistry
-import org.apache.felix.scr.Component
-import org.apache.felix.scr.ScrService
 import org.junit.Assert
 import org.junit.Before
-import org.junit.Ignore
 import org.junit.Test
 
 import javax.jcr.RepositoryException
 import javax.jcr.Session
-import java.util.concurrent.TimeUnit
 
 import static org.apache.jackrabbit.oak.run.osgi.OakOSGiRepositoryFactory.REPOSITORY_CONFIG_FILE
 
@@ -51,10 +47,9 @@ class RepositoryClosedTest extends AbstractRepositoryFactoryTest{
         Session s = createAdminSession()
 
         //2 Trigger repository shutdown
-        disableComponents(
-                'org.apache.jackrabbit.oak.jcr.osgi.RepositoryManager',
-                'org.apache.jackrabbit.oak.plugins.name.NameValidatorProvider'
-        )
+        disableComponent('org.apache.jackrabbit.oak.jcr.osgi.RepositoryManager')
+        disableComponent('org.apache.jackrabbit.oak.plugins.name.NameValidatorProvider')
+
         log.info("Repository shutdown complete. Proceeding with save")
 
         //Null out repository to prevent shutdown attempt in teardown
@@ -74,15 +69,4 @@ class RepositoryClosedTest extends AbstractRepositoryFactoryTest{
         OakOSGiRepositoryFactory.shutdown(registry, 5)
     }
 
-    private void disableComponents(String ... names){
-        ScrService scr = getService(ScrService.class)
-        names.each {String name ->
-            Component[] c = scr.getComponents(name)
-            assert c : "No component with name '$name' found"
-            c[0].componentInstance?.dispose()
-            log.info("Disabling {}", name)
-        }
-
-        TimeUnit.SECONDS.sleep(1)
-    }
 }
diff --git oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/SecurityProviderRegistrationTest.groovy oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/SecurityProviderRegistrationTest.groovy
index b240dfa..478ef66 100644
--- oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/SecurityProviderRegistrationTest.groovy
+++ oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/SecurityProviderRegistrationTest.groovy
@@ -17,8 +17,6 @@
 package org.apache.jackrabbit.oak.run.osgi
 
 import org.apache.felix.connect.launch.PojoServiceRegistry
-import org.apache.felix.scr.Component
-import org.apache.felix.scr.ScrService
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters
 import org.apache.jackrabbit.oak.spi.security.Context
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider
@@ -34,17 +32,14 @@ import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableAction
 import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableActionProvider
 import org.junit.Before
 import org.junit.Test
-import org.osgi.framework.Filter
 import org.osgi.framework.ServiceEvent
-import org.osgi.framework.ServiceListener
 import org.osgi.framework.ServiceReference
 import org.osgi.service.cm.ConfigurationAdmin
 
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 import static org.mockito.Mockito.mock
 import static org.mockito.Mockito.when
+import static org.osgi.service.component.runtime.ServiceComponentRuntime.*
 
 class SecurityProviderRegistrationTest extends AbstractRepositoryFactoryTest {
 
@@ -202,17 +197,15 @@ class SecurityProviderRegistrationTest extends AbstractRepositoryFactoryTest {
         //deactivate and its internal state would be reset
         UserConfiguration userConfiguration = getServiceWithWait(UserConfiguration.class)
 
-
-        ScrService scr = getServiceWithWait(ScrService.class)
-        Component[] c = scr.getComponents('org.apache.jackrabbit.oak.security.authentication.AuthenticationConfigurationImpl')
-        assert c
+        def authComponentName = 'org.apache.jackrabbit.oak.security.authentication.AuthenticationConfigurationImpl'
 
         // 1. Disable AuthenticationConfiguration such that SecurityProvider is unregistered
         awaitServiceEvent({
-                    c[0].disable()
+                    disableComponent(authComponentName)
                 },
                 '(objectClass=org.apache.jackrabbit.oak.spi.security.SecurityProvider)',
-                ServiceEvent.UNREGISTERING
+                ServiceEvent.UNREGISTERING,
+                5000
         )
 
         assert securityProviderServiceReferences == null
@@ -231,7 +224,7 @@ class SecurityProviderRegistrationTest extends AbstractRepositoryFactoryTest {
 
         // 3. Enable component again such that SecurityProvider gets reactivated
         awaitServiceEvent({
-                    c[0].enable()
+                   enableComponent(authComponentName)
                 },
                 '(objectClass=org.apache.jackrabbit.oak.spi.security.SecurityProvider)',
                 ServiceEvent.REGISTERED
@@ -271,13 +264,11 @@ class SecurityProviderRegistrationTest extends AbstractRepositoryFactoryTest {
         assertAuthorizationConfig(securityProvider)
         assertUserConfig(securityProvider, "jcr:read")
 
-        ScrService scr = getServiceWithWait(ScrService.class)
-        Component[] c = scr.getComponents('org.apache.jackrabbit.oak.security.authentication.AuthenticationConfigurationImpl')
-        assert c
+        String authComponentName = 'org.apache.jackrabbit.oak.security.authentication.AuthenticationConfigurationImpl'
 
         // 2. Disable AuthenticationConfiguration such that SecurityProvider is unregistered
         awaitServiceEvent({
-                    c[0].disable()
+                    disableComponent(authComponentName)
                 },
                 "(objectClass=org.apache.jackrabbit.oak.spi.security.SecurityProvider)",
                 ServiceEvent.UNREGISTERING
@@ -287,7 +278,7 @@ class SecurityProviderRegistrationTest extends AbstractRepositoryFactoryTest {
 
         // 3. Enable component again such that SecurityProvider gets reactivated
         awaitServiceEvent({
-                    c[0].enable()
+                    enableComponent(authComponentName)
                 },
                 "(objectClass=org.apache.jackrabbit.oak.spi.security.SecurityProvider)",
                 ServiceEvent.REGISTERED
