diff --git a/jstests/concurrency/fsm_workloads/view_catalog_cycle_with_drop.js b/jstests/concurrency/fsm_workloads/view_catalog_cycle_with_drop.js
index 0a0615b..8084c7d 100644
--- a/jstests/concurrency/fsm_workloads/view_catalog_cycle_with_drop.js
+++ b/jstests/concurrency/fsm_workloads/view_catalog_cycle_with_drop.js
@@ -16,13 +16,23 @@ var $config = (function() {
     const prefix = 'view_catalog_cycle_with_drop_';
 
     var data = {
+        collOrView: prefix + 'collOrView',
         viewList: ['viewA', 'viewB', 'viewC'].map(viewName => prefix + viewName),
         assertCommandWorkedOrFailedWithCode: function(result, codeArr) {
             assertAlways(result.ok === 1 || codeArr.indexOf(result.code) > -1, tojson(result));
         },
+        assertWriteWorkedOrFailedWithCode: function(writeResult, codeArr) {
+            var raw = writeResult.getRawResponse();
+            if (raw.writeErrors.length == 0) {
+                return;
+            }
+
+            return codeArr.indexOf(raw.writeErrors[0].code) > -1;
+        },
         getRandomView: function(viewList) {
             return viewList[Random.randInt(viewList.length)];
         },
+        errorCodeInsertIntoView: 166,
     };
 
     var states = (function() {
@@ -66,39 +76,91 @@ var $config = (function() {
             this.assertCommandWorkedOrFailedWithCode(res, [ErrorCodes.CommandNotSupportedOnView]);
         }
 
+        function openCursorOnNamespace(db, collName) {
+            const namespace =
+                this.getRandomView(this.viewList.concat(this.collOrView).concat(collName));
+            var res = db.runCommand({find: namespace, batchSize: 1});
+            // TODO SERVER-26037: Replace with the appropriate error code. See ticket for details.
+            this.assertCommandWorkedOrFailedWithCode(res, [ErrorCodes.CommandNotSupportedOnView]);
+        }
+
+        function createCollOrViewAsColl(db, collName) {
+            this.assertCommandWorkedOrFailedWithCode(db.runCommand({"drop": this.collOrView}),
+                                                     [ErrorCodes.NamespaceNotFound]);
+            this.assertWriteWorkedOrFailedWithCode(db[this.collOrView].insert({}),
+                                                   [this.errorCodeInsertIntoView]);
+            this.assertWriteWorkedOrFailedWithCode(db[this.collOrView].insert({}),
+                                                   [this.errorCodeInsertIntoView]);
+        }
+
+        function createCollOrViewAsView(db, collName) {
+            this.assertCommandWorkedOrFailedWithCode(db.runCommand({"drop": this.collOrView}),
+                                                     [ErrorCodes.NamespaceNotFound]);
+            this.assertCommandWorkedOrFailedWithCode(db.createView(this.collOrView, collName, []),
+                                                     [ErrorCodes.NamespaceExists]);
+        }
+
         return {
             remapViewToView: remapViewToView,
             recreateViewOnCollection: recreateViewOnCollection,
-            readFromView: readFromView
+            readFromView: readFromView,
+            createCollOrViewAsColl: createCollOrViewAsColl,
+            createCollOrViewAsView: createCollOrViewAsView,
+            openCursorOnNamespace: openCursorOnNamespace,
         };
 
     })();
 
     var transitions = {
-        remapViewToView:
-            {remapViewToView: 0.50, recreateViewOnCollection: 0.25, readFromView: 0.25},
-        recreateViewOnCollection:
-            {remapViewToView: 0.50, recreateViewOnCollection: 0.25, readFromView: 0.25},
+        remapViewToView: {
+            remapViewToView: 0.50,
+            recreateViewOnCollection: 0.25,
+            readFromView: 0.25,
+            openCursorOnNamespace: 0.25,
+        },
+        recreateViewOnCollection: {
+            remapViewToView: 0.50,
+            recreateViewOnCollection: 0.25,
+            readFromView: 0.25,
+            openCursorOnNamespace: 0.25,
+        },
         readFromView: {remapViewToView: 0.50, recreateViewOnCollection: 0.25, readFromView: 0.25},
+        createCollOrViewAsColl: {readFromView: 1, openCursorOnNamespace: 1},
+        createCollOrViewAsView: {readFromView: 1, openCursorOnNamespace: 1},
+        openCursorOnNamespace: {
+            remapViewToView: 0.25,
+            recreateViewOnCollection: 0.25,
+            readFromView: 0.25,
+            createCollOrViewAsColl: 0.125,
+            createCollOrViewAsView: 0.125,
+        },
     };
 
     function setup(db, collName, cluster) {
         let coll = db[collName];
         assertAlways.writeOK(coll.insert({x: 1}));
+        assertAlways.writeOK(coll.insert({x: 2}));
 
         for (let viewName of this.viewList) {
             assert.commandWorked(db.createView(viewName, collName, []));
         }
+        assert.commandWorked(
+            db.adminCommand({setParameter: 1, clientCursorMonitorFrequencySecs: 0}));
+        assert.commandWorked(db.adminCommand({setParameter: 1, cursorTimeoutMillis: 1}));
     }
 
     function teardown(db, collName, cluster) {
+        assert.commandWorked(
+            db.adminCommand({setParameter: 1, cursorTimeoutMillis: 10 * 60 * 1000}));
+        assert.commandWorked(
+            db.adminCommand({setParameter: 1, clientCursorMonitorFrequencySecs: 4}));
         const pattern = new RegExp('^' + prefix + '[A-z]*$');
         dropCollections(db, pattern);
     }
 
     return {
         threadCount: 10,
-        iterations: 100,
+        iterations: 1000,
         data: data,
         states: states,
         startState: 'readFromView',
