 
   getSelectedWorkflow: (project, preferences) ->
     @setState({ loadingSelectedWorkflow: true })
-    # preference workflow query, then user selected workflow, then project owner set workflow, then default workflow
+    # preference workflow query by admin/owner/collab, then workflow query if in project settings, then user selected workflow, then project owner set workflow, then default workflow
     # if none of those are set, select random workflow
-    if @props.location.query?.workflow? and @canFetchWorkflowByQuery(project, @props.user)
+    activeFilter = true
+    if @props.location.query?.workflow? and @checkUserRoles(project, @props.user)
+      selectedWorkflowID = @props.location.query.workflow
+      activeFilter = false
+      unless preferences?.preferences.selected_workflow is selectedWorkflowID
+        @handlePreferencesChange('preferences.selected_workflow', selectedWorkflowID)
+    else if @props.location.query?.workflow? and 'allow workflow query' in project?.experimental_tools
       selectedWorkflowID = @props.location.query.workflow
       unless preferences?.preferences.selected_workflow is selectedWorkflowID
         @handlePreferencesChange('preferences.selected_workflow', selectedWorkflowID)

      Promise.resolve(null)

  checkUserRoles: (project, user) ->
    currentUserRoleSets = @state.projectRoles.filter((roleSet) => roleSet.links.owner.id is user.id)
    roles = currentUserRoleSets[0].roles

    isAdmin() or 'owner' in roles or 'collaborator' in roles


    else
      selectedWorkflowID = @selectRandomWorkflow(project)

    @getWorkflow(selectedWorkflowID, activeFilter)

  selectRandomWorkflow: (project) ->
    linkedWorkflows = project.links.workflows
