diff --git a/src/main/provisioning/repoinit.txt b/src/main/provisioning/repoinit.txt
index de6e48e..fa39eae 100644
--- a/src/main/provisioning/repoinit.txt
+++ b/src/main/provisioning/repoinit.txt
@@ -45,6 +45,9 @@
   deny jcr:write on /repoinit/fromProvisioningModel
 end
 
+create service user thirdUserFromProvisioningModel
+disable service user thirdUserFromProvisioningModel : "Disabled for testing reason"
+
 register namespace (slingtest) http://sling.apache.org/ns/test/repoinit-it/v1.0
 
 register nodetypes
diff --git a/src/test/java/org/apache/sling/repoinit/it/ProvisioningModelIT.java b/src/test/java/org/apache/sling/repoinit/it/ProvisioningModelIT.java
index f06f8e4..c640a6d 100644
--- a/src/test/java/org/apache/sling/repoinit/it/ProvisioningModelIT.java
+++ b/src/test/java/org/apache/sling/repoinit/it/ProvisioningModelIT.java
@@ -37,6 +37,7 @@
     private static final String TEST_PATH = "/repoinit/fromProvisioningModel";
     private static final String TEST_USER = "userFromProvisioningModel";
     private static final String SECOND_TEST_USER = "secondUserFromProvisioningModel";
+    private static final String THIRD_TEST_USER = "thirdUserFromProvisioningModel";
     private final String uniqueID = UUID.randomUUID().toString();
     
     @Rule
@@ -58,6 +59,13 @@
     public void usersCreated() throws Exception {
         assertTrue("Expecting user " + TEST_USER, U.userExists(session, TEST_USER));
         assertTrue("Expecting user " + SECOND_TEST_USER, U.userExists(session, SECOND_TEST_USER));
+        assertTrue("Expecting user " + THIRD_TEST_USER, U.userExists(session, THIRD_TEST_USER));
+    }
+
+    @Test
+    public void userDisabled() throws Exception {
+        assertTrue(String.format("Expecting user %s to be disabled", THIRD_TEST_USER), U.userIsDisabled(session, THIRD_TEST_USER));
+        assertFalse(String.format("Expecting user %s to be enabled", TEST_USER), U.userIsDisabled(session,TEST_USER));
     }
     
     @Test
diff --git a/src/test/java/org/apache/sling/repoinit/it/U.java b/src/test/java/org/apache/sling/repoinit/it/U.java
index 918597d..d5b91f1 100644
--- a/src/test/java/org/apache/sling/repoinit/it/U.java
+++ b/src/test/java/org/apache/sling/repoinit/it/U.java
@@ -28,6 +28,7 @@
 
 import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.api.security.user.Authorizable;
+import org.apache.jackrabbit.api.security.user.User;
 
 /** Test utilities */
 public class U {
@@ -35,7 +36,18 @@
         final Authorizable a = ((JackrabbitSession)session).getUserManager().getAuthorizable(id);
         return a != null;
     }
-    
+
+    public static boolean userIsDisabled(Session session, String id) throws RepositoryException {
+        final Authorizable a = ((JackrabbitSession)session).getUserManager().getAuthorizable(id);
+        if (a == null) {
+            throw new IllegalStateException("Authorizable not found:" + id);
+        }
+        if (a.isGroup()) {
+            throw new IllegalStateException("Authorizable is a group:" + id);
+        }
+        return ((User)a).isDisabled();
+    }
+
     public static Session getServiceSession(Session session, String serviceId) throws LoginException, RepositoryException {
         return session.impersonate(new SimpleCredentials(serviceId, new char[0]));
     }
