Skip to main content

SureDrive Overview

SureDrive is a general-purpose document management repository built on the SureClinical platform. It sits alongside SureETMF, SureCTMS, SureISF, and SureQMS as one of the application products hosted in the shared platform. Unlike SureETMF (which enforces a strict eTMF folder schema), SureDrive allows free-form folder structures with user-defined content models — making it suitable for SOPs, training records, forms, and other non-study-specific documents.


Platform Products

The SureClinical platform hosts multiple applications that share the same infrastructure, authentication, and Nuxeo content repository:

ProductPurpose
SureDriveFree-form document management repository. No enforced eTMF schema.
SureETMFElectronic Trial Master File — eTMF-schema-enforced clinical document management.
SureCTMSClinical Trial Management System — study operations, milestones, team management.
SureISFInvestigator Site File management.
SureQMSQuality Management System.

Each product is enabled per-tenant and per-user via feature flags (e.g., FEATURE_SURE_DRIVE_APPLICATION_ENABLED). The Angular web client checks these flags at startup and shows only the product surfaces the user is licensed for.


Technology Stack

LayerTechnology
FrontendAngular 1.x (ui-router for state management)
Backend servicesSpring Boot (Spring 5.x), Java 8
Content repositoryNuxeo (document store, ACLs, Automation Operations)
Relational databasePostgreSQL (managed by Liquibase) — the SureNetwork Global layer
Workflow engineCamunda BPM 7.19.0
ORMHibernate 5.6.10
Build toolMaven (multi-module)

Platform Architecture

The platform has three major client surfaces:

ClientModulePurpose
Web Clientsuredms-web-clientPrimary Angular browser application. All SureDrive UI lives here.
Desktop Clientsuredms-desktop-clientJava Swing desktop app. Used for offline access, quality review, and signing.
Progressive Web Appsuredms-pwaMobile-optimised browser shell.

All three surfaces communicate with the Nuxeo content repository through:

  • the suredms-nuxeo-client Java client (desktop and service layer)
  • REST/Automation Operation calls from the Angular web client

Web Client Boot Sequence

The Angular application is bootstrapped at SC/suredms-web-client/src/main/webapp/app/js/app.js. Its run block:

  1. Wires $rootScope with login-state change guards
  2. Checks platform license and feature flags
  3. Triggers notification refresh
  4. Redirects the user to their default landing area via ClientNavigationService

Route definitions are split across three state files:

The top-level state container is app.network, which hosts all drive/study/project navigation. The global application hub is app.dashboard.


SureDrive in the Platform

A SureDrive instance is created by a licensed user through the New SureDrive Wizard (see Drive Wizard and New SureDrive Creation). Each SureDrive is an Archive document in Nuxeo of type SureDMS.CloudArchive. It holds:

  • A user-defined folder hierarchy (Content Model)
  • Documents assigned to folders
  • A team (persons and organisations with roles)
  • Workflow definitions
  • Milestone definitions
  • Audit log

One SureDrive is permitted per platform licence. Storage is 25 GB with 100 GB/month outbound transfer.


Key Module Relationships

suredms-web-client (Angular UI)
↓ calls Nuxeo Automation Operations
suredms-nuxeo-extensions (server-side Nuxeo operations)
↓ uses
suredms-common (shared entity model, services)
↓ persists via
Nuxeo repository (PostgreSQL backend)

suredms-parser (import/archive parsing)
suredms-xls-parser (Excel template import)
suredms-web-service (document processing: OCR, redaction, watermark)
suredms-workflow-platform (desktop workflow engine)
suredms-desktop-client-connector (desktop ↔ Nuxeo bridge)

For the full module dependency graph, see Build and Module Architecture.


Feature Flags and Navigation Visibility

Feature availability within SureDrive is controlled by FEATURE_* string constants that are loaded at session startup and checked by ClientNavigationService to show or hide navigation items. The Angular registration entry point is SC/suredms-web-client/src/main/webapp/app/js/app.js.

Feature flags are checked at route resolution time by ClientNavigationService.handleUserStateTransition. Each UI state declares requireFeature, requireAnyFeatures, or requireFeatures conditions on the state data object. If the user's loaded feature set does not satisfy the condition, the transition is blocked and the user is redirected. Hub client users skip non-hub states via CacheService.isExternalUser(user).

Feature KeyEffect
FEATURE_SURE_DRIVE_APPLICATION_ENABLEDEnables access to SureDrive application; required for all SureDrive navigation
FEATURE_ETMF_APPLICATION_ENABLEDEnables eTMF/TMF application
FEATURE_SURE_ISF_APPLICATION_ENABLEDEnables ISF (Investigator Site File) application
FEATURE_SURE_QMS_APPLICATION_ENABLEDEnables SureQMS quality management application
FEATURE_CTMS_APPLICATION_ENABLEDEnables SureCTMS project management application
FEATURE_SURE_QMS_PROJECT_EDITEnables the Acquire Queue and Quality Queue toggles in SureDrive Properties; shows queue navigation items in the study menu
FEATURE_VIEW_MY_DOCUMENTSRestricts the user to their own document storage (UserStorage mode); changes navigator context
FEATURE_GLOBAL_UPLOADGrants document upload permission; controls upload button visibility across navigator and dashboard
FEATURE_VIEW_WORKFLOWGrants access to workflow features; controls workflow dashboard link and task count gadgets
FEATURE_SHARE_VIEWControls visibility of the Share tab in the study menu
FEATURE_SHARE_VIEW_WITH_DELETIONMakes the Share tab visible and adds document deletion permission within the share context
FEATURE_PDF_ANNOTATIONSEnables the annotation drawing tool in the PDF viewer
FEATURE_PDF_COMMENTSEnables comment bubbles in the PDF viewer
FEATURE_GLOBAL_DELETE_QC_OK_MARKEnables the "Delete QC OK Mark" action on documents

Source: SC/suredms-web-client/src/main/webapp/app/js/app.js — feature constant declarations and state data conditions. Desktop-side feature keys are defined in ApplicationFeatures (com.sureclinical.suredms.services.features) and resolved at runtime via FeatureManager.