The Complete LabLynx One Platform Documentation Library

Publisher: John Jones

Every LabLynx One Platform manual in one place — User, Administrator, Developer, IT Admin, and IQ/OQ/PQ Validation — fully searchable and cross-linked. Documentation current for LabLynx One core platform version 5.6 · last verified against source documentation July 2026

LabLynx, Inc.
LabLynx One Documentation
Complete Documentation Library
Solution Profile · User · Admin · Developer · IT Admin · Security · Validation
Core platform v5.6
Vol. 1 - Solution Profile ↗
Vol. 2 - User Manual
Preface: How to Use This Manual 1. Introduction to LabLynx One 2. Getting Started 3. Working with Experiments 4. Working with Resources — The Shared Inventory 5. Templates — Encoding Laboratory Standards 6. Search, Tags, and Organization 7. Signatures, Timestamps, and Record Integrity 8. Audit Trail and Data Integrity 9. Collaboration and Sharing 10. Import, Export, and the REST API 11. Compounds, Containers, and Special Features 12. Configuration Patterns by Laboratory Type 13. Tips, Best Practices, and Common Pitfalls 14. Support and Resources
Vol. 3 - SysAdmin Manual
Preface: Who This Manual Is For 1. LabLynx One Administration Overview 2. Team Settings — The Admin Panel Overview 3. Managing Users and User Groups 4. Configuring Experiment Categories and Status Values 5. Templates — Admin Configuration and Governance 6. Tag Management 7. Bulk Export and Batch Actions 8. Team Admin Best Practices and Workflows 9. SysAdmin Overview — The Sysconfig Panel 10. User Account Management at the System Level 11. Authentication Configuration — SSO and LDAP 12. Team Configuration at the System Level 13. Email, Notifications, and Timestamping Configuration 14. Security, Audit Logs, and Compliance App. A: Quick Reference — Admin vs. SysAdmin Capabilities App. B: Compliance Configuration Checklist by Regulatory Framework App. C: Troubleshooting Common Admin Issues
Vol. 4 - Developer Manual
Preface: About This Manual 1. Authentication and API Basics 2. Experiments — Complete API Reference 3. Resources (Items) — Complete API Reference 4. Users, Teams, Tags, and Scheduler 5. The Metadata (Custom Fields) JSON Schema 6. Integration Patterns 7. BI, Analytics, and Reporting 8. The elabapi-python Library 9. Webhooks and Event-Driven Integration 10. JavaScript SDK and Browser Applications 11. Complete API Endpoint Reference 12. Security, Rate Limits, and Best Practices App. A: Environment Setup Reference App. B: Metadata JSON Schema Quick Reference
Vol. 5 - IT Admin Manual
1. LabLynx One Commercial License (LabLynx, Inc.) 2. Open-Source Component Licenses 3. System Architecture 4. Hardware and Software Requirements 5. Pre-Installation: Ubuntu Server Setup 6. Installing Docker Engine and Docker Compose 7. LabLynx One Installation 8. Post-Installation Configuration 9. Updating LabLynx One 10. Security Hardening 11. Monitoring and Health Checks 12. Troubleshooting
Vol. 6 - Security & Compliance Guide
Preface: How to Use This Guide 1. Security Architecture & Shared Responsibility 2. Identity, Access & Authentication 3. Audit Trail & Data Integrity 4. Electronic Signatures & 21 CFR Part 11 5. NIST SP 800-53 & Virginia SEC530 6. Incident Response & Vulnerability Management 7. Data Retention, Privacy & PII/PHI 8. Validation Support — IQ/OQ/PQ 9. Accessibility Compliance 10. Vendor Risk Assessment — HECVAT 11. Certifications & Roadmap
Vol. 7 - Validation Manual
Preface: About This Manual 1. Validation Overview 2. System Configuration Baseline 3. Installation Qualification (IQ) 4. Operational Qualification (OQ) 5. Performance Qualification (PQ) 6. Change Control and Revalidation Requirements 7. Validation Summary Report App. A: 21 CFR Part 11 Traceability Matrix App. B: Deviation Log Template App. C: Abbreviations and Definitions App. D: Referenced Documents
Vol. 8 - Functional Design Spec.
Part I — The LabLynx One Concept
1. What Is LabLynx One? 2. Compliant Hosting Platform 3. The Teams-as-Modules Architecture 4. Renaming the Core Objects 5. The Plugin App Framework
Part II — The Twelve Modules
6. Module FDS — Dashboard
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
7. Module FDS — LIMS
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
8. Module FDS — LIS
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
9. Module FDS — LES
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
10. Module FDS — ELN
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
11. Module FDS — Logbooks
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
12. Module FDS — Training Tracking
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
13. Module FDS — Document Management
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
14. Module FDS — Quality Management
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
15. Module FDS — Instrument & Asset Management
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
16. Module FDS — Inventory Management
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
17. Module FDS — Lab Portal
Module Overview & Positioning Team Configuration Object Renaming Map Native LabLynx One Capabilities Leveraged Functional Gaps Identified Plugin App Specification Experiment & Resource Template Catalog Roles & Permissions Compliance & Standards Touchpoints Integration Points with Other Modules Success Metrics / KPIs
Part III — Add-on Applications
18. LabDrive 19. LabVia 20. LabGRC 21. LabCourses 22. LabCRM
Part IV — Solution Template Libraries
23. Academic/Research 24. Agriculture Testing 25. Biobanking 26. Clinical/Diagnostic Testing 27. CRO/CDMO 28. Environmental Testing 29. Food & Beverage Safety Testing 30. Forensic Case & Evidence Management 31. GMP Manufacturing QC 32. Manufacturing QC 33. Pharmaceutical & Biotech R&D 34. Point-of-Care Testing 35. Used-Oil/Asset Health
Part V — Cross-Module Architecture
36. Cross-Team Data Flow & Shared Taxonomy 37. Lab Portal as the Unified Front Door 38. API & Plugin Architecture 39. Security, Audit Trail & Compliance Across the Platform
Part VI — Delivering the Solution
40. Licensing & Deployment Model 41. Implementation Methodology & Rollout Sequencing 42. LabLynx One vs. Point Solutions
Closing
43. Get Started with LabLynx One
Appendix
A. Master Object-Renaming Glossary B. FDS Template (Blank) C. Master Template Catalog D. Solution Template Library Index

Need help or a live demo?

www.lablynx.com
0 / 0
LabLynx, Inc. · Complete Documentation Suite

The Complete LabLynx One
Documentation Library

Every LabLynx One manual in one place — User, Administrator, Developer, IT Admin, Security & Compliance, and IQ/OQ/PQ Validation — fully searchable and cross-linked.

Documentation current for LabLynx One core platform version 5.6 · last verified against source documentation July 2026

Solution Profile User Manual Administrator Manual Developer Manual IT Admin Manual Security & Compliance Guide IQ/OQ/PQ Validation Manual FDS Roadmap (Living Framework)
Documentation Set

LabLynx One User Manual

For researchers and lab staff using LabLynx One day to day.

Preface

How to Use This Manual

This manual is written for anyone who uses LabLynx One day-to-day: researchers, analysts, lab managers, quality staff, and administrators. Every significant feature is explained at three levels: what it is, why it works that way, and how it adapts to your specific lab context.

Throughout this manual you will find four types of callout boxes:

Tip

Orange Tip boxes offer shortcuts, habits, and practical guidance to help you work faster or more accurately.

Note

Navy Note boxes highlight important limitations, behaviors you might not expect, or configuration requirements.

Example

Green Example boxes show concrete, real-world scenarios written from the perspective of specific lab types — academic, pharma, forensic, clinical, and quality labs.

Use-Case Flexibility

Purple Use-Case Flexibility boxes summarize the range of ways a feature can be configured or applied across different laboratory types and industries.

Why it works this way

Orange Why boxes explain the design reasoning behind each feature — helping you use it more effectively and understanding what problem it was built to solve.

Readers new to LabLynx One should read Chapters 1 through 4 in order. Experienced users can jump to any chapter. Chapter 12 provides ready-to-use configuration patterns for five specific lab types.

Chapter 1

Introduction to LabLynx One

LabLynx One is a cloud-hosted, browser-based Electronic Laboratory Notebook designed for scientific organizations of all types and sizes. It replaces physical paper notebooks and disconnected file systems with a single, searchable, audited digital environment.

1.1 What Is LabLynx One?

LabLynx One is built on eLabFTW, a widely adopted open-source ELN platform, and delivered by LabLynx as a fully managed subscription service. LabLynx handles hosting, backups, security patching, and user support so your team can focus on science rather than infrastructure.

The result is a system that feels like a well-organized notebook but behaves like enterprise software: it time-stamps every action, tracks every change, enforces permissions, and produces audit-ready records on demand.

Why it works this way

Because LabLynx One is web-based, there is nothing to install on individual computers. Every team member — whether in the lab, at a desk, or working remotely — accesses the same live system with the same data. This eliminates the version-control problems that plague shared document folders, ensures changes are immediately visible to all authorized users, and allows any authorized device (desktop, laptop, tablet, kiosk) to be a full LabLynx One access point.

1.2 The Problem LabLynx One Solves

Most laboratories transitioning to LabLynx One describe one or more of these problems with their existing approach:

  • Paper notebooks: Entries are undated or inconsistently dated. Handwriting is illegible to others. Notebooks are lost, damaged, or left behind when a researcher leaves. Critical reagent details cannot be found later.
  • Shared drives: Files accumulate with no naming convention. Raw data and final reports are mixed. No record of who changed what or when. Instrument data files are separated from their experimental context.
  • Disconnected tools: Protocols live in one place, data in another, reagent inventories in a third. Assembling a complete experiment record takes days when an auditor asks for it.
  • No collaboration structure: Sharing work requires emailing files. No formal review or sign-off process. Institutional knowledge walks out the door when people leave.

LabLynx One addresses each of these through structured data entry, automatic timestamping, searchable metadata, resource linking, configurable permissions, and formal review workflows — all within a single platform.

1.3 Cross-Industry Overview: Who Uses LabLynx One?

LabLynx One is designed with enough flexibility to adapt to the documentation culture of any scientific domain.

Lab TypePrimary GoalsHow LabLynx One Helps
Academic ResearchPublication, reproducibility, student training, grant complianceFlexible templates, unlimited tags for project tracking, PDF export for manuscripts, RFC 3161 timestamps for IP protection
Pharma / Biotech QA21 CFR Part 11 compliance, CAPA, method validation, batch recordsElectronic signatures, cryptographic audit trail, locked steps for SOP enforcement, structured review/sign workflows
Forensic / Crime LabChain of custody, evidence traceability, court-ready recordsCustom ID fields for case numbers, strict permission controls, complete audit log, signature-on-completion workflows
Medical Device R&DDesign controls, IP documentation, multi-team coordinationBidirectional linking, team-scoped permissions, Ed25519 signatures for invention records, API integration
ISO 17025 TestingTraceable method execution, QC documentation, equipment managementEquipment scheduler with booking history, calibration date metadata, locked protocol steps, approval chains
Environmental / FieldSample tracking, chain of custody, multi-site coordinationQR code labels, container/storage hierarchy, custom ID for sample barcodes, cross-team sharing
Neurotechnology / StartupRapid deployment, IP protection, investor-ready documentationQuick templates, RFC 3161 timestamps for prior art, REST API for instrument integration, scalable from 3 to 300 users

1.4 Three Foundational Concepts

Three concepts underpin the entire system. Understanding them makes every other feature easier to learn.

Concept 1: Experiments are the primary record

An Experiment captures what was done, when, by whom, with which materials, following which protocol, and with what outcome. Every other object — resources, templates, tags, timestamps, signatures — exists to enrich, organize, or authenticate experiments.

Why it works this way

Paper notebooks conflate protocol, execution, and result in a single undifferentiated block of text. LabLynx One separates these into structured fields, attached files, linked resources, and body text — making each component independently searchable and verifiable.

Concept 2: Resources are shared, reusable records

A Resource represents anything a researcher uses: a reagent, an antibody, a piece of equipment, a cell line, a reference standard. Resources are created once and linked to as many experiments as needed. When a resource record is updated, every experiment linked to it can be traced.

Why it works this way

In a paper notebook, reagent details are copied by hand into each experiment. This creates transcription errors and no connection between experiments that used the same lot. LabLynx One's resource model eliminates redundancy and makes impact analysis possible: if you need to find every experiment that used a specific antibody lot, one search returns the complete list.

Concept 3: Teams control what is visible

LabLynx One organizes users into Teams. Each team has its own experiment and resource library. A user can belong to multiple teams, and experiments can be shared across teams with configurable read or write access.

Why it works this way

A single global experiment library would expose every researcher's unpublished work to everyone in the organization — inappropriate for competitive research environments, CROs with multiple clients, or organizations with compartmentalized compliance boundaries. Teams provide natural data boundaries without requiring separate system deployments.

1.5 User Roles and What They Control

RoleCapabilitiesTypical Persons
User (default)Creates, edits, and manages their own experiments and resources. Cannot modify system configuration.Researchers, technicians, students, analysts
AdminAll User permissions plus: manage team membership, configure templates and categories, view all team entries regardless of individual permissions.Lab managers, PIs, quality managers
SysAdminAll Admin permissions plus system-level configuration: user account management, group/team creation, LDAP/SSO integration, API key oversight.IT administrators, LabLynx support contacts
LockedRead-only access. Can view entries with appropriate permissions but cannot create, edit, or delete.Auditors, external reviewers, archived accounts
Use-Case Flexibility
  • Academic lab: Most users are the default User role. The PI is Admin, configuring the team's categories and templates, viewing all team experiments, and managing student onboarding.
  • Pharma QA: QA analysts are Users; their supervisor is Admin and executes the formal sign workflow. External auditors are granted Locked accounts during the audit window.
  • ISO 17025: The quality manager is Admin and owns all templates and categories. Instrument operators are Users who execute documented methods.
Chapter 2

Getting Started

Your first steps with LabLynx One — from logging in securely to configuring your account settings and understanding the navigation bar that anchors every interaction.

2.1 Logging In

Navigate to your organization's LabLynx One URL (typically yourorganization.elabeln.com). You will see one of two login experiences depending on your administrator's configuration:

  • Local credentials: Enter the email address and password associated with your LabLynx One account.
  • Single Sign-On (SSO): Click the SSO button and authenticate with your organization's identity provider (Microsoft Entra ID, Okta, Google Workspace, SAML 2.0, or LDAP-compatible directory). You will not maintain a separate LabLynx One password.
Why it works this way

SSO is strongly recommended for organizations that already manage identities centrally. When a researcher leaves and their Active Directory account is deactivated, their LabLynx One access is immediately revoked without any additional step. This satisfies the user access control requirements of 21 CFR Part 11 and ISO 17025 without manual housekeeping.

Note

If you have forgotten your local password, use the 'Forgot password?' link on the login page. If your organization uses SSO, contact your IT department — LabLynx One cannot reset credentials managed by your identity provider.

Tip

Bookmark your organization's specific LabLynx One URL rather than the generic elabeln.com homepage. This takes you directly to your team's login page and saves time every day.

2.2 The Navigation Bar

After logging in, a navigation bar appears at the top of every page. It is the consistent anchor point for all navigation in LabLynx One.

ElementWhat It Does
Home icon / LogoReturns you to your personal experiment dashboard — your default view of all experiments you own or can access.
ExperimentsOpens the full experiment index. By default shows your own experiments. Use the Team dropdown to switch to viewing your team's shared experiments.
TemplatesOpens the template library. Your team's pre-built experiment formats. Selecting one creates a new experiment pre-populated with its structure.
ResourcesOpens the resource index organized by category. This is where reagents, equipment, cell lines, and all other resource types live.
Team dropdownSwitches your active scope between teams if you belong to more than one. Controls which experiments and resources you see.
Search barFull-text search across all experiments and resources your current scope gives you access to. Searches titles, body text, metadata fields, tags, and comments.
Notification bellAlerts you to new comments, Request Action notifications from colleagues, and system announcements.
User avatar (top right)Opens account settings, team settings (if Admin), API key management, and logout.
Why it works this way

The navigation bar never changes position or content regardless of what you are doing. This is a deliberate design choice: in a complex research workflow where you might be switching between an experiment, a linked resource, and a template within minutes, a stable navigation anchor prevents disorientation and reduces the time spent thinking about the interface rather than the science.

2.3 Your Account Settings

Click your user avatar in the top right corner and select Account Settings to access three configuration tabs.

General Tab — Preferences and Display

Controls your display name, language, timezone, and interface theme (light or dark mode). Setting your timezone correctly is important: all timestamps in LabLynx One are stored in UTC but displayed in your local timezone. An incorrect timezone makes timestamps misleading.

Tip

The dark theme is popular with researchers who work in dimly lit microscopy or instrument rooms. It reduces eye strain during long data entry sessions.

Account Tab — Security and Authentication

This is where you change your local password and enroll in Multi-Factor Authentication (MFA). MFA requires a time-based one-time code from an authenticator app (Google Authenticator, Authy, Microsoft Authenticator, or any TOTP-compatible app) in addition to your password.

Why it works this way

21 CFR Part 11 Section 11.300 requires that electronic signatures be unique to one individual and include controls to prevent their use by anyone other than the genuine owner. MFA directly satisfies this requirement. For organizations subject to FDA oversight, enabling MFA is not optional once electronic signatures are in use.

Example: MFA in a pharma quality lab

A QA analyst completes a method validation study and is ready to sign the record. She enters her password, is prompted for her MFA code, opens her authenticator app, enters the six-digit code, and signs. The signature record captures her identity, the timestamp, and the fact that two-factor authentication was used. If an FDA inspector asks how the organization prevents unauthorized signature, the MFA log provides the evidence.

API Keys Tab — Programmatic Access

Generate personal API keys for programmatic access to LabLynx One's REST API. Each key can be labeled and revoked independently. Keys are shown only once at generation; store them in a secure credential manager.

Tip

Create a separate API key for each integration or script. If one key is compromised or a script is decommissioned, you can revoke that specific key without disrupting other integrations.

Chapter 3

Working with Experiments

The Experiment is the core documentation unit in LabLynx One. This chapter covers every field and tool available in an experiment record, explains what each does, and illustrates how each serves different types of laboratory work.

3.1 Browsing and Filtering the Experiment Index

Click Experiments in the navigation bar to open the experiment index. The index displays all experiments within your current scope. Each row shows the experiment's title, category, status, tags, date, and owner.

  • Filter by category: Click any category pill in the filter panel to show only experiments of that type.
  • Filter by status: Show only Running, Success, Failure, or other statuses to focus on active work.
  • Filter by tag: Click one or more tags to find experiments associated with a specific project, compound, or technique.
  • Filter by owner: See only experiments created by a specific team member.
  • Sort: Click any column header to re-sort by date, title, or status.
Tip

Use the Favorites feature (star icon on any experiment) to pin your most-active ongoing experiments to the top of the index. Especially useful during long-running projects where you return to the same 3–5 entries dozens of times per week.

Use-Case Flexibility
  • Academic lab: Researchers use category filtering to separate cell biology from genomics work, and tag filtering to find all experiments in a specific grant project.
  • QA lab during an audit: The quality manager filters by status = 'Needs Review' to queue all pending records for sign-off.
  • High-throughput analytical lab: Analysts filter by date range and category to generate a complete list of all HPLC runs in a given week for trending.

3.2 Creating an Experiment

Click the + New Experiment button in the top right of the experiment index. A dialog appears with two options:

  • Blank experiment: Opens a new empty experiment. You define the structure entirely yourself.
  • From template: Select any template defined by your team. The new experiment is pre-populated with the template's structure — including body text, custom metadata fields, and steps.
Why it works this way

The two-path creation flow reflects a fundamental tradeoff between flexibility and standardization. Blank experiments let researchers document novel work without fighting a prescribed structure. Template-based experiments ensure that routine procedures are executed consistently every time — the template author has already thought through what must be captured, and the researcher cannot accidentally omit a field.

Example: Choosing between blank and template

A biochemist creates a template for their standard SDS-PAGE gel electrophoresis procedure with all standard metadata fields, pre-written protocol steps, and a placeholder table for band measurements. When a team member needs to run a gel, they create from this template. But when the same biochemist tries a completely new pull-down assay for the first time, they start from a blank experiment and capture the protocol as they go — later converting it into a template for future use.

3.3 Understanding Every Experiment Field

Title

The Title is the primary identifier. It appears in all index views, search results, and any link that references this experiment. A well-written title makes an experiment findable years later.

Tip

Write titles that will be meaningful to someone who did not create the experiment. Include the technique, the key variable, and the outcome or purpose. Compare: 'Experiment 47' vs. 'Anti-EGFR antibody binding assay — pH 6.8 vs. 7.4 comparison — 2026-06-01'. The second is findable without opening the record.

Date (Started On)

Defaults to today's date at experiment creation, but can be changed by the owner. This field is separate from the system-recorded creation timestamp (which cannot be modified) and captures the scientific start date, which may differ from when the record was created.

Why it works this way

A researcher who collects data at 11 PM creates the formal experiment record the next morning. The Date field captures when the work began. The immutable system timestamp records when the record was created. Both are part of the permanent record and serve different roles in an audit or review.

Custom ID

A free-text identifier completely separate from the ELabID. Can hold any value: a LIMS accession number, a project code, a case number, a batch ID, or any other identifier from an external system.

Use-Case Flexibility
  • Forensic lab: Custom ID = case number. All experiments for a case share the same Custom ID, enabling instant retrieval of the complete analytical record.
  • Biotech QA: Custom ID = batch number, enabling instant traceability from test result back to production batch.
  • Academic: Custom ID = grant project code. Filtering at reporting time produces a complete list of all experiments billable to that grant.
  • Environmental: Custom ID = sample barcode, linking physical and digital records without manual transcription.

Category

Administrator-defined labels that classify experiment types. Unlike tags (flexible and user-created), categories are controlled vocabulary — only Admins can create, rename, or delete them. Each experiment belongs to exactly one category.

Why it works this way

The distinction between categories (controlled, structural) and tags (flexible, user-created) is fundamental. A category answers 'what kind of experiment is this?' A tag answers 'what does this experiment concern?' Categories appear as columns in the index, drive template assignment, and enable category-level filtering. Tags capture the variable dimensions of what an experiment is about.

Status

Tracks where an experiment is in its lifecycle. Default statuses: Running, Success, Failure, Need to be Redone, Waiting for Something. Administrators can add custom statuses, rename defaults, or remove those that don't fit.

Example: Custom status vocabularies
  • Pharma QA: In Progress → Pending QA Review → QA Reviewed → Approved → On Hold → Rejected – Needs Rework → Closed
  • Forensic: Case Received → Examination Active → Peer Review → Report Drafted → Court Pending → Closed
  • Quality lab: Open → Investigation → Root Cause Identified → CAPA Issued → Effectiveness Review → Verified Closed

Tags

User-defined labels that can be applied to any experiment. An experiment can have unlimited tags, and any user can create new ones. Tags are searchable, filterable, and can be visualized as a network graph showing relationships between experiments.

Why it works this way

Tags represent a graph-based organizational model rather than a tree-based one. A folder hierarchy forces you to choose one location per item. Tags allow any item to belong to any number of groupings simultaneously — reflecting the actual multi-dimensional nature of laboratory data. 'Show me all Western Blots from Project MR73 using HEK293 cells' is a single multi-tag filter query. In a folder system it requires traversing multiple subfolders and cross-referencing manually.

Permissions

Every experiment has an explicit permission setting controlling who can view and edit it. The owner always has full access. Beyond the owner, four levels are available: Private (owner only), User (team members can view), Team (read/write for all team members), and Organization (all teams can view).

Why it works this way

Default privacy protects unpublished work. The opt-in sharing model means researchers actively choose when their work is ready to be seen — protecting IP, preventing premature disclosure, and respecting the competitive nature of scientific research.

3.4 The Main Text Editor — Capturing the Science

The main text editor is the body of the experiment record — the equivalent of the blank page in a paper notebook, but with structured capabilities: rich text formatting, sortable tables, LaTeX mathematical expressions, code blocks, and inline images.

Sortable Tables

LabLynx One's built-in table editor creates tables with configurable rows and columns directly in the experiment body. Tables are sortable: clicking any column header sorts the table by that column, ascending or descending.

Example: Sortable result table in an analytical lab

An HPLC analyst runs 24 samples. Each sample's result (retention time, area, concentration) is entered into a table. The analyst clicks the Concentration column header to sort ascending — immediately identifying the three samples below the specification limit. The sort operation takes two seconds. Finding the same information in a flat text document would require manual scanning.

Mathematical Expressions — LaTeX

LabLynx One supports LaTeX syntax for mathematical notation. Surround a LaTeX expression with dollar signs ($...$) for inline math or double dollar signs ($$...$$) for display math. The expression renders visually in the saved entry.

Why it works this way

The workaround in most digital environments — inserting screenshots of equations — creates images that are not searchable, not renderable at different scales, and not accessible to screen readers. LaTeX renders the equation as a first-class element of the document.

Code Blocks

Insert a code block via the toolbar to include programming code, command-line instructions, or data processing scripts with syntax highlighting and monospace formatting. Code blocks preserve whitespace and indentation, making Python, R, bash, or any other language readable within the experiment record.

Markdown Editor (Alternative to Rich Text)

Users who prefer plain-text authoring can switch the main text editor to Markdown mode via the "Switch editor" button at the bottom right of the text box, or set Markdown as their permanent default from Settings ("Disable the rich text editor and write Markdown directly"). Both modes produce the same underlying record.

Images

Images can be inserted directly into the body by drag-and-drop, copy-paste, or the image insertion tool. They are stored as part of the experiment record and rendered inline at a configurable display size.

Why it works this way

Embedding images in the body — rather than attaching them as separate files — preserves the narrative relationship between the image and the text that explains it. A gel image appears immediately below the protocol step that produced it. The record reads as an integrated scientific account rather than a document accompanied by a folder of unlabeled images.

Spreadsheet Editor

A built-in spreadsheet editor lets researchers display and manipulate tabular data directly inside an experiment, with common spreadsheet operations, CSV/XLSX import-export, and formula calculation. Formulas are parsed when a cell expression starts with =, and dependent cells recalculate automatically when referenced values change (reactive updates); copy/paste and drag-fill adjust cell references appropriately.

FormulaPurpose
=SUM(A1:A5)Sum a range of cells
=D1 - D2, =A5 * E7Inline arithmetic between cells
=CELL() / =COLUMN() / =ROW()Return the current cell reference, column number, or row number
=VALUE(c, r)Return the value at a given column/row
Note

This is a comparatively new capability and should still be treated as an emerging feature — verify calculated values before relying on them for reportable results, the same way you would with any new tool.

3.5 Custom Metadata Fields — Structured Data Beyond the Body

Custom metadata fields capture specific, defined pieces of information in a machine-readable format — not as unstructured text, but as typed values that can be searched, filtered, validated, and exported.

Why it works this way

Free-text body content is human-readable but machine-opaque. A researcher who writes 'temperature: 37 degrees C' in the body has captured the information, but a query asking 'find all experiments run at 37°C' cannot parse it reliably. A metadata Number field labeled 'Incubation Temperature (°C)' with the value 37 is queryable, filterable, and exportable. Metadata fields convert the body's narrative into structured data.

Field TypeFormatScientific Use Cases
TextSingle line of free textBuffer name, lot number, instrument ID, operator initials, external reference number
Text areaMultiple lines of free textSample description, deviation notes, observation summary
NumberNumeric value with optional unitsConcentration (mg/mL), volume (µL), temperature (°C), pH, molecular weight, yield (%)
DateCalendar date pickerSample receipt date, expiration date, calibration due date, protocol version date
Date and timeDate plus hours/minutesInstrument run start time, autoclave cycle timestamp, centrifugation start/end
CheckboxTrue/False toggleGMP-compliant run? / Duplicate performed? / Blank subtracted? / Approved for release?
SelectSingle choice from a defined listInstrument used (from calibrated list), analysis method, analyst (from trained personnel list)
Multi-selectMultiple choices from a listCompounds tested, techniques used, co-investigators
Radio buttonSingle choice with visual radio formatPass/Fail/Inconclusive; Positive/Negative/Equivocal; Compliant/Non-Compliant
URLHyperlinkLink to instrument raw data in a repository, SOP online, regulatory guidance document
Use-Case Flexibility
  • Genomics lab: Metadata fields capture read depth (Number), reference genome version (Select), aligner version (Text), and whether the analysis was re-run after QC failure (Checkbox).
  • Environmental testing: Fields capture collection site (Select from validated site list), collection time (Date and time), field technician (Select from trained personnel), and preservation method (Select).
  • Neurotechnology startup: Metadata fields for device model (Text), firmware version (Text), implantation site (Select), and recording duration (Number) make every neural recording experiment queryable by hardware configuration.

3.6 Steps — Protocol Checklists with Live Timestamps

Steps are a checklist panel attached to an experiment. Each step is a protocol instruction that the researcher checks off as they complete it. When a step is checked, LabLynx One records the exact date, time, and identity of the user who checked it — transforming the protocol from a plan into a live execution record.

Why it works this way

Paper SOPs are checked off with a pen, providing no information about when each step occurred, who performed it, or whether the timing between steps was correct. LabLynx One's step timestamps create a time-resolution record of protocol execution. For GMP purposes, this is the difference between a record that says 'I followed the protocol' and one that proves it.

Example: Steps in a forensic drug chemistry analysis
  • Step 1: 'Retrieve evidence sample from secure storage' — timestamped at 09:14 by Analyst Kovacs
  • Step 2: 'Weigh sample and record net weight' — timestamped at 09:18 by Analyst Kovacs
  • Step 3: 'Prepare color test reagents per SOP-DC-003' — timestamped at 09:22 by Analyst Kovacs
  • Step 4: 'Perform Scott test' — timestamped at 09:25; note: 'Blue color change observed within 30 seconds'
  • Step 6: 'Return evidence to secure storage with chain of custody entry' — timestamped at 09:44

The entire evidence handling chain is documented with minute-level precision, entirely within the LabLynx One record.

Use-Case Flexibility
  • Academic: Steps serve as a protocol reminder. The timestamps confirm the timing of each step in the experiment record.
  • Biotech GMP: Locked steps from a validated template cannot be reordered, skipped, or modified. The step completion record proves the validated protocol was followed exactly.
  • ISO 17025: Steps document the execution of a standard method. Any deviation from the expected step sequence — visible from the timestamps — triggers a deviation note.

3.7 Linking Experiments and Resources — Building a Knowledge Graph

LabLynx One allows any experiment to be linked to any other experiment or resource. Links are bidirectional: if Experiment A links to Resource B, Resource B's record also shows that Experiment A linked to it. This creates a navigable network of related records rather than isolated documents.

Why it works this way

Scientific knowledge is not linear. An experiment builds on previous experiments. A protocol references multiple reagents, each with its own record. A compound's properties span dozens of experiments. In a paper system, cross-references are error-prone and quickly become stale. LabLynx One's linking model makes these relationships first-class, permanent, and navigable.

Example: Linking in a neurotechnology startup

A researcher records a neural recording experiment and links it to: (1) the Probe Resource record for the specific electrode array; (2) the Animal Resource record for the subject; (3) the previous experiment where the animal was surgically implanted; and (4) the analysis script Resource record documenting spike-sorting parameters. When the team investigates a data quality issue six months later, they navigate directly to all linked records in two clicks.

Tip

For ongoing projects, establish a 'Project Summary' experiment at the start and link every subsequent experiment in the project to it. The Project Summary becomes a navigable table of contents for the entire body of work.

3.8 Attaching Files — Preserving Raw Data

The Attachments panel holds any files associated with the experiment. No limit on number or type: instrument raw data files, chromatograms, spectra, gel images, plate reader outputs, analysis scripts, PDFs, videos. Each attachment shows its filename, size, upload timestamp, and uploader identity.

Why it works this way

The most common data integrity gap in shared-drive systems is the separation of raw data from the record that explains it. Instrument files accumulate in shared drives named by date or run number, with no connection to the experimental context that generated them. LabLynx One's attachment model makes the raw data and its experimental context inseparable.

Tip

Always attach the original raw instrument output file (e.g., .raw, .wiff, .d, .cdf) alongside any processed analysis. This satisfies the ALCOA+ 'Original' requirement: the unprocessed source data is preserved permanently alongside the interpretation, and re-analysis is always possible.

3.9 The Experiment Toolbar — All Actions Explained

ActionWhat It Does
Edit / SaveToggles between view mode and edit mode. Changes are auto-saved periodically; click Save to commit immediately.
DuplicateCreates a new experiment with the same structure: same fields, body content, metadata, and steps. New ELabID, new creation timestamp, empty attachment list.
SignatureOpens the electronic signature workflow. Three levels available: simple, PDF, or Ed25519 cryptographic. See Chapter 7.
RFC 3161 TimestampGenerates a trusted third-party timestamp. See Chapter 7.
Blockchain TimestampAn alternative to RFC 3161: anchors a hash of the entry to a public blockchain (bloxberg) for independent, decentralized proof of existence at a point in time.
ExportExports to PDF, ZIP archive, or ELN format (RO-Crate). Optionally submit to configured external repositories.
Pin EntryPins the entry to the top of the index for quick access.
Lock / UnlockLocks the experiment against further editing. The lock event is logged. Only owner or Admin can unlock.
Request ActionSends a structured notification to a colleague: Archive, Lock, Review, Sign, or Timestamp this entry.
Ellipsis (…) menuTransfer Ownership, See Revisions, See Changelog, Archive, Delete.

3.10 Comments — Preserved Dialogue on the Record

Any user with read access can leave a comment. Comments are timestamped, attributed, threaded, and permanent. Owners and commenters receive notifications when new comments are added. Comments cannot be deleted by anyone — they are part of the permanent record.

Why it works this way

The permanence of comments is a deliberate data integrity decision. In any regulated or legally reviewed context, the ability to delete comments would make the record manipulable. Permanent, attributed, timestamped comments create a communication layer on the record that is as trustworthy as the record itself.

3.11 Archiving and Deleting Experiments

Experiments have two distinct "removed from view" states, and it matters which one you use:

StateHow to Get ThereBehavior
ArchivedToolbar → More Options → ArchiveRemoved from the default list and from exports, but remains fully viewable (read-only) and can be unarchived at any time, individually or in bulk. Use this for completed, still-relevant work you want out of your everyday view.
Deleted (soft-delete)Toolbar → More Options → DeleteMoved to the trash. Excluded from searches and exports, but not permanently destroyed — it can still be opened and restored (individually or in bulk) from the Deleted filter. Use this only for entries that genuinely shouldn't have been created.

To view either set, open the Experiments list, click Show more filters, and set the state filter to Archived or Deleted. Archived entries show a small archive icon; deleted entries show a trash-bin icon.

Note

Because deletion is a soft-delete, records subject to a regulatory retention requirement are not destroyed by an accidental (or even intentional) delete action — they remain recoverable by an Admin or SysAdmin. This is an important point to make to auditors: nothing in LabLynx One's standard user-facing delete action performs a hard, unrecoverable data destruction.

Chapter 4

Working with Resources — The Shared Inventory

Resources are the catalog dimension of LabLynx One. While Experiments document what happened, Resources document what was used. Because Resources are linked to experiments rather than duplicated within them, a single Resource record serves as the authoritative, shared reference across the entire team's experimental history.

Why it works this way

The Resource model reflects how laboratories actually operate. A given antibody lot is purchased once, characterized once, and used dozens of times across many experiments. Documenting the characterization once as a Resource — and linking experiments to it — means that if a quality concern arises with that lot, you know the full scope of impact in one click.

4.1 Resource Categories — Unlimited Flexible Classification

Resource Categories are defined by your Administrator and can represent any entity your lab manages. There is no pre-imposed taxonomy.

Use-Case Flexibility
  • Academic research: Antibodies, Cell Lines, Plasmids/Constructs, Chemicals, Equipment, Projects, Personnel
  • Pharmaceutical quality: Reference Standards, Reagents, GMP-Qualified Equipment, SOPs, Customers, Suppliers, Finished Products
  • Forensic lab: Active Cases, Evidence Items, Analysts, Instruments, External Laboratories
  • Neurotechnology startup: Implant Devices (by serial number), Animal Subjects, Surgical Instruments, Software Versions, Study Protocols
Tip

Think of Resource Categories as the 'nouns' of your lab's vocabulary. Anything that exists independently of a particular experiment — anything with a serial number, lot number, location, specification, or lifecycle — is a candidate for a Resource entry.

4.2 Creating and Editing Resources

Creating a Resource follows exactly the same process as creating an Experiment: click Create from the Resources page, title the entry, optionally select a Resource Template, and click Create. Resources have the same field types as Experiments: main text, metadata fields, tags, status, steps, links, and attachments.

Example: A fully configured antibody resource entry

Title: Anti-p53 Antibody, Clone DO-7, Lot #AB-2024-441
Metadata fields: Vendor (Abcam), Catalog # (ab26), Lot # (AB-2024-441), Concentration (1 mg/mL), Storage Temperature (−20°C), Expiry Date (2026-12-31), QC Status (Pass)
Attachments: Vendor datasheet PDF, validation Western Blot image, Certificate of Analysis
Linked experiments: All experiments that referenced this lot appear here automatically — a complete usage log with zero manual effort.

4.3 The Scheduler — Equipment Booking

Any resource can be made bookable. When an equipment resource has scheduling enabled, a calendar appears on its resource page. Authorized users can book time slots. The scheduler shows all bookings in a color-coded calendar view, preventing double-booking and creating a timestamped access record for every booking.

Why it works this way

The Scheduler solves a universal laboratory problem: instrument time conflicts. A paper sign-up sheet is invisible to remote team members, can be altered without a record, and provides no booking history. LabLynx One's Scheduler is visible to the whole team, requires authenticated logins (so every booking has a named owner), and creates an immutable record of who booked what and when.

Example: Kiosk-mode scheduler in a cleanroom environment

An Android touchscreen mounted near the HPLC system runs the LabLynx One interface. A technician approaching the instrument authenticates with their LabLynx One credentials, confirms their booking, and begins the session. This creates a timestamped, attributed access record — who used the instrument, for how long, linked to which experiment — without requiring a laptop nearby.

4.4 Procurement — Reorder Management

Any resource can be configured for procurement to allow team members to submit reorder requests. Procurement requests accumulate in the Team page > Procurement Requests tab, where lab managers review, approve, and mark orders as placed or received.

Chapter 5

Templates — Encoding Laboratory Standards

Templates are the most powerful tool for standardizing laboratory documentation. A Template is a pre-configured framework that every new experiment of a given type starts from. Rather than relying on each researcher to remember what information to capture, a good template makes correct documentation automatic.

Why it works this way

Reproducibility problems in scientific research are often not failures of scientific method — they are failures of documentation. Researchers leave institutions, protocols exist only in memory, and key variables are omitted because 'everyone already knows that'. Templates solve this at the system level: the template defines what must be recorded, and the template is always present when a new experiment starts.

5.1 What a Template Can Contain

Main Text Content

Pre-written protocol structure, placeholder headings, instructional text, example tables, standard disclaimers.

Metadata Fields

Any field type combination with default values and field descriptions explaining what is expected.

Steps

A protocol checklist with task descriptions and optional deadlines and notifications.

Locked Steps

Steps that cannot be modified or deleted after experiment creation — SOP-level enforcement.

Linked Resources

Pre-linked entries (e.g., the relevant SOP, the standard reagent kit) that all experiments of this type reference.

Permission Defaults

Default Visibility and Can Write settings for all experiments created from this template.

5.2 Creating and Managing Templates

Navigate to Experiments → Templates (or Resources → Templates for a resource template). Click Create. Enter a title. Optionally start from an existing template. Build the template: write the main text structure, add metadata fields (click + Extra Field), define steps, link relevant resources, and set permission defaults. Save. The template is now available when creating new experiments of this type.

Tip

Build templates incrementally. Start with main text headings and 4–5 core metadata fields. Run 5–10 real experiments using it. Refine based on what you always add manually. A good template evolves with the lab. Schedule an annual template review to update fields and retire obsolete sections.

5.3 Locked Steps — SOP Enforcement in Practice

When a step in a template is locked, experiments created from that template display those steps as read-only. Analysts can check them off (mark complete, with timestamp and attribution) but cannot edit the step description or delete it. The correct procedure is defined once in the template and cannot be circumvented by any user.

Example: Locked steps in a GMP-regulated analytical method

An HPLC method has 8 critical steps validated in an SOP. These steps are added to the 'HPLC Method Execution' template with locks enabled. Every analyst who creates a new HPLC experiment sees the same 8 locked steps. As each step is performed, the analyst checks it off. LabLynx One records their name, the system timestamp, and which step was completed. If an FDA inspector asks 'how do you verify analysts follow the HPLC method?', the answer is: every HPLC experiment has an automatically generated, timestamped, attributed step-completion record — for every run.

5.4 Modular Template Composition

From within the main text editor, Insert → Insert Template imports another template's body content at the cursor position. This enables modular assembly: build complex experiments from reusable, independently maintained template sections.

5.5 Pinning — Controlling Which Templates Appear by Default

New templates are "pinned" by default, meaning they appear in the Create pop-up window and in the quick-create menu next to the Create button on the Experiments/Resources page. As a team accumulates templates over months or years, not every template needs to stay in that shortlist — click the thumbtack icon on a template to unpin it. Unpinned templates remain fully usable; they're simply reached by browsing the full Templates list rather than the quick-create shortcut.

Tip

Periodically unpin templates for discontinued methods or one-off protocols so the quick-create menu stays focused on the handful of templates your team actually uses every week.

Chapter 6

Search, Tags, and Organization

The ability to find information quickly is what separates an effective ELN from a digital filing cabinet. LabLynx One provides several complementary tools for organizing and retrieving data — each addressing a different discovery need.

6.1 Full-Text Search

The search bar on any index page searches across titles, main text content, metadata field values, and tag labels simultaneously. You can combine search terms with filters (Category, Status, Date Range, Author) to narrow results precisely.

Tip

LabLynx One indexes the content of the main text body, not just titles. If you wrote 'unexpected precipitate formed at 37°C' in an experiment three years ago, searching for 'precipitate 37' will find it. This is a significant advantage over folder-based storage where search only matches filenames.

6.2 Tags — Multi-Dimensional Organization

Unlike Categories (an experiment belongs to one), tags are additive. An experiment can have unlimited tags, and each tag provides an independent filter dimension.

Why it works this way

Tags represent a graph-based organizational model rather than a tree-based one. A folder hierarchy forces you to choose one location per item. Tags allow any item to belong to any number of groupings simultaneously — reflecting the actual multi-dimensional nature of laboratory data.

6.3 Favorite Tags

Open the left panel (click the arrow on the left edge of the screen) and use the + button to define Favorite Tags. Favorite Tags appear as one-click filter shortcuts. If you activate a Favorite Tag filter before creating a new experiment, the new experiment is automatically tagged with that tag.

6.4 Four Strategies for Grouping Experiments into Projects

StrategyHow It WorksBest For
Tags (most flexible)Apply a consistent project tag to all experiments. Filter by tag to see the project view.Most labs; especially academic, where project boundaries are fluid.
Experiment CategoriesAdmin-defined broad classifications. Best for workflow type grouping.Labs with stable experiment type vocabularies.
Project ResourcesCreate a Resource entry (Category: Project). Link all project experiments to it. 'Show Related' shows all linked experiments.Complex multi-person, multi-year projects needing a navigable overview.
Direct Experiment LinksLink experiments to each other for sequential workflows.Protocol iteration tracking where each experiment builds on the previous.
Chapter 7

Signatures, Timestamps, and Record Integrity

LabLynx One provides a layered system for attesting to the authenticity, approval, and timing of records. Understanding when to use each mechanism — and why they provide different types of assurance — allows laboratories to meet regulatory requirements precisely.

7.1 Three Tools, Three Questions

QuestionToolPurpose
Who attested?Electronic SignatureProves a specific named person intentionally approved or attested to a specific record at a specific time. A human attestation of intent.
What existed?RFC 3161 / Blockchain TimestampProves a record's exact content existed at a specific point in time, certified by an independent trusted authority. Protects against backdating.
What changed?Changelog + RevisionsProvides a continuous, immutable record of every modification to every field. Satisfies ALCOA+ 'attributable and contemporaneous' requirements.
Why it works this way

These three tools address different adversarial concerns. A signature proves intent. A timestamp proves timing: this specific content existed before this specific moment and was not fabricated retroactively. A changelog proves completeness: nothing was silently changed. Together they provide the full data integrity framework that FDA 21 CFR Part 11, GMP, and ALCOA+ require — no single tool provides all three assurances alone.

7.2 Electronic Signatures — Three Levels

Level 1: Simple (Implicit) Signature

Any authenticated action by a user constitutes an implicit attestation: locking an experiment, checking a Step, leaving a comment, or responding to a Request Action. All are logged with the user's identity and a system timestamp.

Level 2: Handwritten Signature Block (PDF)

Enable in Settings → General → PDF Configuration → 'Enable signature block in PDF Export'. Exports include a formatted signature block for physical signing. The signed PDF is scanned and attached to the entry. Used during hybrid paper-to-digital transitions or where wet signatures are still institutionally required.

Level 3: Advanced Cryptographic Signature (Ed25519)

The most rigorous option. Uses the Ed25519 public-key signature algorithm. When a user signs, LabLynx One generates a SHA-256 hash of the experiment's content at that moment, signs that hash with the user's private key, and stores the signature. The signature can be independently verified at any future date using the open-source Minisign tool.

Why it works this way

Ed25519 signatures provide non-repudiation that no password-based signature system can offer. A password can be shared, guessed, or disclosed. An Ed25519 signature can only be produced by the holder of the specific private key, which never leaves the signer's device. For laboratory notebooks used in patent disputes, FDA submissions, or litigation, this cryptographic guarantee is the highest available standard of signature authenticity.

Example: Two-person review workflow using cryptographic signatures
  1. Analyst completes experiment, applies their cryptographic signature with meaning 'Author Review'.
  2. Analyst uses 'Request Action → Sign' to send the entry to their supervisor.
  3. Supervisor reviews the entry, applies their signature with meaning 'Approval'.
  4. Experiment is locked. The entry now carries two independent cryptographic signatures — a complete two-person review record satisfying 21 CFR Part 11 requirements.

7.3 RFC 3161 Trusted Timestamping

Clicking the Timestamp button initiates the RFC 3161 trusted timestamping process. LabLynx One generates a cryptographic hash of the experiment's complete content, sends it to a Timestamp Authority (TSA), and stores the returned timestamp token with the experiment record in an immutable, archived ZIP file (visible via "Show Archived" in the Attached Files section).

TSA ProviderNotes
DFN.deFree academic service — the default TSA
UniversigneIDAS qualified, paid service
DigicertFree
SectigoFree
GlobalSignFree
EvidencyeIDAS qualified, requires account
CustomAny RFC 3161-compliant TSA can be configured by the SysAdmin
Tip

A timestamp token can be independently verified at any time with openssl against the exported JSON and token files — you don't need LabLynx One itself to confirm a timestamp's validity, only the public certificate chain of the TSA that issued it.

Why it works this way

Why does an external timestamp matter when LabLynx One already records system timestamps on every save? Because an external timestamp is mathematically independent. An RFC 3161 token from a TSA cannot be fabricated without the TSA's private key. A database administrator could theoretically alter internal timestamps in a database. A TSA token cannot be altered after issuance. For IP disputes, regulatory submissions, and court proceedings, independent third-party-certified proof of existence is qualitatively different from internal system timestamps.

Example: RFC 3161 timestamping for IP protection

A researcher at a neurotechnology startup develops a novel electrode impedance matching algorithm. She documents it in an LabLynx One experiment and immediately applies an RFC 3161 timestamp. Seven months later, when a competitor files a patent on a similar algorithm, her attorney demonstrates that the timestamp token — issued by an independent TSA — proves her client's documentation preceded the competitor's filing date.

7.4 Blockchain Timestamping

LabLynx One supports timestamping via the Bloxberg consortium blockchain — an Ethereum-based research blockchain operated by the Max Planck Society and partner institutions. A hash of the entry is committed to the blockchain ledger, providing decentralized, permanent proof of existence. A PDF certificate is included in the resulting archive.

Blockchain timestamping is particularly appropriate for academic research (data sharing, grant compliance), cross-institution collaborations, and situations where decentralized proof (no single authority) is preferable.

Chapter 8

Audit Trail and Data Integrity

LabLynx One is designed around ALCOA+ data integrity principles — Attributable, Legible, Contemporaneous, Original, Accurate, Complete, Consistent, Enduring, and Available. Every component of the audit system exists to satisfy one or more of these principles.

8.1 Changelog — Field-Level History

Every change to every field of an experiment or resource — title, status, category, tags, permissions, metadata values, linked entries, step completions, signature events, timestamps — is captured in the Changelog with the prior value, new value, user identity, and system-generated timestamp. The Changelog is read-only, permanent, and cannot be deleted or modified by any user including administrators.

Access: Ellipsis menu (…) → See Changelog on any entry.

Example: Changelog in a regulatory inspection

An FDA inspector asks: 'How do you know the status of this experiment was not changed after the data was reviewed?' The analyst opens the Changelog and shows: 'Status changed from Pending Review to Approved at 14:32:07 on 2026-05-15, by Dr. Jessica Martin.' A single, unambiguous, system-generated, immutable record — not a statement by the analyst, but a database entry the system created automatically.

8.2 Revisions — Main Text Version History

Changes to the main body of an experiment are tracked by the Revisions system. Each save creates a new version. The Revisions page (Ellipsis → See Revisions) shows all versions with timestamps and authors, allows side-by-side version comparison, and enables restoring any prior version.

Why it works this way

The revision system makes the body text equally trustworthy as the structured fields. Without revision history, a researcher could rewrite their experimental narrative after seeing the results, creating a record that is internally consistent but historically inaccurate. With revision history, the original account of what happened is always recoverable, and every subsequent change to the narrative is documented.

8.3 ELabID — The Permanent Unique Identifier

Every experiment and resource in LabLynx One is assigned an ELabID at creation. The ELabID is system-generated, permanent, and cannot be changed or reassigned. Use the ELabID to cite specific LabLynx One records in external documents, publications, patent applications, or regulatory submissions — providing a permanent cross-reference that links the citation back to the original record.

8.4 Locking, Archiving, and the Deletion Model

StateWhat It MeansWhen to Use It
LockingPrevents further editing. Lock event logged. Only owner or Admin can unlock.After completing and reviewing. Before or after signing.
ArchivingMoves entry out of the active index without deleting. Still accessible via State filter.Project completion, superseded versions, closed cases.
Soft DeleteMarks as deleted but preserves in database. Recoverable via State filter.Accidental or erroneous entries. Never for GxP records without authorization.

8.5 ALCOA+ Compliance Summary

ALCOA+ PrincipleHow LabLynx One DeliversLabLynx One Feature
AttributableEvery action linked to authenticated user identity. No shared logins. SSO/MFA integration confirms identity.Changelog, user attribution on all saves
LegibleRich text editor; PDF exports; full-text search indexing.Main text, metadata fields, PDF export
ContemporaneousSystem-generated timestamps. Cannot be backdated by users.All save timestamps, Step completion timestamps
OriginalRaw data files attached directly to entries. Revisions preserve all prior versions.File attachments, Revisions history
AccurateValidated workflows, required fields, dropdown fields preventing free-form errors.Template metadata fields, locked steps
CompleteTemplates define required fields. Locked steps enforce complete procedure documentation.Template configuration, locked steps
ConsistentStandardized templates across the team. Agreed tag vocabularies. Category-based classification.Templates, tag vocabulary, categories
EnduringsciCloud.net® hourly backups, geographically redundant storage, AWS infrastructure, 99.8% SLA.Hosting architecture, backup policy
AvailableWeb-based access from any device; full-text search; role-based permissions for authorized access.All access methods, export features, search

8.6 The System-Level Audit Log (Distinct from the Changelog)

The Changelog (8.1) and Revisions (8.2) track changes to individual experiment/resource records. Separately, LabLynx One maintains a system-level Audit Log that immutably records security- and administration-relevant events across the whole instance. A SysAdmin views it from the Audit Logs tab of the Sysconfig panel.

CategoryRecorded When
Login / LogoutEvery authentication event, success or failure
AccountCreated / AccountValidated / AccountArchived / AccountDeleted / AccountModifiedAny change to a user account's lifecycle state
PasswordChanged / PasswordResetRequestedCredential changes
Users2TeamsModifiedA user is added to, removed from, or reassigned between teams
ApiKeyCreated / ApiKeyDeletedAPI key lifecycle events
ConfigModifiedAny instance-wide configuration parameter changes
Export / ImportBulk data export or import operations
SignatureKeysCreated / SignatureCreatedCryptographic signature key generation or signature application (Chapter 7)
ActionRequestedA "Request Action" notification (Archive/Lock/Review/Sign/Timestamp) is sent to another user
Tip

For a centralized SIEM or log-aggregation setup, the SysAdmin can enable "Emit audit logs with PHP error log" (Audit Logs tab, Sysconfig panel) so every event above is also written as a structured JSON line to the container's standard log stream — see the IT Admin Manual, Chapter 11, for the log-shipping configuration.

Chapter 9

Collaboration and Sharing

Science is collaborative. LabLynx One provides structured tools for sharing work within teams, routing records through formal review processes, and enabling access for collaborators outside the immediate team — while maintaining the integrity, attribution, and auditability of every shared interaction.

9.1 Sharing Within the Team

Within a team, sharing is controlled by each experiment's permission setting. Team Admins can view all experiments in their team regardless of individual permission settings — enabling supervisors to review student or staff work without requiring each researcher to manually share every entry.

9.2 Request Action — Structured Review and Approval Workflows

The Request Action feature sends a formal, trackable notification to any LabLynx One user requesting them to perform a specific action on an experiment. It converts the informal 'can you please sign my experiment' email into a system-documented workflow event.

Action TypeWhat It Requests
ArchiveRequest the recipient to archive this experiment.
LockRequest the recipient to lock this experiment after their review.
ReviewRequest the recipient to read and provide feedback via comments.
SignRequest the recipient to apply their electronic signature. The most common workflow.
TimestampRequest a QA lead or supervisor to apply a trusted timestamp.
Why it works this way

Email-based review workflows are the silent enemy of data integrity audits. They are irretrievable (deleted emails), unstructured (no guarantee the reviewer saw the final version), external to the record (the review is not attached to what was reviewed), and undatable by anyone not on the email thread. Request Action moves the review and approval conversation inside the LabLynx One record, where it is part of the same audit trail as the record itself.

9.3 Cross-Team and External Collaboration

Experiments set to 'Organization' permission level are visible to all teams on the LabLynx One instance. For collaborators outside the instance entirely, there are three supported approaches:

OptionHow It WorksBest For
Export and sendExport the entry to PDF or ZIP and send it by email or file transfer.One-off sharing where the recipient never needs live/updated access. Works everywhere, no configuration required.
Anonymous access linkIf the SysAdmin has enabled anonymous access instance-wide, any user can generate a read-only link (with an access key embedded in the URL) from an entry's Visibility/Permissions panel. Unchecking the option invalidates all previously shared links for that entry.External reviewers or collaborators who should see the record evolve over time without needing an account. Requires the instance to be reachable from outside your network.
Guest / external-collaborator accountAdd the external person as a proper user (often to a dedicated "External Collaborators" team), then grant them access to specific entries via the Permissions panel — add a whole team, a user group, or a single named user.Ongoing collaborations where the collaborator should log in, comment, and follow multiple entries over time.
Why it works this way

Each option trades off convenience against control. Export-and-send requires no configuration but produces a static snapshot. The anonymous link stays live but is scoped to read-only and can be revoked instantly. A named guest account gives the richest access (including commenting) but requires the SysAdmin or Admin to provision an account. Choosing deliberately among the three — rather than defaulting to email attachments for everything — keeps the audit trail intact even when work crosses institutional boundaries.

9.4 Transferring Ownership

Ownership of an experiment can be transferred from one user to another via the Ellipsis (…) menu. The original owner's identity remains in the audit trail and creation records — it is not erased. The transfer event itself is logged.

Why it works this way

In a paper notebook, when a researcher leaves, the notebook often becomes inaccessible. The institution loses both the data and the context needed to interpret it. LabLynx One's ownership transfer model ensures that all experiments remain institutionally owned and accessible, regardless of personnel changes — directly addressing one of the most common causes of irreproducible research.

Chapter 10

Import, Export, and the REST API

LabLynx One is designed as an open system: data can be exported in multiple formats, imported in bulk, and accessed programmatically via a comprehensive REST API. This openness is fundamental to LabLynx One's role in the laboratory data ecosystem — it is a record-keeping hub, not a data silo.

10.1 Exporting Experiments — Four Formats

FormatDescription and Use Cases
PDFFully formatted, human-readable document with all experiment fields, body text (including images and tables), metadata, steps, attachments list, and audit summary. For regulatory submissions, external sharing, printing, and archiving.
ZIP ArchiveAll files associated with the experiment: the PDF, all attachments in original format, and a JSON metadata file. A complete, self-contained archive of everything in the record. For long-term archiving and offline backup.
ELN Format (RO-Crate)A machine-readable archive format based on the Research Object Crate specification, defined by The ELN Consortium. Interoperable with other compliant ELN systems. For cross-institution data sharing and research data repository submission.
CSV / JSON (API)Individual fields and metadata can be exported programmatically via the REST API. Custom export scripts can extract specific data sets for analysis, reporting, or LIMS integration.

10.2 Importing Data — .eln Archives and CSV

LabLynx One supports two import file types: .eln (an interoperable ELN Consortium archive format) and .csv.

Import TypeWhat It CarriesHow to Import
.eln archiveExperiments, experiment templates, resources, and resource categories — from LabLynx One or any ELN Consortium-compliant system. Entry type is detected automatically via the archive's genre attribute, or can be forced manually.Web: Profile menu → Import tab, select the file. CLI (SysAdmin, for large team migrations): copy the file into the container's /elabftw/exports folder, then run docker exec -it -u nginx:nginx elabftw bin/console import:eln your.eln <TEAM_ID>.
.csv fileResource records from a spreadsheet or external LIMS/inventory system.Clean the file first (flat structure, header row, no empty rows/duplicate column names), then import via the web interface.
Tip

The CLI import path is the recommended approach for large archives (e.g., a full team's data when migrating between institutions) since it avoids the web request timeouts a large upload could hit. By default, ownership of imported items is matched by comparing email addresses between the source and destination instances — useful for moving a whole team's data intact — but a specific user can also be forced with the --userid option.

10.3 The REST API — Connecting LabLynx One to the Laboratory Ecosystem

LabLynx One exposes a comprehensive REST API that enables programmatic read and write access to experiments, resources, templates, and the user directory. Every action possible in the user interface can be performed via the API. Authentication uses personal API keys generated in Account Settings.

Integration PatternHow It Works
Instrument data pushAn instrument controller creates a new LabLynx One experiment automatically after each run, populates metadata with run parameters, and attaches the raw data file.
LIMS synchronizationA LIMS system that manages sample receipt creates a corresponding LabLynx One experiment for each sample, pre-populating the Custom ID with the LIMS accession number.
Automated reportingAn overnight script queries LabLynx One for all experiments completed in the past 24 hours and populates a daily QC dashboard.
Data analysis pipelineAn R or Python script reads result data from LabLynx One experiments, performs statistical analysis, generates a figure, and posts the figure back as an attachment.
ERP / procurement syncWhen a purchase order is approved in an ERP system, the API automatically updates the corresponding Resource entry with the new lot number, quantity, and expiry date.
Chapter 11

Compounds, Containers, and Special Features

Beyond the core experiment and resource system, LabLynx One includes specialized modules for chemical compound management, hierarchical physical storage tracking, QR code labels, and a free-form drawing tool.

11.1 Chemical Compounds Database

Accessible from the Tools menu, the Compounds database is a single, instance-wide registry shared by every team — not team-scoped like Experiments or Resources. Compound visibility cannot be restricted: any compound you add, whether imported or manual, is visible to every user on the instance. Each compound entry stores: chemical name, CAS number, a SMILES or InChI representation, and associated GHS safety hazards (including whether it's a controlled substance such as a drug precursor or a nanomaterial).

Compounds can be added two ways:

  • Import from PubChem: Click "Import from PubChem" on the Compounds page, search by PubChem CID or CAS number, preview the result, and click Import.
  • Add manually: For a novel compound not yet in PubChem, click "Add compound." Only the Name field is required.

From a compound's edit window, click "Create resource from compound" to instantiate a Resource linked to that compound — the Resource carries permissions, inventory, attachments, and links, while the Compound record itself remains the shared, abstract chemical reference. A Resource or Experiment can link to multiple compounds at once, useful for representing a mixture.

Why it works this way

Integrating GHS hazard information directly into LabLynx One entries serves two purposes simultaneously: (1) Safety information is always co-located with the experiment where the chemical is used. (2) The experiment record documents that the hazard information was available at the time the work was planned, supporting laboratory safety compliance requirements.

Fingerprinting and Substructure Search

When a compound has a SMILES representation and the instance's fingerprinting service is enabled, LabLynx One stores a molecular fingerprint alongside it, enabling substructure search across the shared compound database. A dedicated chemical structure editor (Tools menu) lets you draw a molecule and search for structurally similar compounds already in the database — click the (?) icon in the editor for built-in usage help.

11.2 Inventory Locations and Containers — Physical Storage Tracking

Physical storage tracking uses two linked concepts, both reachable from the Tools menu's Inventory page:

  • Inventory Locations: The physical hierarchy itself — buildings, rooms, freezers, shelves, boxes. You start by adding one or more Root elements (e.g., a building), which cannot directly hold anything stored; add children beneath a root to build out the actual storage tree (room → freezer → shelf → box position).
  • Containers: The stored quantity itself, added from within an Experiment or Resource entry's "Containers" section. When adding a container you specify quantity, unit, and optionally a multiplier (e.g., 3 jerrycans of 5L), then choose "Store in…" to place it at a specific Inventory Location.
Example: Container tracking in a cell biology lab

Building → Room 204 → Freezer F-01 → Shelf 3 → Box B-12, position A-1 holds a container linked to the Resource entry "HEK293 Cell Stock, Passage 12, 2026-04-15." Scanning the QR code on the vial opens that Resource entry directly: full provenance (who prepared it, from which parent stock, passage number, cryoprotectant, and all experiments where cells from this stock were used) is immediately accessible.

Tip

Export a CSV of all containers your team can see from the Export button on the Inventory page. A SysAdmin can pull a complete instance-wide inventory report — regardless of read permissions — from "Get inventory report" in the Sysconfig panel, useful for facility-wide chemical/asset audits.

11.3 QR Code Labels

LabLynx One generates QR code labels for any Experiment or Resource entry. Scanning the label with a mobile device opens the entry directly in LabLynx One (when authenticated). Common uses:

  • Sample tubes and vials: Scanning opens the sample Resource entry with full provenance.
  • Equipment: Scanning opens the instrument Resource entry with calibration status and usage history.
  • Storage containers: Scanning opens the container map for that box.
  • Chemical bottles: Scanning opens the compound entry with GHS information.

11.4 The Draw Tool

Each Experiment and Resource entry includes a Draw Tool — a free-form drawing canvas for creating plate layouts, apparatus sketches, flow diagrams, or simple annotations directly within the entry. The Draw Tool is particularly useful for plate layout documentation: sketch a 96-well plate, label wells with treatment conditions, and leave a legend.

Chapter 12

Configuration Patterns by Laboratory Type

LabLynx One's flexibility means it can be configured very differently for different types of laboratories. The following patterns show how LabLynx One is configured for five specific laboratory environments. Each can be implemented using only the features described in this manual.

12.1 Academic Research Lab

Goals: Reproducibility, collaboration, grant compliance, IP documentation, publication support, student training.

Configuration AreaRecommended Setup
Experiment CategoriesOne per technique: Western Blot, PCR, FACS, Microscopy, Sequencing, In Vivo, Data Analysis, Meeting Notes, Literature Review.
Resource CategoriesCell Lines, Antibodies, Plasmids/Constructs, Chemicals, Equipment, Projects (one per grant), Personnel.
Template DesignEach technique template includes: hypothesis field, expected outcome field, controls checklist (locked steps), result fields, conclusion section.
PermissionsTeam-wide read. Individual write. PI (Admin) can always see all entries.
Signature WorkflowResearcher signs when complete. PI signs for publications and grant reports. RFC 3161 timestamp on key result experiments before locking.

12.2 Pharmaceutical / Biotech QA Lab

Goals: 21 CFR Part 11 compliance, CAPA management, method validation, batch record documentation.

Configuration AreaRecommended Setup
Experiment CategoriesMethod Validation, HPLC Runs, Batch Record, CAPA, NCR, OOS Investigation, Stability Study, Audit, Change Control.
Template DesignAll analytical templates require: instrument (Resource Link), analyst, date, lot numbers. CAPA template: root cause, scope, corrective action, effectiveness review date, closure signature. All critical templates have locked steps.
PermissionsAnalyst: read-write own entries. QA Reviewer: read + comment. QA Manager: sign and lock on critical records.
Signature WorkflowPrepared By (analyst) → Reviewed By (QA) → Approved By (QA Manager). RFC 3161 timestamp on all approved records.
MFARequired for all user accounts. Enforced at the team or system level.

12.3 Forensic / Crime Laboratory

Goals: Chain of custody integrity, evidence traceability, court-ready records.

Configuration AreaRecommended Setup
Experiment CategoriesCase Intake, Evidence Examination, QC Run, Peer Review, Court Report, OOS Investigation, Training Record.
Custom IDCase Intake category: auto-incrementing sequential case numbers matching the lab's existing paper system.
Template DesignCase Intake: submitting agency, case type, priority, evidence item list (metadata fields). Evidence Examination: evidence item # (Resource Link), examination method, instrument, result, locked QC checklist steps.
Signature WorkflowExaminer → Peer Reviewer → Lab Director in sequence before locking. Three-level cryptographic signature chain.
Locking PolicyLock all completed case records immediately after final signature. RFC 3161 timestamp before locking on court-bound records.

12.4 Neurotechnology / Medical Device R&D Startup

Goals: Multi-team ELN, 21 CFR Part 11 readiness, IP protection, rapid deployment.

Configuration AreaRecommended Setup
Team StructureSeparate LabLynx One Teams: Hardware Engineering, Microfabrication, Chemistry, In Vivo/Clinical, Quality & Regulatory. Cross-team visibility where appropriate.
Resource CategoriesImplant Devices (by serial number), Animal Subjects, Surgical Instruments, Software Versions, Study Protocols, Personnel.
IP Protection WorkflowNovel discovery: RFC 3161 timestamp immediately upon documentation. Ed25519 signature by the inventor. Cited in patent application as prior art evidence.
Compliance TrajectoryStart with team-wide access and simple lock workflows. As clinical trials approach, activate cryptographic signatures, RFC 3161 timestamps, and mandatory MFA. LabLynx One grows with the organization.

12.5 ISO 17025 Quality / Analytical Testing Lab

Goals: Traceable method execution, equipment management, QC documentation, audit readiness.

Configuration AreaRecommended Setup
Experiment CategoriesRoutine Analysis (per method type), Method Development, Method Verification, QC Check, Equipment Calibration, Proficiency Testing, Corrective Action.
Template StructureOne template per accredited method. All steps locked. Method version is a required metadata field. Template reviewed and approved by the quality manager before release.
Equipment ManagementAll instruments are resource records with: calibration due date (Date field), calibration certificate number (Text), last maintenance record (linked experiment), status (In Service/Out of Service/Under Maintenance).
QC IntegrationQC Run template: acceptance criteria (metadata fields), measured values (Number fields), Pass/Fail (Dropdown), instrument (Resource Link). Failing QC automatically linked to an OOS Investigation experiment.
Signature WorkflowAnalyst (Prepared By) → Technical Manager (Reviewed By) on all test reports. RFC 3161 timestamp on final test reports before delivery to customer.
Chapter 13

Tips, Best Practices, and Common Pitfalls

Practical habits that make LabLynx One work better every day — and the most common mistakes to avoid.

13.1 Daily Use Habits That Make a Difference

HabitWhy It Matters
Document before you analyzeCreate and populate the experiment record before you open your results in a spreadsheet or analysis software. Prevents the unconscious bias of shaping the record around a result you already know.
Attach raw data immediatelyAs soon as an instrument produces output, attach the file to the corresponding experiment. Files not attached immediately get lost, renamed, or forgotten.
Use descriptive titlesSpend 30 seconds writing a title that describes the experiment's content: technique, key variable, purpose. This investment compounds over time as your records become self-findable.
Check off steps as you goCheck off each step at the moment of completion — not all at once at the end of the procedure. A step checked off at the end of the day loses its timestamp value as evidence.
Comment generouslyAdd comments when you notice something unexpected, make an unplanned deviation, or have a retrospective insight. Comments cost 30 seconds; reconstructing undocumented observations can take days.
Link as you workWhen you use a reagent, link the experiment to the reagent's resource record. Links are trivially easy to create and enormously valuable to follow later.

13.2 Common Pitfalls and How to Avoid Them

PitfallProblem It CreatesHow to Avoid It
Vague experiment titles'Experiment 7' is unsearchable and meaningless to anyone but the creator.Write titles that include technique, variable, and purpose. Adopt a team naming convention before rollout.
Skipping templatesInconsistently structured entries cannot be filtered by metadata.Invest one hour in template design per experiment type before team rollout.
Re-typing instead of linkingWriting 'Antibody lot AB-2024-441' in 50 experiments means you cannot filter by lot. Lot details are not structured data.Create a Resource entry and link to it. Re-typed text is not a structured filter.
Ignoring Scope'I can't find my experiment' is usually a scope problem.Check scope is 'Team' or 'Everything' before concluding an entry is missing.
Not locking completed recordsAn unlocked experiment is implicitly 'in progress'. Especially problematic in regulated environments.Lock records when complete and reviewed.
Storing large files directly in LabLynx OneFiles over 100 MB slow database queries.Store large instrument data in LabDrive; link via URL metadata field.
Inconsistent tag vocabularyIf two researchers create a 'project1' tag for different projects, filters become meaningless.Agree on a tag vocabulary as a team and document it.

13.3 Five Template Design Principles

  1. Design for the most junior user, not the most experienced one. A template that an experienced researcher considers over-specified gives a new team member everything they need without asking.
  2. Include all fields you will ever need for analysis, not just the ones you think you will use. Storage costs nothing. Missing data costs everything.
  3. Lock only what must not vary. If a step ever needs legitimate modification, locking creates unnecessary friction. Lock only steps that have regulatory, compliance, or quality force.
  4. Version your templates. When a protocol changes, create a new template version. Archive the old one. Old experiments retain their original structure.
  5. Review templates quarterly. Assign a template owner responsible for reviewing and maintaining each template in the team library.
Chapter 14

Support and Resources

LabLynx is committed to the success of every LabLynx One deployment. Support resources are available at multiple levels, from self-service documentation to direct access to the LabLynx technical team.

ResourceDetails
LabLynx One Knowledge BaseSearchable self-service documentation covering all features, configuration options, and common workflows. Available at: support.lablynx.com
Email SupportDirect access to the LabLynx technical support team: support@lablynx.com
Onboarding ConsultationLabLynx provides structured onboarding sessions: system configuration review, template design assistance, user training, and workflow setup.
Account ManagementYour dedicated LabLynx account manager for strategic discussions, product roadmap questions, and expansion planning.
Product Websitewww.elabeln.com — Product information, features, pricing, and updates.
LabLynx Corporatewww.lablynx.com — Full LabLynx platform: ELab LIMS, LabDrive, LabVia, LabVista, LabGRC, LabCourses.
sciCloud.net®Managed cloud hosting: AWS-based, SOC 2, 99.8% uptime SLA, hourly backups, AES-256 encryption, geographically redundant.
LabLynx's Promise

"LabLynx One is more than software — it is a partnership between your laboratory and LabLynx. We manage the infrastructure, the security, the backups, and the updates so your team can manage the science. If you have a configuration question, a workflow challenge, or a compliance requirement you are not sure how to address in LabLynx One, we are a direct email away."

support@lablynx.com | www.lablynx.com | www.elabeln.com

Documentation Set

LabLynx One Administrator Manual

For team and system administrators configuring LabLynx One.

Preface

Who This Manual Is For

This manual is written for LabLynx One administrators at two levels. Understanding which level applies to you determines which chapters are your primary reference.

🔧
Team Administrator (Admin) — Chapters 2–8
Manages a single team: categories, templates, statuses, tags, user groups, permissions, exports, and batch actions. Can view all team experiments regardless of individual permission settings. Typical roles: lab manager, PI, quality manager, department lead.
⚙️
System Administrator (SysAdmin) — Chapters 9–14
Manages the entire LabLynx One instance: all teams, all users, authentication (SSO/LDAP), security policies, email configuration, and instance-wide defaults. Inherits all Admin capabilities across all teams. Typical roles: IT administrator, LabLynx support contact, platform owner.
Note

If you are a Team Admin but not a SysAdmin, Chapters 2–8 are your primary reference. If you are a SysAdmin, all chapters are relevant. Many SysAdmins also act as Team Admin for one or more teams.

Each feature in this manual is explained with what it does, why it works that way, and how different organizations use it. Cross-industry examples throughout show how the same configuration tools serve academic, pharmaceutical, forensic, clinical, and quality laboratory environments.

Chapter 1

LabLynx One Administration Overview

LabLynx One uses a three-tier model separating User, Team Admin, and SysAdmin responsibilities. This hierarchy ensures that each level of administration has exactly the access it needs — and no more.

1.1 The Three-Tier Administration Model

RoleScope and CapabilitiesTypical Persons
UserCreates, edits, and manages their own experiments and resources within team-defined settings. Cannot change any team or system configuration.Researchers, analysts, students, technicians
Team AdminManages everything within a single team: users, categories, templates, statuses, tags, user groups, permissions defaults, exports, and batch actions. Can view all team experiments regardless of individual permission settings.Lab managers, PIs, quality managers, department leads
SysAdminManages the entire LabLynx One instance: all teams, all users, authentication settings, security policies, email configuration, and instance-wide defaults. Inherits all Admin capabilities across all teams.IT administrators, LabLynx support contacts, platform owners
Why it works this way

The three-tier model prevents privilege escalation while enabling local autonomy. A Team Admin can configure everything their team needs without having access to other teams' data or system-level settings. A SysAdmin can manage the infrastructure without needing to know the scientific content of individual experiments. Each tier's capabilities are scoped to its legitimate administrative domain.

1.2 Accessing Admin Panels

Both Admin panels are accessed from the top-right user menu after logging in:

  • Team Admin Panel: Click your user avatar (top right) and select Admin Panel. This panel is visible only to users with Admin or SysAdmin role.
  • SysAdmin Panel (Sysconfig): Click your user avatar and select Sysconfig. This option appears only for SysAdmin accounts.
Note

If you do not see Admin Panel or Sysconfig in your user menu, you do not have the required role. Contact your SysAdmin to request elevated access.

1.3 sciCloud.net® (Cloud) vs. LabServer (On-Premises)

Deployment ModelSysAdmin Responsibilities
sciCloud.net® (LabLynx-managed)LabLynx manages infrastructure, server maintenance, SSL certificates, software updates, database backups, and disaster recovery. Your SysAdmin manages users, teams, and application-level configuration.
LabServer (on-premises)Your IT team manages the physical/virtual server, operating system, Docker container orchestration, backups, and SSL. Your SysAdmin manages application configuration in addition to infrastructure. LabLynx provides technical support and guidance.

1.4 The Instance Coordinator Role (Optional)

Beyond the three-tier User / Team Admin / SysAdmin model, larger deployments can designate an Instance Coordinator — a person (not a separate account permission level) responsible for the human side of running LabLynx One across many teams: onboarding, training, documentation standards, and exit strategies when a user leaves a team.

Coordinator ResponsibilityWhat It Covers
Training & onboardingOrganizing training sessions and maintaining an internal help channel (Slack/Teams/forum) for user questions.
Documentation standardsDefining what makes a complete experiment record (clear title, date, description, attachments) and promoting consistent naming/tagging conventions.
User exit strategiesDeciding whether a departing user's account should be archived (data preserved, login disabled) or moved to another team, working with the Team Admin or SysAdmin to execute it.
Compliance reinforcementReminding users of 2FA, access-control, and data-handling policies that apply to their organization — the Coordinator doesn't set these policies but helps ensure they're followed day-to-day.
Note

A Coordinator does not require special LabLynx One permissions to do this job — the role is organizational, not a distinct account privilege. In practice it's often filled by a Team Admin or the SysAdmin, especially in smaller labs, but larger multi-team instances benefit from having someone dedicated to it.

Chapter 2

Team Settings — The Admin Panel Overview

The Admin Panel is the Team Admin's primary workspace. It is organized into tabs, each covering a distinct area of team management. This chapter provides a complete reference to every tab and setting.

2.1 Admin Panel Navigation

Access: User Avatar → Admin Panel. The panel opens showing the following tabs:

TabWhat It Does
TeamGeneral team settings: name, visibility, default behaviors, onboarding messages, and what users can and cannot do.
User GroupsCreate and manage groups of users for granular permission targeting (e.g., QA Team, Analysts, Supervisors).
UsersView, validate, edit, and manage all users associated with your team.
ExportBulk export experiments, resources, or booking data from your team.
Tag ManagerEdit, merge, and normalize existing tags across your team.
Batch ActionsExecute administrative actions on many entries simultaneously (e.g., change visibility, reassign ownership).

2.2 The Team Tab — General Settings

Team Name and Visibility

The Team Name is the display name visible to all users when they switch teams or create entries. Choose a name that is clear and unambiguous — particularly important in multi-team instances where users might belong to five or more teams.

Team Visibility controls whether the team is visible to non-members. In most cases this should be set to Private. Setting it to Public makes the team's name discoverable to all authenticated users on the instance — appropriate for shared core facilities or institutional resource pools.

Default Experiment Permissions

  • Only Me (Private) — New experiments are private to their creator by default. Recommended for labs with sensitive or unpublished research.
  • My Team — New experiments are visible to all team members by default. Recommended for collaborative labs where sharing is the norm.
  • Organization — Visible to all teams in the instance. Rarely appropriate as a default; used for shared resource teams.
Why it works this way

The default permission setting shapes your team's documentation culture without removing individual control. A default of Private encourages researchers to be intentional about sharing. A default of Team encourages open collaboration and reduces the chance that important work is invisible to colleagues who need it. Neither is universally correct — choose based on your team's research culture and IP sensitivity.

Cross-Industry Application
  • Academic research lab: Default to Team. Students can see each other's work and learn from it.
  • CRO or multi-client lab: Default to Only Me. Each researcher's data is private until explicitly shared within the client project team.
  • Pharma QA: Default to Team so supervisors can see all in-progress QA records. Combined with read-only permission defaults, this gives visibility without edit risk.

User Registration and Validation Settings

  • Allow users to self-register: When enabled, anyone who navigates to your LabLynx One URL can create an account and request to join your team.
  • Require Admin validation of new accounts: When enabled, new accounts appear in a pending state and cannot log in until an Admin validates them.
Why it works this way

Manual validation is a security control. In an open academic environment where any university email can register, validation lets the Admin confirm that the new account belongs to a genuine team member before granting access to any team data. In closed environments with SSO-only authentication, validation may not be necessary because identity is already verified by the identity provider.

Example: Validation workflow in a regulated lab

A new QA analyst joins the pharmaceutical company. HR provisions her in Active Directory. She navigates to the LabLynx One instance and SSO redirects her to log in with her company credentials. Her account is created in LabLynx One but appears in the Admin Panel's pending validation list. The QA Manager (Admin) sees the pending account, verifies it matches the expected new hire, validates it, and assigns her to the correct user groups. The analyst can now log in with full access to the team.

Onboarding Message

The onboarding message is displayed to users the first time they log in, or persistently as a banner at the top of all team pages. Use it to communicate: team naming conventions, required tags, which templates to use for the most common experiment types, and who to contact with questions.

Tip

Write the onboarding message as if you are talking to someone who has just joined the team and opened LabLynx One for the first time. Include: (1) your team naming convention, (2) the 3–5 most important tags to apply to every experiment, (3) which templates to use for common experiment types, and (4) who to contact with questions.

User Capabilities — What Team Members Can Do

Capability SettingEffect and When to Use It
Allow users to create new tagsWhen enabled, any user can create new tags. When disabled, only Admins can. Use to maintain a controlled tag vocabulary in compliance-sensitive environments.
Allow users to lock their own experimentsWhen disabled, only Admins can lock. Use in environments where locking is a QA or supervisory action rather than a researcher action.
Allow users to set experiment permissionsWhen disabled, the team default permission applies to all entries — users cannot restrict or expand access themselves.
Allow users to delete experimentsWhen disabled, only Admins can delete. Suitable for regulated environments where data retention requires Admin-authorized deletion.
Show team experiments in sidebarWhen enabled, the left panel shows a summary of recent team experiments for at-a-glance visibility.
Force MFA for all team membersWhen enabled, MFA is required for every login by any member of this team. Users who have not enrolled are forced to enroll before accessing the team.
Cross-Industry Application
  • Academic lab: All capabilities enabled. Researchers have full control over their own data, can create tags freely, and can lock their own completed experiments.
  • Pharma GMP: Tag creation disabled (controlled vocabulary only). Lock disabled for users (locking is a QA action). Deletion disabled for users.
  • Forensic lab: User permissions disabled (all experiments inherit team defaults). Deletion disabled. MFA forced. Supports chain-of-custody and data integrity requirements of accreditation.
Chapter 3

Managing Users and User Groups

The Users tab is the primary interface for managing team membership. User Groups enable granular, scalable permission management across experiments and resources.

3.1 The Users Tab — User Account Management

Validating New Accounts

When a new user registers or logs in via SSO for the first time, their account appears in the pending list at the top of the Users tab (if validation is required). To validate:

  1. Open Admin Panel → Users tab.
  2. Review the pending account: name, email, and registration date.
  3. Confirm the account belongs to a legitimate team member.
  4. Click Validate to activate the account, or click Delete if invalid or the account belongs to another team.
Note

If a valid user appears to belong to the wrong team, contact your SysAdmin to reassign their team association rather than deleting and re-creating the account. Deleting an account removes all entries created by that user unless ownership was previously transferred.

Setting Account Validity Dates

Each user account can have a validity expiry date. After this date the account is automatically deactivated. This is particularly useful for temporary collaborators, visiting researchers, student accounts (expire at end of academic year), auditor accounts (expire after the audit period), and contractor accounts.

Tip

Set validity dates for all non-permanent accounts at the time of creation. This eliminates the administrative effort of manually deactivating accounts when users leave, and ensures access is automatically revoked even if HR offboarding does not trigger an IT action.

Adding Users Directly

If the SysAdmin has granted your team this capability, you can add users directly from the Users tab without requiring them to self-register. Enter the user's email address and click Add User. An invitation email is sent to the address.

Promoting Users to Admin

Any user in your team can be promoted to Admin role from the Users tab. Click the user's row, locate the role selector, and change from User to Admin. The promotion takes effect immediately on the user's next page load.

Important

Admin promotion grants significant access: the promoted user can view all team experiments regardless of permission settings, modify all team configuration, validate or delete accounts, and run batch actions on all data. Promote only users who need these capabilities for a genuine administrative reason. In regulated environments, Admin access should be documented and reviewed periodically.

3.2 User Groups — Granular Permission Targeting

User Groups are named collections of users that can be referenced in experiment and resource permissions. Instead of sharing an entry with five named individuals, share it with the 'QA Review Team' group — all five get access, and when group membership changes, the sharing updates automatically.

Creating a User Group

  1. Open Admin Panel → User Groups tab.
  2. Click Create Group. Enter a descriptive name (e.g., 'QA Reviewers', 'Analytical Chemistry', 'External Auditors 2026').
  3. Type each member's name in the search box. Select from the autocomplete list.
  4. Click Save. The group is immediately available in permission selectors across all experiments and resources.
Note

User Groups can include users from other teams on the same instance. This enables cross-team collaboration: a group called 'Joint Project Alpha' might include researchers from three different teams, all of whom can access experiments shared with the group.

Group ExampleHow It Is Used
QA ReviewersAll QA staff in one group. Test records are shared with this group with read access, allowing any QA member to review without being individually listed on every record.
Instrument Operators — LC-MSA group of analysts trained on a specific instrument. The LC-MS resource is shared with write access only to this group, preventing untrained staff from modifying calibration records.
External AuditorsA group containing auditor accounts. All completed, signed records are shared with this group during the audit window. After the audit, the group is emptied, revoking access from all auditors simultaneously.
Project Alpha Core TeamA group for a specific multi-person project. The project summary and all project resources are shared with this group with read-write access. As people join or leave the project, only group membership needs updating.
Why it works this way

User Groups solve the permission maintenance problem at scale. Without groups, a researcher who shares an experiment with 10 named colleagues must update 10 entries every time a colleague leaves or a new one joins the project. With groups, they update one group membership and all entries sharing with that group instantly reflect the change.

Chapter 4

Configuring Experiment Categories and Status Values

Categories and Status Values define the vocabulary your team uses to classify and track experiments. Together they transform the experiment index from a flat list into a workflow management tool.

4.1 Experiment Categories

Categories are administrator-defined labels that classify experiment types. Each experiment belongs to exactly one category. Categories are displayed as colored pills in the experiment index, enable one-click filtering, and support independent custom ID numbering sequences.

Creating and Configuring Categories

  1. In Admin Panel → Team tab → Experiments section, click Add Category.
  2. Enter the category name (e.g., 'Western Blot', 'HPLC Run', 'Case Intake').
  3. Select a color for the category pill. Choose distinct colors — color-coding is a key usability benefit.
  4. Enable Custom ID auto-increment if you want sequential numbering within this category (e.g., WB-001, WB-002…).
  5. Save. The category is immediately available to all team users.
Tip

Limit your initial category set to the 8–12 most common experiment types. Creating 50 categories at setup produces a cluttered filter panel. Add categories as genuine needs emerge rather than trying to anticipate every possible experiment type upfront.

Example: Custom ID design for a forensic lab
  • Category 'Case Intake' → Custom ID enabled → generates 001, 002, 003… (independent sequence)
  • Category 'Toxicology Analysis' → Custom ID enabled → generates TOX-001, TOX-002… (independent sequence)
  • The Custom ID serves as the lab accession number, matching the case management system. Filtering by category + Custom ID range produces all toxicology analyses within a date range.

Category Planning by Lab Type

Lab TypeSuggested CategoriesDesign Rationale
Academic ResearchProtein Biochemistry, Cell Biology, Genomics, Animal Studies, Imaging, Data Analysis, Literature Review, Protocol DesignTechnique-based taxonomy. Students intuitively understand the categories.
Pharma QARelease Testing, Stability, Method Validation, In-Process Control, CAPA, NCR, Equipment Qualification, Internal AuditCompliance-driven taxonomy matching GMP record types.
Forensic LabDrug Chemistry, DNA/Serology, Toxicology, Trace Evidence, Digital Evidence, Firearms, QC/ProficiencyDiscipline-based taxonomy matching lab section structure.
ISO 17025 TestingRoutine Analysis, Method Verification, QC Check, Proficiency Testing, Equipment Calibration, Corrective ActionQuality-system driven taxonomy for traceable test records.
Neurotechnology R&DFabrication, Bench Characterization, In Vitro, In Vivo/Animal, Clinical, Data Analysis, Regulatory DocumentationProject-phase taxonomy across a product development pipeline.

4.2 Experiment Status Values

Status values track where an experiment is in its lifecycle. LabLynx One ships with default statuses, but you should customize these to match your team's actual workflow states.

Creating and Editing Status Values

  1. In Admin Panel → Team tab → Experiments section, find the Status management area.
  2. Click Add Status. Enter a name and select a color.
  3. Optionally mark one status as the Default (automatically assigned to all new experiments).
  4. Reorder statuses by dragging to reflect the natural workflow order.

Delete unused default statuses. A status list with 12 options overwhelms users and produces inconsistent use. Aim for 5–8 clearly distinct states that represent meaningful points in your workflow.

Example: Status design for a pharma QA lab
  1. In Progress (green) — default for new experiments
  2. Pending QA Review (amber) — analyst complete, waiting for QA
  3. QA Reviewed (blue) — QA has reviewed, awaiting supervisor approval
  4. Approved (navy) — supervisor has signed and approved
  5. On Hold (orange) — work paused pending external input
  6. Rejected — Needs Rework (red) — QA identified issue, returned to analyst
  7. Closed (grey) — record complete, locked, signed, archived
Why it works this way

Custom status values transform the experiment list from a flat archive into a workflow management tool. When a supervisor filters the index by 'Pending QA Review', they see exactly which records need their attention today. The status vocabulary is the bridge between LabLynx One's database and the lab's operational process.

Tip

Add a 'Calibration Overdue' or 'Out of Service' status for equipment resources. When an instrument goes out of service, updating its status prevents researchers from creating new experiments linked to that instrument without noticing the problem.

Chapter 5

Templates — Admin Configuration and Governance

Templates are the most powerful tool available to Team Admins for driving documentation consistency. This chapter covers template governance — not just how to create templates, but how to maintain them, version them, and ensure they remain trustworthy records of your team's methods.

5.1 The Admin's Role in Template Management

Templates can be created by any user (personal templates, visible only to themselves) or by Admins (team templates, visible to all team members). The Admin's template responsibilities include:

  • Creating and maintaining team templates representing the team's documented methods and workflows.
  • Reviewing and promoting user-created personal templates to team status when they represent best practices worth standardizing.
  • Versioning templates when methods change, and archiving superseded versions.
  • Locking critical protocol steps to enforce SOP compliance.
  • Designing the metadata field structure for each template type.

5.2 Creating Team Templates

  1. Navigate to Experiments → Templates. Click Create.
  2. Enter a descriptive template name including the method name, version, and relevant standard (e.g., 'Western Blot — Standard Protocol v2.1').
  3. Build the template: add body text structure, required metadata fields, and steps.
  4. Check 'Make available to team' before saving. This option is available to Admins; regular users can only create personal templates.
  5. Save and test the template by creating one experiment from it.

Template Design Principles for Admins

  • Every template should have a designated owner — a specific person responsible for maintaining it.
  • Include a 'Template Version' metadata field in every team template. When you update, increment the version. Experiments created from older versions retain their original version number, making it traceable which version of the method was in use at any given time.
  • Document in the template body text which SOP, regulatory standard, or publication the template implements: "This template implements SOP-CHEM-047 Rev. 3".
  • Review all team templates annually. Archive unused templates. Revise templates that are producing inconsistent data.

5.3 Locking Steps — Admin Controls

Step locking is configured in the template editor. Locked steps become read-only in all experiments created from the template: users can check them off but cannot edit the wording, reorder them, or delete them.

DecisionGuidance
Lock these stepsSteps derived from validated SOPs or regulatory procedures. Steps with safety, compliance, or quality significance. Steps where deviation must be explicitly documented rather than silently skipped.
Do not lock these stepsSteps that serve as reminders but have legitimate adaptations. Steps that vary by sample type, scale, or condition. Steps added for user convenience that do not have compliance force.
Lock selectivelyIn procedures with mixed compliance and flexibility, lock the compliance-critical steps and leave guidance steps unlocked. Users see which steps are non-negotiable and which are flexible.
Example: Selective locking in a method validation template
  • 🔒 LOCKED — Step 1: 'Verify instrument calibration certificate is current (due date > today)' — regulatory requirement
  • 🔒 LOCKED — Step 2: 'Prepare primary standard per SOP-REF-012, record lot and expiry date' — GMP requirement
  • 🔓 UNLOCKED — Step 3: 'Prepare test samples according to method specifications' — varies by sample matrix
  • 🔒 LOCKED — Step 4: 'Document all deviations from the method in the experiment body before analysis' — QA requirement
  • 🔓 UNLOCKED — Step 5: 'Run sequence as defined in instrument method file' — instrument-specific, may vary
  • 🔒 LOCKED — Step 6: 'Calculate results per SOP-CALC-008 and complete result table below' — calculation procedure
  • 🔒 LOCKED — Step 7: 'Request QA review before reporting results' — required workflow step

5.4 Template Versioning Strategy

ScenarioRecommended Action
Method just created, no experiments yetEdit the existing template directly. No version conflict.
Method in use, new version is a minor correctionCreate a new template with updated content. Increment the version number in the template name. Archive the old template. Existing experiments retain the old structure.
Method in use, major revision or revalidationCreate a new template with a new name reflecting the major version (e.g., 'HPLC Method v1 — Legacy' archived; 'HPLC Method v2 — Validated 2026' created). Communicate the change to all users.
SOP retired, method discontinuedArchive the template. Do not delete — existing experiments created from it must remain accessible and their template reference must be preserved.
Why it works this way

Never edit a template in place when experiments already exist from it. If you change a locked step in the active template, all future experiments will reflect the change — but existing experiments already have the previous step wording locked in. The template version history becomes inconsistent, and an auditor will rightly ask why experiments from the same template have different steps. The correct model is: old template → archive; new template → create.

5.5 Resource Templates and Categories

Resource templates work identically to experiment templates but apply to resource records. Define resource templates for each resource category (Equipment, Reagents, Cell Lines, Reference Standards, etc.) to pre-populate the metadata fields relevant to that resource type.

Example: Resource template for an instrument/equipment record

Template name: 'Instrument — Analytical Equipment'

Metadata fields: Instrument Name (Text), Manufacturer (Text), Model (Text), Serial Number (Text), Asset ID (Text), Location (Text), Responsible Analyst (Select), Calibration Frequency (Select: Monthly/Quarterly/Semi-Annual/Annual), Last Calibration Date (Date), Next Calibration Due (Date), Calibration Certificate Number (Text), Current Status (Select: In Service/Out of Service/Under Calibration/Retired)

Steps (locked): Annual qualification checklist: 1) Verify current calibration certificate; 2) Check for any open corrective actions; 3) Confirm user qualification records are current; 4) Update status field.

Chapter 6

Tag Management

Tags are user-created labels that enable flexible, multi-dimensional organization. As users create tags freely, inconsistencies accumulate over time. The Tag Manager gives you tools to clean up and normalize the tag vocabulary before it becomes unwieldy.

6.1 The Tag Manager

Access: Admin Panel → Tag Manager tab. The Tag Manager shows all tags in the team, the number of entries each tag is applied to, and the date each tag was last used. From here you can:

  • Edit a tag name: Click the tag, change the name, and save. The tag is renamed on all entries — this is a rename, not a new tag.
  • Delete a tag: Remove a tag and detach it from all entries. Use for abandoned tags, mistaken tags, or obsolete tags after a project closes.
  • Merge tags: Rename Tag A to Tag B's exact name, then delete the now-duplicate. Achieves a merge in two steps.

6.2 Common Tag Normalization Tasks

IssueResolution
Spelling variants'Western Blot', 'westernblot', 'WB', 'Western-Blot' — Rename all variants to the canonical form ('Western-Blot') using the edit function.
Capitalization inconsistencies'ProjectAlpha', 'projectalpha', 'Project Alpha' — normalize all to one form: 'ProjectAlpha' (no spaces, consistent capitalization).
Abandoned project tagsA project closed 18 months ago. Rename the tag to 'ARCHIVED-ProjectOld' to distinguish it from active project tags.
Personally-specific tagsA user created a tag with their own initials. If applied to shared entries, normalize to a team-standard form.
Accidental duplicatesA user pressed Enter twice and created an empty tag. Delete it.
Tip

Schedule a Tag Manager review quarterly rather than waiting until the tag list becomes unwieldy. A 30-minute quarterly review prevents the exponential growth of tag variants. Send the normalized tag vocabulary to the team after each review so users know the canonical tags to use.

6.3 Controlling Tag Creation

For compliance or quality requirements demanding a strictly controlled tag vocabulary, disable 'Allow users to create new tags' in the Team tab. With this setting disabled:

  • Only Admins can create new tags.
  • Users can apply existing tags to their experiments but cannot create new ones.
  • The tag vocabulary is fully controlled by the Admin team.
Why it works this way

Controlled tag vocabulary is a tradeoff between flexibility and consistency. Unrestricted creation enables researchers to quickly capture labels without friction, but over time produces hundreds of near-duplicate tags. Most labs start with unrestricted creation and switch to restricted after accumulating enough data to know their stable vocabulary.

Chapter 7

Bulk Export and Batch Actions

The Export tab and Batch Actions tab are the Admin's primary tools for large-scale data management — assembling audit packages, managing user departures, and maintaining the experiment index at scale.

7.1 Bulk Export

The Export tab allows you to export large sets of experiments or resources in a single operation, filtered by category, status, date range, user/owner, or tag before generating.

FormatUse Case
Experiments (PDF)Individual PDF files for each experiment. For human-readable archiving and regulatory review packages.
Experiments (ELN archive / ZIP)Each ZIP contains the experiment JSON, PDF, and all attached files. For long-term archiving and cross-system transfer.
Resources (CSV)Resource metadata as a spreadsheet. For inventory audits, equipment register reporting, and importing into external systems.
Scheduler (CSV)All equipment bookings. For equipment utilization reporting and audit evidence of instrument access history.
Example: Audit-ready export package for a QA lab

An ISO 17025 audit is scheduled for next week. The quality manager opens Admin Panel → Export, filters by Category = 'Routine Analysis', Status = 'Approved', Date range = last 12 months. She selects PDF format and clicks Export. LabLynx One generates a PDF for every approved routine analysis record from the past year — all methods, results, QC data, signatures, and timestamps assembled in minutes rather than days.

7.2 Batch Actions

ActionWhen to Use It
Change visibility / permissionsUpdate the permission level of all experiments from a specific user, category, or date range simultaneously. Use after a project closes to make all project experiments read-only to non-owners.
Change ownershipTransfer all experiments from one user to another. Primary use case: user departure — move all experiments from the departing user to the PI or a successor before deactivating the account.
Change statusUpdate the status of many experiments simultaneously. Use at year-end to close all completed project experiments.
Lock entriesLock a set of completed experiments simultaneously. Use at project closure or audit preparation.
Add tagsApply a tag to a set of existing entries. Use to retroactively tag a group of experiments with a project tag.
ArchiveMove a set of experiments to archived state simultaneously. Use at project completion to clear the active index without deleting historical records.
Important

Batch Actions are irreversible in their immediate effect. There is no 'undo' for batch permission changes, batch ownership transfers, or batch locking. Before running any batch action, filter the preview list carefully to confirm it contains exactly the entries you intend to affect. Run a small test batch on 2–3 entries before executing on hundreds.

Example: Batch actions at user departure
  1. Export all experiments by the departing user (Export tab, filter by owner). Save the export package.
  2. Transfer ownership of all their experiments to the PI or team lead (Batch Actions → Change Ownership, filter by owner = departing user).
  3. Deactivate the user account (Users tab → set validity date to today or delete the account).
  4. Verify the transferred experiments are accessible to the new owner and that no entries were missed.

Result: No data loss. All experimental records are preserved under active ownership. The former user's access is revoked.

7.3 Usage Reporting

From the Admin Panel overview, Admins can generate a CSV usage report showing per user: experiments created, resources created, number of logins, and last login date. Use this to identify inactive accounts (90+ days without login), identify researchers not using LabLynx One, report adoption metrics, and provide evidence of system use for auditors.

Chapter 8

Team Admin Best Practices and Workflows

Practical checklists and routines for setting up a new team, maintaining it over time, and documenting your own administrative activity in regulated environments.

8.1 New Team Setup Checklist

Complete the following in order to ensure users have a well-configured environment from day one:

  • 1
    Team tab — GeneralSet team name, default permissions, registration/validation settings, and MFA requirement.
  • 2
    Experiment CategoriesCreate 8–12 categories matching your experiment types. Assign distinct colors. Enable Custom IDs where needed.
  • 3
    Experiment StatusesDefine 5–8 status values matching your workflow. Delete default statuses that do not apply. Set the correct default status.
  • 4
    Resource CategoriesDefine resource categories. Create at least Equipment, Reagents, and Personnel categories.
  • 5
    TemplatesCreate team templates for your 5–10 most common experiment and resource types. Test each template by creating one entry.
  • 6
    User GroupsCreate the user groups you anticipate needing (QA, Supervisors, Project Teams, External Auditors).
  • 7
    Onboarding MessageWrite and publish the onboarding message with naming convention, key tags, and template guidance.
  • 8
    Pilot UsersInvite 2–3 pilot users and run them through a test workflow before full team rollout.
  • 9
    Full RolloutInvite all team members. Validate accounts. Run onboarding session.
  • 10
    First Quarterly ReviewAfter 90 days: review tag vocabulary, update templates based on user feedback, adjust status values.

8.2 Ongoing Admin Routines

FrequencyRoutine Tasks
WeeklyReview pending account validations. Check for experiments in long-standing 'Pending Review' status. Monitor the notification feed for system alerts.
MonthlyReview usage report: identify inactive users, follow up with non-adopters. Check for resource records with expired calibration dates or stock levels below minimum.
QuarterlyTag Manager review: normalize tag vocabulary, merge duplicates, archive project tags. Template audit: verify all team templates are current with active SOPs. Update template version numbers as needed.
AnnuallyFull user audit: review all accounts, deactivate accounts for anyone who has left the team, verify Admin accounts are still appropriate. Full template governance review. Update team onboarding message for the new year.

8.3 Compliance Documentation for Admins

In regulated environments, consider maintaining an 'LabLynx One Admin Log' experiment (using a dedicated template) to record:

  • Template changes: when a template was updated, why, and what changed.
  • Category changes: when a category was added, renamed, or archived.
  • User access events: significant access grants, revocations, or role changes.
  • Batch actions: what was done, to which entries, by whom, and the business reason.
  • System configuration changes: any changes made at the SysAdmin level that affect the team.
Why it works this way

The LabLynx One audit trail records what users do with experiments. It does not automatically document why an Admin made a configuration change. A separate Admin Log provides the rationale that auditors need: not just 'the template was changed on this date' but 'the template was changed to implement SOP Rev. 4 following validation completion'. This narrative context transforms audit trail data into a complete compliance record.

Chapter 9

SysAdmin Overview — The Sysconfig Panel

The Sysconfig Panel is the SysAdmin's control center for the entire LabLynx One instance. Every setting here affects all teams on the instance.

Access: User Avatar → Sysconfig. Visible only to users with the SysAdmin role.

9.1 Sysconfig Panel Tabs

TabWhat It Controls
UsersView and manage all user accounts across all teams: create, edit, promote, demote, deactivate. The master user registry for the instance.
TeamsCreate, rename, configure, and delete teams. Set team-level defaults that supplement Admin configurations.
EmailConfigure the SMTP server for outgoing email: notifications, password resets, onboarding invitations. Required for most operational functions.
SecurityPassword policy, login attempt limits, MFA enforcement, and session timeout settings.
AuthenticationSAML/SSO configuration for external identity provider integration (Microsoft Entra ID, Okta, Google Workspace, LDAP).
TimestampingConfigure the RFC 3161 Timestamp Authority (TSA) endpoint for all teams.
APIInstance-wide API settings: enable/disable API access, configure API rate limits.
NotificationsSystem-wide notification behavior: which events generate notifications, email notification frequency, and digest settings.
LogsAccess instance-level audit logs: all user login events, authentication events, SysAdmin configuration changes, and system errors.

9.2 First-Time SysAdmin Setup Checklist

Complete these SysAdmin tasks in order before inviting users:

  • 1
    Email (SMTP)Configure email before anything else. Without email, users cannot reset passwords, receive notifications, or respond to Request Action events. Test by sending a test email from the panel.
  • 2
    Security PolicySet password complexity, minimum length, and session timeout. Enable MFA if required by your organization or regulatory standards.
  • 3
    AuthenticationIf using SSO, configure SAML settings and test with one pilot user account before enabling for all users.
  • 4
    Create TeamsCreate all teams the organization needs. Assign at least one Admin to each team.
  • 5
    TimestampingConfigure the default RFC 3161 TSA. Use DFN.de for academic deployments. Use a commercial TSA (DigiCert, Sectigo, GlobalSign) for regulated industry deployments.
  • 6
    SysAdmin Backup AccountPromote at least one additional user to SysAdmin. Never have only one SysAdmin account — if that account is locked, the instance becomes unmanageable.
  • 7
    Pilot TestLog in as a regular user and verify: registration, email, SSO (if configured), experiment creation, and email notifications all work correctly.
Chapter 10

User Account Management at the System Level

The SysAdmin's Users tab in Sysconfig shows all user accounts across all teams on the instance — the master registry. SysAdmin-level user management capabilities extend beyond what Team Admins can do.

10.1 Creating User Accounts

Users can be created in three ways:

  • Self-registration: The user navigates to the LabLynx One URL, creates an account, and is either immediately active or pending validation depending on team settings.
  • Admin invitation: A Team Admin adds the user directly from the Admin Panel (if the SysAdmin has enabled this capability).
  • SysAdmin creation: The SysAdmin creates the account from Sysconfig → Users. The recommended approach for batch onboarding of large groups.

Batch User Creation

For large deployments (department rollout, academic cohort), the SysAdmin can import users from a CSV file. The CSV must include: First Name, Last Name, Email, Team. The SysAdmin uploads the CSV, previews the import, and confirms. All accounts are created and invitation emails are sent automatically.

Tip

When importing users via CSV, prepare the team and Admin accounts first. New users are assigned to teams by name — the team must exist before the import. Test with a 5-row CSV before importing 200 users.

10.2 Team Assignment and Multi-Team Membership

Each user is associated with one primary team at account creation. The SysAdmin can assign a user to additional teams from the Users tab. Multi-team membership is common in:

  • Core facility staff: A core facility manager belongs to their own team AND to each research group team that uses the facility, enabling visibility into how groups are using the equipment.
  • QA/QC personnel in pharma: QA analysts belong to the QA team AND to each production or analytical team they review, giving them cross-team experiment visibility.
  • PIs with multiple groups: A PI who manages two separate research groups belongs to both teams, seeing all experiments across both without needing two accounts.
Why it works this way

Multi-team membership eliminates the need for shared accounts or account duplication. A QA manager who needs to review experiments in five production teams does not need five accounts — one account with five team memberships provides the required access. Every action by that manager is attributed to a single, named identity, which is the correct model for both security and audit trail integrity.

10.3 Role Management at the System Level

ActionHow to Perform It
Promoting to Team AdminFrom Sysconfig → Users, edit the user and change their role in the target team to Admin. The promoted user can now manage team settings, view all team experiments, and perform admin actions in that team.
Promoting to SysAdminFrom Sysconfig → Users, edit the user and check the SysAdmin box. Maintain a short list of SysAdmins — typically 2–3 individuals in the IT/operations role.
Demoting an AdminRemove Admin status from the Admin Panel (Team Admin) or Sysconfig (SysAdmin). The user immediately loses elevated access on their next page load.
Deactivating an accountSet the account's validity date to today or a past date, or set the account status to Inactive. The user cannot log in but their data is preserved.
Important

Never delete a user account without first exporting and transferring ownership of their data. A deleted account removes user attribution from some system records and may break links. The correct workflow for user departure is: (1) export their data, (2) transfer ownership to a successor, (3) deactivate the account. Delete only accounts created in error that have no associated experimental data.

10.4 Access Control Audit Practices

Access control is a frequent focus of regulatory audits. Maintain these practices to ensure access control evidence is available:

  • Review all Admin and SysAdmin accounts quarterly. Verify each elevated account belongs to a current, active employee with a genuine administrative need.
  • Log significant access changes in the Admin Log (see Section 8.3). The system records what changed; the Admin Log records why.
  • When an auditor asks 'how do you control who has access?', the answer should be: every account is individually authenticated (SSO or local with MFA), role-based access is configured at team and system level, accounts are deactivated upon departure, and SysAdmin access is limited to 2–3 named IT staff.
  • Generate and retain the monthly user CSV report as evidence that access was reviewed.
Chapter 11

Authentication Configuration — SSO and LDAP

Authentication configuration determines how every user proves their identity to LabLynx One. LabLynx One supports two authentication models — local and federated — which can be used simultaneously.

11.1 Local Authentication

Local authentication is LabLynx One's default: each user has an email address and password stored within LabLynx One's own user database. Configure the password policy from Sysconfig → Security.

SettingRecommendation and Rationale
Minimum password lengthEnforce a minimum of 12 characters. NIST SP 800-63B recommends length as the primary password strength factor.
Password complexityRequire a mix of uppercase, lowercase, numbers, and special characters — or simply enforce a long minimum length (14+ characters) without complexity rules. Both approaches are acceptable under modern security frameworks.
Password expiryOptional. NIST 800-63B advises against mandatory periodic changes (which tend to produce weaker passwords). If your organization's policy requires periodic changes, set the interval here.
Failed login lockoutSet a limit of 5–10 consecutive failed attempts before temporary account lockout. Lockout duration: 15–30 minutes (not permanent, to avoid denial-of-service vulnerability).
Session timeoutShorter is more secure (15–30 minutes) but inconvenient for researchers who leave a tab open. A common balance is 60 minutes to 4 hours depending on data sensitivity.

11.2 SAML / SSO Integration

Single Sign-On (SSO) via SAML 2.0 connects LabLynx One to your organization's identity provider (IdP): Microsoft Entra ID, Okta, Google Workspace, OneLogin, Shibboleth, or any SAML 2.0–compliant IdP.

What SSO Provides

  • Single credential — users log in with their organizational account, not a separate LabLynx One password.
  • Automatic deprovisioning — when an account is disabled in the IdP (e.g., an employee is terminated), their LabLynx One SSO access is immediately revoked.
  • Centralized MFA — if MFA is enforced at the IdP level, all LabLynx One logins automatically benefit from MFA without additional LabLynx One configuration.
  • Audit alignment — login events in LabLynx One correspond to authentication events in the IdP audit log, enabling correlated security investigation.

Configuring SAML SSO — Step by Step

  1. In your Identity Provider, create a new SAML application for LabLynx One. The ACS URL and Entity ID are provided by LabLynx One in Sysconfig → Authentication.
  2. Configure the IdP to send these SAML attributes: email (required), first name (recommended), last name (recommended), and optionally group memberships for automated team assignment.
  3. Download or copy the IdP metadata XML from your IdP admin panel.
  4. In LabLynx One Sysconfig → Authentication, paste the IdP metadata XML (or provide the metadata URL for auto-import). Save.
  5. Test with a pilot user: navigate to the LabLynx One login page, click the SSO button, and authenticate. Verify the user account is created with the correct name and team assignment.
  6. After a successful pilot, communicate the SSO login URL to all team members. Optionally disable local password login to enforce SSO-only access.
Example: SAML configuration for Microsoft Entra ID
  1. Entra ID: Enterprise Applications → New Application → Create your own → Non-gallery. Name: 'LabLynx One', set up SAML SSO.
  2. Entity ID = your LabLynx One instance URL. ACS URL = your LabLynx One instance URL + '/saml/acs'.
  3. Attributes: map user.mail → 'email', user.givenname → 'firstname', user.surname → 'lastname'.
  4. Download Federation Metadata XML from Entra ID.
  5. In LabLynx One Sysconfig → Authentication, paste the XML. Save.
  6. Test: open a private browser window, navigate to LabLynx One, click SSO. Authenticate with an Entra ID account. Verify the LabLynx One user profile is created correctly.
Note

LabLynx One can coexist with both SSO and local authentication simultaneously. Some users may have local accounts (legacy accounts or service accounts for API use) while others authenticate via SSO. This hybrid configuration is common during SSO migration.

11.3 LDAP Integration

LDAP integration connects LabLynx One directly to a directory service (Active Directory, OpenLDAP, FreeIPA) for user authentication. Unlike SAML, LDAP authentication occurs directly without redirecting to an IdP. LDAP is appropriate for on-premises LabServer deployments without a cloud IdP.

Configuration FieldDescription and Example
LDAP Server URLThe address including protocol and port. Example: ldap://dc01.yourlab.internal:389 or ldaps://dc01.yourlab.internal:636 (secure LDAP — always use in production).
Bind DNThe distinguished name of a service account used by LabLynx One to search the directory. Example: cn=elabftw-service,ou=ServiceAccounts,dc=yourlab,dc=internal
Bind PasswordThe password of the bind service account. Stored encrypted in LabLynx One's configuration.
Base DNThe starting point in the directory tree for user searches. Example: ou=Researchers,dc=yourlab,dc=internal
User filterLDAP filter to identify valid user accounts. Example: (objectClass=person) or (memberOf=cn=LabLynxOneUsers,...)
Attribute mappingMap LDAP attributes to LabLynx One fields: mail → email, givenName → firstname, sn → lastname.
Tip

Use LDAPS (LDAP over TLS, port 636) rather than plain LDAP (port 389) in all production environments. Plain LDAP transmits credentials in the clear, which is unacceptable in any regulated or security-conscious environment.

11.4 Multi-Factor Authentication — System-Level Enforcement

MFA can be enabled at two levels:

  • Team level: The Admin can require MFA for all members of a specific team (Admin Panel → Team tab → Force MFA checkbox).
  • Instance level: The SysAdmin can require MFA for all users across all teams from Sysconfig → Security. This is the highest-level enforcement and cannot be overridden by Team Admins.
Important

Enabling instance-level MFA enforcement will immediately lock out any user who does not have an MFA device enrolled. Before enabling, communicate the requirement to all users and provide a 2-week window for enrollment. Verify that all Admin and SysAdmin accounts have MFA enrolled BEFORE enabling instance enforcement, or you risk locking yourself out.

Cross-Industry Application
  • Academic: MFA optional at the team level. PIs may require it for team members handling sensitive IP or compliance-critical experiments.
  • Pharma regulated (21 CFR Part 11): MFA required at the instance level. All accounts must enroll before any electronic signatures are in use. This is a regulatory expectation.
  • Forensic / ISO 17025: MFA required at the instance level. Accreditation standards expect strong authentication controls for all analytical record systems.
  • Startup pre-clinical: Enable MFA early, before regulatory engagement. Retroactively enabling MFA when clinical trials begin is a significant disruption to users who have become habituated to logging in without it.
Chapter 12

Team Configuration at the System Level

While Team Admins configure their teams from within, the SysAdmin can create teams, modify any team's settings, and see all teams in the instance. The team architecture decision — how to structure teams — is often the most consequential LabLynx One decision an organization makes.

12.1 Creating Teams

Navigate to Sysconfig → Teams → Create Team. Provide:

  • Team name: the display name users will see in the team switcher.
  • Team description: optional but useful in multi-team instances.
  • Initial Admin: specify the user who will be the first Admin for this team.

12.2 Team Architecture Decisions

A poor team structure is difficult to reverse — moving experiments between teams requires Admin intervention and data migration planning. Take time to design the team structure before inviting users.

ModelStructureBest For
One team per organizationAll users in one team. Simple to manage. All experiments visible to all users (depending on permission defaults).Small to medium labs (<20 users) with homogeneous work and no IP separation requirements.
One team per research groupEach PI's group is a team. Groups work independently with their own templates and categories.Academic institutions with multiple independent research groups. Each PI is Admin of their own team.
One team per departmentEach functional department (QA, R&D, Analytical, Manufacturing) is a team. Department leads are Admins.Pharma, biotech, or industrial labs where departments have different workflows and compliance requirements.
One team per projectProjects are the team unit. Team membership changes as people join/leave projects.CROs with multiple simultaneous clients, or project-matrix organizations. Client data separation is critical.
Hybrid: functional + projectBase teams by department, overlay project teams for cross-departmental collaboration.Large organizations with both stable functional units and dynamic cross-functional projects.
Example: Team architecture for a 50-person pharma company
  • Team 1: Analytical Development (8 analysts, 2 scientists, 1 QA) — HPLC, dissolution, content uniformity, method validation categories
  • Team 2: Formulation R&D (12 formulation scientists) — synthesis, screening, excipient evaluation categories
  • Team 3: Quality Assurance (4 QA staff) — CAPA, NCR, audit, change control categories; read access to all other teams
  • Team 4: Clinical Supply (6 manufacturing staff) — batch record, in-process control, environmental monitoring categories
  • Team 5: Regulatory Affairs (3 RA staff) — submission documents, risk assessment, regulatory response categories

12.3 Deleting and Archiving Teams

Teams that are no longer active should not be deleted. Instead:

  • Deactivate the team: SysAdmin sets the team to inactive, preventing new experiments from being created while preserving all data.
  • Archive the team's data: Run a bulk export of all experiments and resources before deactivating. Store the archive per your organization's data retention policy.
  • Transfer ongoing work: Any experiments still relevant to active work should be transferred to a successor team before deactivation.
Important

Deleting a team is an irreversible action that permanently removes all experiments, resources, and user data associated with the team. This operation should never be performed on a team that has contained live research data. The only appropriate use of team deletion is removing teams created in error that have no data.

Chapter 13

Email, Notifications, and Timestamping Configuration

Email is the nervous system of LabLynx One notifications. Without correctly configured SMTP, password resets, invitations, comment notifications, and Request Action workflows all degrade or fail silently.

13.1 Email (SMTP) Configuration

SettingDetails
SMTP ServerThe hostname or IP of your SMTP relay. Examples: smtp.office365.com (Microsoft 365), smtp.gmail.com (Google Workspace), smtp2go.com (third-party relay).
SMTP Port25 (unsecured, legacy), 587 (STARTTLS, preferred), 465 (SSL/TLS, also acceptable).
From addressUse a real monitored address (e.g., lablynxone@yourlab.com) not a no-reply address, so users can reply with questions.
AuthenticationFor Microsoft 365, use an app password or OAuth2. For Google Workspace, use an app password with 2FA enabled on the account.
TLS/SSLAlways enable TLS. Sending email without encryption is inappropriate for any environment that handles research data.
Tip

Use a dedicated transactional email service (SMTP2Go, SendGrid, AWS SES, Postmark) rather than a personal or shared mailbox SMTP for production deployments. Transactional services provide delivery reporting, bounce handling, and are not rate-limited like individual user accounts.

After configuring SMTP, use the 'Send test email' button in Sysconfig → Email to verify delivery before inviting users. Common failures: incorrect port, missing TLS, authentication error, or the sending IP being blocked by a spam filter.

13.2 Notification Settings

From Sysconfig → Notifications (or individual user Settings), configure:

  • Email notification frequency: immediate (each event sends an email), daily digest (one email per day summarizing all events), or disabled (in-app only).
  • System announcements: Compose and send a system-wide message from Sysconfig. Appears as a notification to all users — useful for announcing maintenance windows, major feature releases, or urgent policy changes.
Tip

Recommend that all users configure email digest notifications rather than immediate per-event email. Researchers who receive 50 LabLynx One notification emails per day quickly start ignoring them, missing important Request Action events. A daily digest collects all notifications into one readable summary email.

13.3 Timestamping Service Configuration

RFC 3161 timestamping requires a Timestamp Authority (TSA) endpoint. LabLynx One comes pre-configured with DFN.de (a free academic TSA). For regulated industry deployments, a commercial TSA with a service level agreement is recommended.

TSADetailsBest For
DFN.deFree, academic community TSA. No registration required.Academic labs, research universities, non-profit institutions
DigiCertCommercial TSA with SLA. Free timestamping tier available. Widely accepted in regulatory and legal contexts.Pharma, biotech, CRO, any regulated industry
SectigoCommercial TSA. Free service available. Well-established for legal and regulatory timestamping.Legal, regulatory, compliance-heavy environments
GlobalSignCommercial TSA with AATL (Adobe Approved Trust List) status.Documents, compliance, EU regulatory environments
UniversigneIDAS-qualified TSA. Required for electronic evidence admissible in EU courts.European regulatory submissions, EU pharmaceutical submissions
Custom TSAAny RFC 3161–compliant endpoint. Provide the URL and optional authentication credentials.Organizations with contractual TSA arrangements or private TSA infrastructure

To configure: Sysconfig → Timestamping. Enter the TSA URL (and credentials if required). Save. All future timestamp requests from any team will use this TSA.

Note

Changing the TSA does not affect existing timestamps. Timestamps already issued by the previous TSA remain valid and verifiable using their original TSA's certificate. You can safely switch TSAs when a service changes or you upgrade from a free to a commercial TSA.

Chapter 14

Security, Audit Logs, and Compliance

The SysAdmin's role in maintaining the security posture of the LabLynx One instance and in providing audit evidence to internal and external reviewers.

14.1 Security Settings

SettingRecommendation
Max login attempts before lockoutSet to 5–10. Too few (≤3) causes frequent legitimate lockouts from typos. Too many (15+) provides inadequate brute-force protection.
Lockout duration15–30 minutes is standard. Do not use permanent lockout (it requires Admin intervention and becomes a denial-of-service vector).
Session timeout (idle)1–4 hours is a common balance between security and convenience for laboratory work.
Enforce HTTPS onlyAlways enabled in production deployments. HTTP transmits credentials and data in the clear.
Content Security Policy (CSP)The default CSP is appropriate for most deployments. Modify only if specific third-party integrations require exceptions.

14.2 System Audit Logs

The system audit log in Sysconfig → Audit Logs records instance-level events:

  • Authentication events: every successful login, failed login attempt, SSO authentication, and MFA verification.
  • Account management events: account creation, deletion, deactivation, role changes, team assignment changes.
  • SysAdmin configuration changes: any change made in the Sysconfig Panel, timestamped and attributed to the SysAdmin who made it.
  • Password reset events: when a password reset is initiated and completed.
  • Session events: session creation and expiry.
Example: System log use in a security incident

A QA manager reports that an experiment record was modified at 11:45 PM on a date when the responsible analyst claims they were not working. SysAdmin opens Sysconfig → Audit Logs and filters by user and date. The log shows: no successful login by that user on the date in question. The experiment's Changelog shows: the modification was made by a different user who had been granted editor access to that experiment. The SysAdmin's log search establishes that no unauthorized access occurred. The question is resolved with evidence rather than assumption.

14.3 Backup and Recovery

sciCloud.net® Deployments (LabLynx-Managed)

  • Hourly database backups retained for 7 days.
  • Daily complete backups retained for 30 days.
  • Monthly backups retained for 12 months.
  • Backups stored in a geographically distant second data center on AWS infrastructure.
  • RPO: 1 hour. RTO: 4 hours.
  • SysAdmins do not need to configure or manage backups. Contact LabLynx support for point-in-time restores.

LabServer (On-Premises) Deployments

  • Database: Automated daily backup using mysqldump or equivalent. Retain 30+ days.
  • Uploaded files: Backup the LabLynx One uploads directory. Sync daily to an off-server location.
  • Off-site copy: At least one backup copy must be stored at a geographically separate location. Backups stored only on the same physical server provide no disaster recovery capability.
  • Recovery testing: Test the full restore procedure at least annually. A backup that has never been tested is an untested assumption, not a guarantee.

14.4 Preparing for External Audits

Audit Evidence ItemHow to Prepare It
User access listExport the current user list from Sysconfig → Users. Show auditors who has access, at what role, with what team membership. Verify all accounts are current employees with legitimate access.
Access control policyDocument the organization's process for granting and revoking LabLynx One access. This should match the actual settings: self-registration policy, validation requirements, MFA enforcement.
Template inventoryExport the list of all team templates with version numbers and last modification dates. Demonstrate that templates correspond to SOPs and are version-controlled.
Audit trail evidenceFor any experiment the auditor selects, demonstrate the Changelog (field-level history), the Revisions (body text history), the signature records, and any timestamps. Have a test experiment ready if the auditor wants a live demonstration.
System configuration documentationPrepare a one-page summary of the LabLynx One instance configuration: deployment model, authentication method, MFA status, backup frequency, TSA used, and hosting certifications (SOC 2 for sciCloud.net®).
Incident and change logIf your organization maintains an Admin Log (Section 8.3), produce the relevant entries. Show that configuration changes are documented and authorized.
Tip

Brief your LabLynx One Team Admins before the audit on what auditors typically ask to see: how is access controlled, how are records protected from modification, how are signatures authenticated, and how is backup and recovery managed. Admins who can answer these questions fluently demonstrate system maturity to auditors.

Appendix A

Quick Reference — Admin vs. SysAdmin Capabilities

A complete capability matrix showing what Team Admins and SysAdmins can and cannot do.

CapabilityTeam AdminSysAdmin
Create / manage teamsNoYes
Create user accountsLimited (if enabled by SysAdmin)Yes
Configure SSO / LDAPNoYes
Set password policyNoYes
Enforce instance-wide MFANoYes
Configure SMTP emailNoYes
Configure TSA for timestampingNoYes
View system audit logNoYes
Manage all teams' usersNoYes
Create / manage experiment categoriesYes (own team)Yes (all teams)
Create / manage status valuesYes (own team)Yes (all teams)
Create / manage team templatesYes (own team)Yes (all teams)
Manage tags (Tag Manager)Yes (own team)Yes (all teams)
Create / manage user groupsYes (own team)Yes (all teams)
Validate new user accountsYes (own team)Yes (all teams)
Promote users to AdminYes (within own team)Yes (any team, any role)
View all team experimentsYes (own team)Yes (all teams via SysAdmin)
Run batch actionsYes (own team)Yes (all teams)
Export team dataYes (own team)Yes (all teams)
Deactivate user accountsNoYes
Send system announcementsNoYes
Appendix B

Compliance Configuration Checklist by Regulatory Framework

FrameworkKey LabLynx One Configuration RequirementsApplicable Lab Types
21 CFR Part 11MFA enforced (instance or team), cryptographic signatures for critical records, RFC 3161 timestamps on all approved records, session timeout ≤30 min for regulated systems, all user accounts individual (no shared logins), audit trail export available on demand.Pharma, biotech, medical device, CRO
ISO/IEC 17025MFA recommended, controlled tag vocabulary (disable user tag creation), all steps locked in accredited method templates, equipment records with calibration status, user access list maintained and reviewed quarterly, template versioning matches SOP version control.Testing and calibration laboratories
ALCOA+ (general GxP)All actions attributed to named individual accounts, SSO enforces identity, timestamps system-generated (not user-entered), raw data files attached at moment of creation, required metadata fields defined in templates, records locked after approval.Any regulated lab: pharma, food, environmental, medical device
Forensic accreditation (ASCLD, ISO 17020)MFA enforced, controlled permissions (users cannot set permissions), no shared accounts, experiment deletion restricted to Admins, complete audit trail for all case records, individual user access reviewed annually.Forensic laboratories, crime labs, medical examiner offices
HIPAAPHI not stored in experiment titles or body text (use coded identifiers), role-based access restricting PHI to authorized users only, audit log maintained and reviewable, session timeout 15–30 minutes, encryption in transit and at rest (sciCloud.net® provides this).Clinical laboratories, clinical research, healthcare-adjacent labs
GDPR / data protectionData residency consideration (sciCloud.net® is US-based AWS; EU-specific hosting available on request), user data export capability for subject access requests, account deletion process documented, data retention policy applied.Organizations serving EU data subjects, European labs
Appendix C

Troubleshooting Common Admin Issues

IssueLikely Cause and ResolutionWho Resolves
User cannot log in(1) Account not validated — check Users tab for pending status. (2) Account expired — check validity date. (3) Password locked — reset from Admin Panel. (4) SSO issue — verify IdP configuration with SysAdmin.Team Admin + SysAdmin
User not receiving email notifications(1) SMTP not configured or broken — SysAdmin tests SMTP. (2) User has email notifications disabled in their Settings. (3) Email going to spam — check SPF/DKIM configuration on sending domain.SysAdmin
Template not visible to usersTemplate not set to 'team' visibility. As Admin, open the template, enable 'Make available to team', and save.Team Admin
Tags growing out of controlNo admin-controlled vocabulary. Consider disabling user tag creation in Team settings, then normalize the existing tags using the Tag Manager.Team Admin
Experiment category missing from new entriesCategory may have been deleted. Check the Team tab → Experiment Categories section. Re-create if deleted.Team Admin
User cannot see team experimentsScope is set to 'Self'. Ask user to change scope to 'Team' or 'Everything'. If problem persists, verify team membership in Users tab.Team Admin
SSO login fails for one userThe user's IdP account attribute (usually email) does not match any LabLynx One user record. Verify the email attribute in the IdP matches the user's LabLynx One account email exactly.SysAdmin
Timestamp fails(1) TSA endpoint unreachable — check network connectivity. (2) TSA URL changed — update in Sysconfig. (3) TSA rate limit exceeded — use a different TSA or contact LabLynx.SysAdmin
Batch action affected wrong entriesFilter was too broad. Use the Batch Actions preview step carefully before executing. Contact LabLynx support if unintended changes must be rolled back.Team Admin + SysAdmin
Documentation Set

LabLynx One Developer Manual

For developers integrating with the LabLynx One REST API.

Preface

About This Manual

This manual is the complete technical reference for developers building integrations with, custom applications on top of, or BI/analytics pipelines from LabLynx One.

This manual covers:

  • The LabLynx One REST API v2 — every major endpoint group with explicit call signatures, request/response examples, and authentication patterns.
  • The metadata (custom fields) JSON schema — how structured data is represented in the API and how to read and write it programmatically.
  • Integration patterns — instrument data push, LIMS synchronization, ERP connectivity, and event-triggered automation.
  • BI and analytics — extracting data for Power BI, Tableau, pandas/R analysis, and custom dashboards.
  • Complete, runnable code examples in Python, JavaScript (Node.js/fetch), and cURL for every major operation.
Note

LabLynx One is built on eLabFTW, an open-source ELN platform. The REST API documented here is the eLabFTW v2 API as deployed and hosted by LabLynx. The API reference (OpenAPI/Swagger specification) is available at: https://doc.elabftw.net/api/v2/

All code examples in this manual are production-ready with appropriate error handling. Variables shown in angle brackets (e.g., <YOUR_API_KEY>, <INSTANCE_URL>) must be replaced with your actual values.

Chapter 1

Authentication and API Basics

Every API call must be authenticated with a personal API key. This chapter covers key generation, request structure, HTTP verb mapping, response codes, and pagination — the foundations for every integration.

1.1 Generating an API Key

To generate an API key: Log in to LabLynx One → User avatar (top right) → Settings → API Keys tab → Click Create Key. Enter a descriptive name, select Read-Only or Read-Write access, and copy the generated key. It is shown only once — store it in a secrets manager or environment variable, never in source code.

Security

API keys take the form 3-cb2314b00d2845a3f7c2891a52d8b47e... — the leading number is the user ID. Always treat an API key as a password: rotate it periodically, use a separate key per integration, and revoke immediately if compromised.

1.2 Request Structure

The base URL for all API requests is: https://<INSTANCE_URL>/api/v2/<endpoint>

All requests require two headers:

# Required on every request Authorization: <YOUR_API_KEY> Content-Type: application/json # required for POST and PATCH requests
HTTP VerbOperationNotes
GETRead dataReturns a JSON object or array. Safe and idempotent.
POSTCreate a new resourceReturns HTTP 201 with a Location header pointing to the new resource URL.
PATCHUpdate an existing resourcePartial updates — only fields included in the request body are modified. Returns HTTP 200.
DELETEDelete a resourceSoft-delete in most cases. Returns HTTP 204 No Content on success.

1.3 Authentication in Code — Three Languages

# Set your key as an environment variable — never hardcode in scripts export ELAB_KEY='3-cb2314b00d2845a...' export ELAB_URL='https://yourlab.elabeln.com' # GET request — fetch experiment with ID 42 curl -H "Authorization: $ELAB_KEY" \ -H "Accept: application/json" \ "$ELAB_URL/api/v2/experiments/42"
import os import requests # Load credentials from environment variables API_KEY = os.environ['ELAB_API_KEY'] BASE_URL = os.environ['ELAB_BASE_URL'] # 'https://yourlab.elabeln.com' # Build a reusable session with auth headers session = requests.Session() session.headers.update({ 'Authorization': API_KEY, 'Content-Type': 'application/json', 'Accept': 'application/json' }) def api_url(path): return f"{BASE_URL}/api/v2/{path}" # Helper: GET with error handling def api_get(path, params=None): resp = session.get(api_url(path), params=params) resp.raise_for_status() return resp.json() # Helper: POST — returns the ID of the created resource def api_post(path, data=None): resp = session.post(api_url(path), json=data or {}) resp.raise_for_status() location = resp.headers.get('Location', '') return int(location.split('/')[-1]) if location else None # Helper: PATCH — partial update def api_patch(path, data): resp = session.patch(api_url(path), json=data) resp.raise_for_status() return resp
const BASE_URL = process.env.ELAB_BASE_URL; const API_KEY = process.env.ELAB_API_KEY; const headers = { 'Authorization': API_KEY, 'Content-Type': 'application/json', 'Accept': 'application/json' }; async function apiGet(path, params = {}) { const url = new URL(`${BASE_URL}/api/v2/${path}`); Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v)); const res = await fetch(url, { headers }); if (!res.ok) throw new Error(`GET ${path} failed: ${res.status}`); return res.json(); } async function apiPost(path, body = {}) { const res = await fetch(`${BASE_URL}/api/v2/${path}`, { method: 'POST', headers, body: JSON.stringify(body) }); if (!res.ok) throw new Error(`POST ${path} failed: ${res.status}`); const location = res.headers.get('Location') || ''; return parseInt(location.split('/').pop(), 10) || null; }

1.4 Response Format and Status Codes

Status CodeMeaning
200 OKSuccessful GET or PATCH. Response body contains the resource.
201 CreatedSuccessful POST. Location header contains the new resource URL.
204 No ContentSuccessful DELETE. Empty response body.
400 Bad RequestMalformed JSON or invalid field values. Response body contains error message.
401 UnauthorizedAPI key missing, invalid, or expired.
403 ForbiddenKey is valid but lacks permission (e.g., read-only key attempting a write).
404 Not FoundResource ID does not exist or is not accessible.
429 Too Many RequestsRate limit exceeded. Back off and retry after the Retry-After header period.
500 Internal Server ErrorServer-side error. Retry after a brief delay; contact LabLynx support if persistent.
Python — error handling
from requests.exceptions import HTTPError def safe_api_get(session, url): try: resp = session.get(url) resp.raise_for_status() return resp.json() except HTTPError as e: status = e.response.status_code if status == 401: raise ValueError('Invalid API key') from e elif status == 403: raise PermissionError('Insufficient permissions') from e elif status == 404: return None # caller handles None elif status == 429: import time retry_after = int(e.response.headers.get('Retry-After', 60)) time.sleep(retry_after) return safe_api_get(session, url) # retry once else: raise

1.5 Pagination

Endpoints returning lists support pagination through query parameters. Without pagination the API returns 15–25 results by default.

ParameterDescription
limitMaximum results per page. Default varies; maximum is typically 500.
offsetRecords to skip before collecting. Use with limit for cursor-based pagination.
qFull-text search query. Searches title, body text, tags, and custom fields.
catFilter by category ID (integer).
statusFilter by status ID (integer).
ownerFilter by user ID — returns only entries owned by this user.
extendedSet to 1 to include full body text and metadata in list responses (omitted by default for performance).
Python — paginate all experiments
def get_all_experiments(session, base_url, limit=100, **filters): """Generator that yields all experiments, handling pagination.""" offset = 0 while True: params = {'limit': limit, 'offset': offset, **filters} resp = session.get(f'{base_url}/api/v2/experiments', params=params) resp.raise_for_status() data = resp.json() if not data: break yield from data if len(data) < limit: break # last page offset += limit # Collect all HPLC experiments (category 5) experiments = list(get_all_experiments(session, BASE_URL, cat=5)) print(f'Found {len(experiments)} experiments')
Chapter 2

Experiments — Complete API Reference

Experiments are the core record type in LabLynx One. An experiment includes: id, title, date, body (HTML), status, category, tags, metadata (custom fields), links, and attachments. All experiment operations are under the /experiments path.

2.1 Endpoint Overview

MethodEndpointDescription
GET/experimentsList experiments (paginated, filterable)
POST/experimentsCreate a new empty experiment
GET/experiments/{id}Get full details of one experiment
PATCH/experiments/{id}Update experiment fields (partial update)
DELETE/experiments/{id}Soft-delete an experiment
GET/experiments/{id}/revisionsBody text version history
GET/experiments/{id}/changelogField-level change history
POST/experiments/{id}/tagsAdd a tag
GET/experiments/{id}/uploadsList file attachments
POST/experiments/{id}/uploadsUpload a file attachment (multipart)
POST/experiments/{id}/links/itemsLink to a resource
POST/experiments/{id}/stepsAdd a protocol step
PATCH/experiments/{id}/steps/{stepId}Update / complete a step
POST/experiments/{id}/commentsAdd a comment
POST/experiments/{id}/timestampsApply RFC 3161 timestamp

2.2 Creating an Experiment

Creating an experiment is a two-step process: POST to create an empty entry (which returns its ID), then PATCH to populate the content. This is intentional — the ID must be known before content is attached.

# Step 1: Create empty experiment, capture ID from Location header LOCATION=$(curl -sI \ -H "Authorization: $ELAB_KEY" \ -H "Content-Type: application/json" \ -X POST "$ELAB_URL/api/v2/experiments" \ | grep -i location | awk '{print $2}' | tr -d '\r') EXP_ID=$(echo $LOCATION | grep -oP '\d+$') # Step 2: Populate with content curl -X PATCH \ -H "Authorization: $ELAB_KEY" \ -H "Content-Type: application/json" \ -d '{"title":"HPLC Method Validation — Ibuprofen — 2026-06-01", "date":"2026-06-01","status":2,"category":5, "tags":["Validation","HPLC","Ibuprofen"]}' \ "$ELAB_URL/api/v2/experiments/$EXP_ID"
import json def create_hplc_run(session, base_url, run_data): """Create an HPLC experiment with structured metadata.""" # Step 1: Create empty experiment resp = session.post(f'{base_url}/api/v2/experiments') resp.raise_for_status() exp_id = int(resp.headers['Location'].split('/')[-1]) # Build metadata JSON for custom fields metadata = {'extra_fields': { 'Analyst': {'type':'text', 'value': run_data.get('analyst',''), 'position':1}, 'Instrument': {'type':'text', 'value': run_data.get('instrument_id',''), 'position':2}, 'Lot Number': {'type':'text', 'value': run_data.get('lot_number',''), 'position':3}, 'Result (%)': {'type':'number', 'value': str(run_data.get('result','')), 'position':4}, 'Pass / Fail': {'type':'select', 'value': 'Pass' if run_data.get('passed') else 'Fail', 'options':['Pass','Fail','Inconclusive'], 'position':5} }} # Step 2: Populate all fields in one PATCH session.patch(f'{base_url}/api/v2/experiments/{exp_id}', json={ 'title': run_data['title'], 'date': run_data['date'], 'metadata': json.dumps(metadata), 'tags': ['HPLC', 'Potency', run_data.get('batch_id','')] }).raise_for_status() return exp_id

2.3 Reading and Filtering Experiments

Python
# Fetch HPLC experiments with 'Pending Review' status params = {'limit':50, 'cat':5, 'status':3, 'extended':1} resp = session.get(f'{BASE_URL}/api/v2/experiments', params=params) experiments = resp.json() # Full-text search resp = session.get(f'{BASE_URL}/api/v2/experiments', params={'q': 'Ibuprofen batch 4421', 'limit':10}) # Fetch experiments by a specific user (owner ID) resp = session.get(f'{BASE_URL}/api/v2/experiments', params={'owner':7, 'limit':100})

2.4 Updating Experiments (PATCH)

PATCH requests apply partial updates — only fields included in the request body are changed. All other fields remain as-is, making PATCH safe for targeted updates.

Python
# Update status only (experiment 42 → status ID 4 = Approved) session.patch(f'{BASE_URL}/api/v2/experiments/42', json={'status':4}).raise_for_status() # Update custom metadata — read-modify-write pattern (see Chapter 5) current = session.get(f'{BASE_URL}/api/v2/experiments/42').json() meta = json.loads(current.get('metadata') or '{}') meta.setdefault('extra_fields', {})['Result (%)'] = { 'type':'number', 'value':'98.7', 'position':6 } session.patch(f'{BASE_URL}/api/v2/experiments/42', json={'metadata': json.dumps(meta)}).raise_for_status()

2.5 Managing Tags

# Add a tag curl -X POST \ -H "Authorization: $ELAB_KEY" \ -H "Content-Type: application/json" \ -d '{"tag": "Approved-2026-Q2"}' \ "$ELAB_URL/api/v2/experiments/42/tags" # Remove a tag curl -X DELETE \ -H "Authorization: $ELAB_KEY" \ "$ELAB_URL/api/v2/experiments/42/tags/OldTag"
# Add a tag session.post(f'{BASE_URL}/api/v2/experiments/42/tags', json={'tag': 'Approved-2026-Q2'}).raise_for_status()

2.6 Uploading Files (Attachments)

Note

File uploads use multipart/form-data, not JSON. This is the only endpoint type that does not use JSON content type. When using the Python requests library, do NOT manually set Content-Type when passing files= — requests sets the correct multipart boundary automatically.

curl -X POST \ -H "Authorization: $ELAB_KEY" \ -F "file=@/path/to/data.raw" \ -F "comment=Instrument raw data file" \ "$ELAB_URL/api/v2/experiments/42/uploads"
def upload_file(session, base_url, exp_id, filepath, comment=''): """Upload a file attachment to an experiment.""" import os with open(filepath, 'rb') as f: files = {'file': (os.path.basename(filepath), f, 'application/octet-stream')} data = {'comment': comment} if comment else {} resp = session.post( f'{base_url}/api/v2/experiments/{exp_id}/uploads', files=files, data=data # No Content-Type header — requests sets multipart boundary automatically ) resp.raise_for_status() return int(resp.headers['Location'].split('/')[-1]) # Upload the raw instrument file upload_file(session, BASE_URL, 42, '/data/hplc/2026-06-01_batch4421.raw', comment='Agilent OpenLAB raw data file')

2.7 Working with Steps

Python
# Add protocol steps to an experiment steps = [ 'Verify instrument calibration certificate is current', 'Prepare primary standard per SOP-REF-012', 'Run HPLC sequence file: SOP-ANAL-042-Seq-v3', 'Review chromatogram and integration results', 'Request QA review before reporting results', ] step_ids = [] for i, body in enumerate(steps): resp = session.post(f'{BASE_URL}/api/v2/experiments/42/steps', json={'body': body, 'ordering': i + 1}) resp.raise_for_status() step_ids.append(int(resp.headers['Location'].split('/')[-1])) # Mark a step as completed session.patch(f'{BASE_URL}/api/v2/experiments/42/steps/{step_ids[0]}', json={'finished': True}).raise_for_status()

2.8 Linking Experiments to Resources

Python
# Link experiment 42 to resource (item) ID 15 (the HPLC instrument record) session.post(f'{BASE_URL}/api/v2/experiments/42/links/items', json={'link': 15}).raise_for_status() # Link to another experiment (parent study) session.post(f'{BASE_URL}/api/v2/experiments/42/links/experiments', json={'link': 100}).raise_for_status() # Get all links links = session.get(f'{BASE_URL}/api/v2/experiments/42/links').json() # links = { experiments_links: [...], items_links: [...] } print('Resources:', [l['title'] for l in links.get('items_links', [])])

2.9 Adding Comments

Python
# Add a QA review comment session.post(f'{BASE_URL}/api/v2/experiments/42/comments', json={ 'comment': 'QA review complete. Result 99.3% is within specification. Approved for release.' }).raise_for_status() # Fetch all comments comments = session.get(f'{BASE_URL}/api/v2/experiments/42/comments').json() for c in comments: print(f"[{c['created_at']}] {c['name']}: {c['comment'][:80]}")

2.10 Applying a Trusted Timestamp

curl -X POST \ -H "Authorization: $ELAB_KEY" \ -H "Content-Type: application/json" \ "$ELAB_URL/api/v2/experiments/42/timestamps"
# Generates SHA-256 hash, sends to configured TSA, stores token as attachment session.post(f'{BASE_URL}/api/v2/experiments/42/timestamps').raise_for_status() print('RFC 3161 timestamp applied successfully')
Chapter 3

Resources (Items) — Complete API Reference

Resources (called items in the API) represent the laboratory inventory: reagents, instruments, cell lines, equipment, and any other entity tracked in the resource catalog. The resource API mirrors the experiment API structure exactly.

3.1 Resource Endpoint Overview

MethodEndpointDescription
GET/itemsList resources (paginated, filterable)
POST/itemsCreate a new empty resource
GET/items/{id}Get full resource detail
PATCH/items/{id}Update resource fields
DELETE/items/{id}Delete a resource
GET/items_typesList all resource category types
POST/items/{id}/uploadsUpload a file to a resource
POST/items/{id}/tagsAdd a tag
POST/items/{id}/links/itemsLink to another resource
POST/items/{id}/links/experimentsLink to an experiment
POST/items/{id}/stepsAdd a step (checklist item)

3.2 Creating and Populating a Resource

Python — create a reagent resource
def create_reagent(session, base_url, reagent_data): # Create empty item resp = session.post(f'{base_url}/api/v2/items') resp.raise_for_status() item_id = int(resp.headers['Location'].split('/')[-1]) metadata = {'extra_fields': { 'Vendor': {'type':'text', 'value': reagent_data.get('vendor',''), 'position':1}, 'Catalog Number': {'type':'text', 'value': reagent_data.get('catalog_number',''), 'position':2}, 'Lot Number': {'type':'text', 'value': reagent_data.get('lot_number',''), 'position':3}, 'Expiry Date': {'type':'date', 'value': reagent_data.get('expiry_date',''), 'position':4}, 'Storage Temp': {'type':'select', 'value': reagent_data.get('storage_temp','-20°C'), 'options':['Room Temp','4°C','-20°C','-80°C'], 'position':5}, 'Current Quantity':{'type':'number', 'value': str(reagent_data.get('quantity','')), 'units':['µL','mL','L','mg','g'], 'unit': reagent_data.get('unit','mL'), 'position':6}, }} session.patch(f'{base_url}/api/v2/items/{item_id}', json={ 'title': reagent_data['title'], 'category': reagent_data.get('category_id'), 'metadata': json.dumps(metadata), }).raise_for_status() return item_id # Example: create an antibody resource record ab_id = create_reagent(session, BASE_URL, { 'title': 'Anti-p53, Clone DO-7, Lot AB-2024-441 (Abcam ab26)', 'category_id': 2, # 2 = Antibodies 'vendor': 'Abcam', 'catalog_number': 'ab26', 'lot_number': 'AB-2024-441', 'expiry_date': '2026-12-31', 'storage_temp': '-20°C', 'quantity': 0.5, 'unit': 'mL' })

3.3 Bulk Resource Import from CSV

Python — import inventory spreadsheet
import csv, time def bulk_import_reagents(session, base_url, csv_filepath, category_id, delay=0.2): """Import reagent records from a CSV file. Expected columns: Title, Vendor, CatalogNumber, LotNumber, ExpiryDate, StorageTemp, Quantity, Unit""" results, errors = [], [] with open(csv_filepath, 'r', encoding='utf-8') as f: for i, row in enumerate(csv.DictReader(f)): try: item_id = create_reagent(session, base_url, { 'title': row['Title'], 'category_id': category_id, 'vendor': row.get('Vendor', ''), 'catalog_number': row.get('CatalogNumber', ''), 'lot_number': row.get('LotNumber', ''), 'expiry_date': row.get('ExpiryDate', ''), 'quantity': float(row.get('Quantity', 0) or 0), 'unit': row.get('Unit', 'mL') }) results.append((i + 2, item_id)) time.sleep(delay) except Exception as e: errors.append((i + 2, str(e))) print(f'Imported {len(results)} items. {len(errors)} errors.') return results

3.4 Listing Resource Categories

curl -H "Authorization: $ELAB_KEY" \ "$ELAB_URL/api/v2/items_types"
# Fetch all resource categories (item types) categories = session.get(f'{BASE_URL}/api/v2/items_types').json() for cat in categories: print(f"ID {cat['id']}: {cat['title']}") # Build a name→ID lookup cat_map = {cat['title']: cat['id'] for cat in categories} # cat_map['Antibodies'] → 2
Chapter 4

Users, Teams, Tags, and Scheduler

Supporting endpoints for user management (SysAdmin), team configuration, tag operations, status lookups, and equipment booking.

4.1 User Endpoints

MethodEndpointDescription
GET/usersList all users (SysAdmin only)
GET/users/{id}Get a specific user's profile. Use me for the authenticated user.
POST/usersCreate a new user (SysAdmin only)
PATCH/users/{id}Update user fields (SysAdmin or self for limited fields)
Python
# Verify your API key is working me = session.get(f'{BASE_URL}/api/v2/users/me').json() print(f"Authenticated as: {me['firstname']} {me['lastname']} (ID {me['userid']})") # Create a new user (SysAdmin key required) resp = session.post(f'{BASE_URL}/api/v2/users', json={ 'firstname': 'Jane', 'lastname': 'Smith', 'email': 'jane.smith@yourlab.com', 'team': 1, # team ID 'usergroup': 4 # 4=User, 2=Admin, 1=SysAdmin }) new_user_id = int(resp.headers['Location'].split('/')[-1])

4.2 Team Endpoints

Python
# List all teams teams = session.get(f'{BASE_URL}/api/v2/teams').json() for t in teams: print(f"ID {t['id']}: {t['name']} ({t['usercount']} users)")

4.3 Tags and Status Endpoints

Python
# Fetch all tags in the team tags = session.get(f'{BASE_URL}/api/v2/tags').json() tag_map = {t['tag']: t['id'] for t in tags} # Fetch experiment status values statuses = session.get(f'{BASE_URL}/api/v2/status').json() status_map = {s['title']: s['id'] for s in statuses} # → {'Running': 1, 'Pending Review': 2, 'Approved': 3, ...}

4.4 Scheduler / Booking Endpoints

Python
# Fetch all bookings for a resource in a date range bookings = session.get(f'{BASE_URL}/api/v2/events', params={ 'start': '2026-06-01T00:00:00', 'end': '2026-06-30T23:59:59', 'item': 15 # resource ID (HPLC-03 instrument) }).json() # Create a new booking resp = session.post(f'{BASE_URL}/api/v2/events', json={ 'item': 15, 'start': '2026-06-15T09:00:00', 'end': '2026-06-15T11:00:00', 'title': 'Ibuprofen Method Validation Run' }) booking_id = int(resp.headers['Location'].split('/')[-1])
Chapter 5

The Metadata (Custom Fields) JSON Schema

Custom metadata fields are stored as a JSON string in the metadata field of every experiment and resource. Understanding this schema is critical for reading structured data from the API and writing it back correctly.

5.1 Schema Overview

The metadata value returned by the API is a JSON-encoded string. You must parse it before reading field values and re-serialize it before writing.

JSON — metadata structure
{ "extra_fields": { "Field Name": { "type": "text|number|date|datetime-local|select|radio|checkbox|url|email", "value": "current value as string", "position": 1, // type-specific additional properties... } }, "elabftw": { "display_main_text": true, "extra_fields_groups": [ {"id": 1, "name": "Group Name"} ] } }

5.2 All Field Types — Complete Schema Reference

typeKey PropertiesNotes
text"value": "string"Short free text. Default type if omitted.
number"value": "42.5", "units": ["mg","g"], "unit": "mg"Numeric input. Value is always stored as a string.
date"value": "2026-06-01"ISO 8601 date (YYYY-MM-DD). Must be in this format.
datetime-local"value": "2026-06-01T14:30"Date and time. Format: YYYY-MM-DDTHH:MM.
select"value": "Option A", "options": ["Option A","Option B"]Dropdown. Value must be one of options.
radio"value": "Yes", "options": ["Yes","No"]Radio group. Same structure as select but all options visible.
checkbox"value": "on" or ""Checked = "on", unchecked = empty string.
url"value": "https://example.com"URL input. Rendered as hyperlink in view mode.
email"value": "user@lab.com"Email address input.

5.3 Reading Metadata Fields in Python

Python
import json def get_metadata_fields(experiment): """Parse metadata → dict of field_name: value (string).""" raw = experiment.get('metadata') or '{}' meta = json.loads(raw) fields = meta.get('extra_fields', {}) return {name: field.get('value', '') for name, field in fields.items()} # Example: extract result and pass/fail from a QA experiment exp = session.get(f'{BASE_URL}/api/v2/experiments/42').json() fields = get_metadata_fields(exp) result_pct = float(fields.get('Result (%)', 0)) passed = fields.get('Pass / Fail', '') == 'Pass' analyst = fields.get('Analyst', 'Unknown') print(f'{analyst}: {result_pct:.1f}% → {"PASS" if passed else "FAIL"}')

5.4 Writing Metadata Fields — The Read-Modify-Write Pattern

Always use the read-modify-write pattern when updating metadata. Fetching before writing prevents accidentally erasing fields you did not intend to modify.

Python — safe field update
def update_metadata_field(session, base_url, entity_type, entity_id, field_name, new_value): """Update a single metadata field without touching other fields. entity_type: 'experiments' or 'items'""" # 1. Fetch current state current = session.get(f'{base_url}/api/v2/{entity_type}/{entity_id}').json() # 2. Parse existing metadata meta = json.loads(current.get('metadata') or '{}') meta.setdefault('extra_fields', {}) # 3. Update only the target field if field_name in meta['extra_fields']: meta['extra_fields'][field_name]['value'] = str(new_value) else: meta['extra_fields'][field_name] = {'type': 'text', 'value': str(new_value)} # 4. Write back session.patch(f'{base_url}/api/v2/{entity_type}/{entity_id}', json={'metadata': json.dumps(meta)}).raise_for_status() # Update a single field on experiment 42 update_metadata_field(session, BASE_URL, 'experiments', 42, 'Pass / Fail', 'Pass') # Update current quantity on a resource update_metadata_field(session, BASE_URL, 'items', 15, 'Current Quantity', '0.25')
Chapter 6

Integration Patterns

The most common integration architectures for LabLynx One — from instrument automation to LIMS synchronization to batch processing — each with a complete, runnable example.

🔬 Instrument Data Push

Post-run scripts or file watchers that auto-create experiments when instruments finish. Zero manual transcription.

🔄 LIMS Synchronization

Bidirectional sync between LabLynx One and a LIMS — samples flow in, results flow out.

📊 Results Write-Back

Extract approved experiment results and POST them back to a LIMS or ERP to close sample workflows.

⚡ Batch Processing

Rate-limited bulk updates across many experiments — status changes, tag application, archiving.

6.1 Instrument Data Push — HPLC File Watcher

Python — hplc_watcher.py
""" hplc_watcher.py — Watches a folder for new HPLC .raw files and auto-creates LabLynx One experiments. Run as a background service on the instrument PC or network share monitor. """ import os, json, time, requests, logging from pathlib import Path from datetime import datetime log = logging.getLogger('hplc_watcher') API_KEY = os.environ['ELAB_API_KEY'] BASE_URL = os.environ['ELAB_BASE_URL'] WATCH_DIR = os.environ.get('HPLC_OUTPUT_DIR', '/data/hplc/output') CATEGORY_ID = int(os.environ.get('HPLC_CATEGORY_ID', '5')) INSTRUMENT_ITEM_ID = int(os.environ.get('HPLC_RESOURCE_ID', '12')) session = requests.Session() session.headers.update({'Authorization': API_KEY, 'Content-Type': 'application/json'}) def create_experiment_for_run(filepath): # Parse metadata from filename: 2026-06-01_Batch4421_Analyst-JR.raw stem = Path(filepath).stem.split('_') date = stem[0] if stem else datetime.now().strftime('%Y-%m-%d') batch = stem[1] if len(stem) > 1 else '' analyst = stem[2].replace('Analyst-', '') if len(stem) > 2 else '' # 1. Create empty experiment exp_id = int(session.post(f'{BASE_URL}/api/v2/experiments').headers['Location'].split('/')[-1]) # 2. Populate metadata = {'extra_fields': { 'Analyst': {'type':'text', 'value': analyst, 'position':1}, 'Batch ID': {'type':'text', 'value': batch, 'position':2}, 'Run Date': {'type':'date', 'value': date, 'position':3}, 'Integration Status': {'type':'select', 'value':'Auto-imported', 'options':['Auto-imported','Verified','Needs Review'], 'position':4} }} session.patch(f'{BASE_URL}/api/v2/experiments/{exp_id}', json={ 'title': f'HPLC Run — {batch} — {date} (Auto)', 'date': date, 'category': CATEGORY_ID, 'metadata': json.dumps(metadata), 'tags': ['HPLC', 'Auto-Imported', batch] }).raise_for_status() # 3. Link to instrument resource session.post(f'{BASE_URL}/api/v2/experiments/{exp_id}/links/items', json={'link': INSTRUMENT_ITEM_ID}).raise_for_status() # 4. Upload raw data file with open(filepath, 'rb') as f: session.post(f'{BASE_URL}/api/v2/experiments/{exp_id}/uploads', files={'file': (Path(filepath).name, f, 'application/octet-stream')}, data={'comment': 'Instrument raw data (auto-attached)'}).raise_for_status() log.info(f'Created experiment {exp_id} for {Path(filepath).name}') return exp_id def watch_folder(): seen = set(Path(WATCH_DIR).glob('*.raw')) log.info(f'Watching {WATCH_DIR} for new .raw files...') while True: current = set(Path(WATCH_DIR).glob('*.raw')) new_files = current - seen for f in sorted(new_files): try: create_experiment_for_run(str(f)) except Exception as e: log.error(f'Failed {f.name}: {e}') seen = current time.sleep(30) # poll every 30 seconds

6.2 LIMS Synchronization

Python — lims_sync.py (key excerpt)
def sync_sample_to_eln(sample): """Given a LIMS sample dict, create an LabLynx One experiment pre-populated with the LIMS accession number and sample metadata.""" accession = sample['accession_number'] # e.g. 'ACC-2026-00412' # Check if already synced (search by accession in title) existing = elab.get(f'{ELAB_URL}/api/v2/experiments', params={'q': accession, 'limit': 1}).json() if existing: print(f'{accession} already synced as experiment {existing[0]["id"]}') return existing[0]['id'] exp_id = int(elab.post(f'{ELAB_URL}/api/v2/experiments').headers['Location'].split('/')[-1]) metadata = {'extra_fields': { 'LIMS Accession': {'type':'text', 'value': accession, 'position':1}, 'Sample Type': {'type':'text', 'value': sample.get('sample_type',''), 'position':2}, 'Received Date': {'type':'date', 'value': sample.get('received_date',''), 'position':3}, 'Priority': {'type':'select', 'value': sample.get('priority','Routine'), 'options':['STAT','Priority','Routine'], 'position':4}, }} elab.patch(f'{ELAB_URL}/api/v2/experiments/{exp_id}', json={ 'title': f"Sample — {accession} — {sample.get('sample_type','')}", 'date': sample.get('received_date', datetime.now().strftime('%Y-%m-%d')), 'metadata': json.dumps(metadata), 'tags': ['LIMS-Synced', sample.get('sample_type','')] }).raise_for_status() return exp_id

6.3 Writing Back Results to LIMS

Python — extract approved results and POST to LIMS
def sync_results_back_to_lims(exp_id): exp = elab.get(f'{ELAB_URL}/api/v2/experiments/{exp_id}').json() fields = json.loads(exp.get('metadata') or '{}').get('extra_fields', {}) accession = fields.get('LIMS Accession', {}).get('value', '') result_pct = fields.get('Result (%)', {}).get('value', '') pass_fail = fields.get('Pass / Fail', {}).get('value', '') if exp.get('status') != 4: # 4 = Approved return # only sync approved experiments lims.patch(f'{LIMS_URL}/api/samples/{accession}/results', json={ 'accession': accession, 'result_value': result_pct, 'result_status': pass_fail, 'eln_experiment_id': exp_id }).raise_for_status()

6.4 Batch Processing

Python — rate-limited batch status update
def batch_update_status(session, base_url, exp_ids, new_status_id, delay=0.1, dry_run=False): success, failed = [], [] for exp_id in exp_ids: if dry_run: print(f'[DRY RUN] Would set experiment {exp_id} → status {new_status_id}') continue try: session.patch(f'{base_url}/api/v2/experiments/{exp_id}', json={'status': new_status_id}).raise_for_status() success.append(exp_id) except Exception as e: failed.append(exp_id) time.sleep(delay) print(f'Updated {len(success)}/{len(exp_ids)} experiments.') return success, failed # Dry run first, then execute batch_update_status(session, BASE_URL, q1_ids, 6, dry_run=True) batch_update_status(session, BASE_URL, q1_ids, 6)
Chapter 7

BI, Analytics, and Reporting

LabLynx One's API makes it straightforward to extract structured data for business intelligence dashboards, automated reporting, and statistical analysis. This chapter covers pandas, Power BI, Tableau, and a complete Python QA report generator.

7.1 Extracting Data to pandas DataFrames

Python — eln_analytics.py
import pandas as pd import json def fetch_experiments_to_df(category_id=None, status_id=None, include_metadata=True): """Fetch experiments and return a flat pandas DataFrame. Metadata custom fields are expanded into individual columns.""" params = {'limit': 500, 'extended': 1} if category_id: params['cat'] = category_id if status_id: params['status'] = status_id all_exps, offset = [], 0 while True: params['offset'] = offset page = session.get(f'{BASE_URL}/api/v2/experiments', params=params).json() if not page: break all_exps.extend(page) if len(page) < params['limit']: break offset += params['limit'] rows = [] for exp in all_exps: row = { 'id': exp.get('id'), 'title': exp.get('title', ''), 'date': pd.to_datetime(exp.get('date'), errors='coerce'), 'status_id': exp.get('status'), 'upload_count': len(exp.get('uploads', [])), } if include_metadata and exp.get('metadata'): try: meta = json.loads(exp['metadata']) for fname, fdata in meta.get('extra_fields', {}).items(): row[f'field_{fname.lower().replace(" ","_")}'] = fdata.get('value', '') except: pass rows.append(row) df = pd.DataFrame(rows) # Cast numeric metadata field to float if 'field_result_(%)' in df.columns: df['result_pct'] = pd.to_numeric(df['field_result_(%)'], errors='coerce') # Monthly pass rate analysis df['month'] = df['date'].dt.to_period('M') if 'field_pass_/_fail' in df.columns: monthly = df.groupby('month').agg( total_runs = ('id', 'count'), pass_count = ('field_pass_/_fail', lambda x: (x == 'Pass').sum()), mean_result = ('result_pct', 'mean') ) monthly['pass_rate'] = (monthly['pass_count'] / monthly['total_runs'] * 100).round(1) print(monthly) return df

7.2 Power BI Integration — Power Query M Script

Power BI can connect directly to the LabLynx One API using the Power Query Web connector with custom authentication headers.

Tip

In Power BI Service (cloud), you need a Data Gateway to connect to on-premises LabLynx One instances. For sciCloud.net® deployments, the API is directly accessible from Power BI Service without a gateway.

Power Query M — fetch and parse experiments
// Power BI Desktop — Power Query M script // Data → Get Data → Blank Query → paste in Advanced Editor let BaseUrl = "https://yourlab.elabeln.com", ApiKey = "3-YOUR_API_KEY_HERE", CategoryId = "5", FetchPage = (offset as number) as list => let Url = BaseUrl & "/api/v2/experiments?limit=200&offset=" & Number.ToText(offset) & "&cat=" & CategoryId & "&extended=1", Resp = Web.Contents(Url, [ Headers = [Authorization = ApiKey, #"Content-Type" = "application/json"]]) in Json.Document(Resp), Pages = List.Generate( () => [page = FetchPage(0), offset = 0], each List.Count([page]) > 0, each [page = FetchPage([offset] + 200), offset = [offset] + 200], each [page] ), AllRecords = List.Combine(Pages), Table = Table.FromList(AllRecords, Splitter.SplitByNothing()), Expanded = Table.ExpandRecordColumn(Table, "Column1", {"id","title","date","status","metadata"}, {"ID","Title","Date","Status","Metadata"}), // Extract metadata fields WithMeta = Table.AddColumn(Expanded, "MetaParsed", each try Json.Document([Metadata]) otherwise null), WithAnalyst = Table.AddColumn(WithMeta, "Analyst", each try [MetaParsed][extra_fields][Analyst][value] otherwise ""), WithResult = Table.AddColumn(WithAnalyst, "Result_Pct", each try Number.From([MetaParsed][extra_fields][#"Result (%)"][value]) otherwise null), WithPF = Table.AddColumn(WithResult, "Pass_Fail", each try [MetaParsed][extra_fields][#"Pass / Fail"][value] otherwise ""), FinalTable = Table.RemoveColumns(WithPF, {"Metadata", "MetaParsed"}) in FinalTable

7.3 Automated QA Dashboard Report (PDF)

Python — qa_report.py (matplotlib)
import matplotlib.pyplot as plt from calendar import month_name def generate_report(year, month, output_path): df = get_qa_data(year, month) # uses fetch_experiments_to_df() above if df.empty: return fig, axes = plt.subplots(2, 2, figsize=(12, 8)) fig.suptitle(f'QA Summary — {month_name[month]} {year}', fontsize=16, fontweight='bold') # Pass/Fail pie chart pf = df['pass_fail'].value_counts() axes[0,0].pie(pf, labels=pf.index, autopct='%1.1f%%', colors=['#2E7D32','#B71C1C','#E65100']) axes[0,0].set_title('Pass / Fail Distribution') # Results trend over month with spec limits df_sorted = df.sort_values('date') axes[0,1].plot(range(len(df_sorted)), df_sorted['result'], 'o-', color='#1F3864') axes[0,1].axhline(y=97.0, color='red', linestyle='--', label='Lower spec (97%)') axes[0,1].axhline(y=103.0, color='red', linestyle='--', label='Upper spec (103%)') axes[0,1].set_title('Result (%) — Chronological') # Runs per analyst and instrument df['analyst'].value_counts().plot.barh(ax=axes[1,0], color='#1F3864', title='Runs by Analyst') df['instrument'].value_counts().plot.bar(ax=axes[1,1], color='#E8622A', title='Runs by Instrument') plt.tight_layout() plt.savefig(output_path, dpi=150, bbox_inches='tight') print(f'Report saved: {output_path}') generate_report(2026, 6, 'qa_report_2026-06.pdf')

7.4 Tableau Web Data Connector

JavaScript — Tableau WDC (index.html)
(function() { var myConnector = tableau.makeConnector(); myConnector.getSchema = function(schemaCallback) { var cols = [ {id:'id', alias:'Experiment ID', dataType:tableau.dataTypeEnum.int}, {id:'title', alias:'Title', dataType:tableau.dataTypeEnum.string}, {id:'date', alias:'Date', dataType:tableau.dataTypeEnum.date}, {id:'analyst', alias:'Analyst', dataType:tableau.dataTypeEnum.string}, {id:'result', alias:'Result (%)', dataType:tableau.dataTypeEnum.float}, {id:'passfail',alias:'Pass/Fail', dataType:tableau.dataTypeEnum.string}, {id:'tags', alias:'Tags', dataType:tableau.dataTypeEnum.string}, ]; schemaCallback([{id:'lablynxone_experiments', alias:'LabLynx One Experiments', columns:cols}]); }; myConnector.getData = function(table, doneCallback) { var conn = JSON.parse(tableau.connectionData); var baseUrl = conn.baseUrl; var apiKey = conn.apiKey; var catId = conn.categoryId; function fetchPage(offset, acc) { $.ajax({ url: baseUrl + '/api/v2/experiments?limit=200&offset=' + offset + '&cat=' + catId + '&extended=1', headers: {'Authorization': apiKey}, success: function(data) { var rows = data.map(function(exp) { var f = {}; try { f = JSON.parse(exp.metadata || '{}').extra_fields || {}; } catch(e){} return { id: exp.id, title: exp.title || '', date: (exp.date || '').substring(0,10), analyst: (f['Analyst']||{}).value || '', result: parseFloat((f['Result (%)']||{}).value) || null, passfail:(f['Pass / Fail']||{}).value || '', tags: (exp.tags||[]).map(t => t.tag).join(',') }; }); acc = acc.concat(rows); if (data.length === 200) fetchPage(offset + 200, acc); else { table.appendRows(acc); doneCallback(); } } }); } fetchPage(0, []); }; tableau.registerConnector(myConnector); })();
Chapter 8

The elabapi-python Library

The official Python client library provides a generated, typed interface to all API endpoints. It is the recommended approach for complex Python integrations because it handles authentication, request construction, and response parsing automatically.

8.1 Installation and Setup

Python
# Install pip install elabapi-python import elabapi_python configuration = elabapi_python.Configuration() configuration.api_key['token'] = 'YOUR_API_KEY' configuration.api_key_prefix['token'] = '' configuration.host = 'https://yourlab.elabeln.com/api/v2' configuration.debug = False # True for request/response logging api_client = elabapi_python.ApiClient(configuration) experiments_api = elabapi_python.ExperimentsApi(api_client) items_api = elabapi_python.ItemsApi(api_client) users_api = elabapi_python.UsersApi(api_client) tags_api = elabapi_python.TagsApi(api_client) events_api = elabapi_python.EventsApi(api_client)

8.2 Common Operations Using the Library

Python
# List experiments experiments = experiments_api.read_experiments(limit=50, category=5, status=4) for exp in experiments: print(f'{exp.id}: {exp.title} — {exp.date}') # Create + update an experiment created = experiments_api.create_experiment(body={}) new_id = int(created.headers['Location'].split('/')[-1]) experiments_api.patch_experiment(new_id, body={ 'title': 'My new experiment', 'date': '2026-06-01', 'status': 1 }) # Add tag, upload file experiments_api.create_experiment_tag(new_id, body={'tag': 'ProjectAlpha'}) with open('data.raw', 'rb') as f: experiments_api.create_experiment_upload(new_id, file=f, comment='Raw instrument output') # Get current user me = users_api.read_user('me') print(f'Logged in as: {me.firstname} {me.lastname}')

8.3 Error Handling with the Library

Python
from elabapi_python.rest import ApiException try: exp = experiments_api.get_experiment(99999) except ApiException as e: if e.status == 404: print('Experiment not found') elif e.status == 403: print('No permission to access this experiment') else: print(f'API error {e.status}: {e.body}')
Chapter 9

Webhooks and Event-Driven Integration

LabLynx One does not provide built-in webhook delivery. Event-driven integration is achieved through polling the API for recent changes, or through LabVia (Node-RED) which supports event-triggered workflows.

9.1 Polling for Recent Changes

Python — change_poller.py
"""Polls LabLynx One for recently modified experiments and triggers downstream actions.""" import os, json, time, requests from datetime import datetime, timezone from pathlib import Path POLL_INTERVAL = 60 STATE_FILE = Path('.poller_state.json') session = requests.Session() session.headers.update({'Authorization': os.environ['ELAB_API_KEY']}) def get_recently_modified(since_timestamp, category_id=None): params = {'limit':100, 'extended':1} if category_id: params['cat'] = category_id resp = session.get(f'{os.environ["ELAB_BASE_URL"]}/api/v2/experiments', params=params) resp.raise_for_status() return [e for e in resp.json() if (e.get('modified_at') or '') > since_timestamp] def handle_experiment_change(exp): # Example: sync to LIMS when status changes to Approved (4) if exp.get('status') == 4: print(f'Experiment {exp["id"]} approved — syncing to LIMS...') # sync_results_back_to_lims(exp['id']) def run_poller(): while True: state = json.loads(STATE_FILE.read_text()) if STATE_FILE.exists() else {'last_check':'2020-01-01T00:00:00Z'} now = datetime.now(timezone.utc).isoformat() try: for exp in get_recently_modified(state['last_check']): handle_experiment_change(exp) STATE_FILE.write_text(json.dumps({'last_check': now})) except Exception as e: print(f'Poll error: {e}') time.sleep(POLL_INTERVAL)

9.2 LabVia Integration — Node-RED Based Automation

LabVia is LabLynx's integration and automation platform built on Node-RED. It provides a visual flow-based programming interface and pre-built LabLynx One nodes. LabVia is the recommended approach for production integrations requiring:

  • Event-driven instrument data capture (triggered by file creation, serial port events, MQTT, etc.)
  • Visual workflow design without Python/JS coding
  • Pre-built connectors for laboratory instruments (HPLC, balances, plate readers, etc.)
  • Data transformation nodes (parsing instrument output formats into LabLynx One metadata)
Note

For LabVia integration development, contact LabLynx at support@lablynx.com to request the LabVia node documentation and example flows specific to your instrument types. LabLynx also provides professional services for custom integration development.

Chapter 10

JavaScript SDK and Browser Applications

A reusable LabLynx One JavaScript client module for Node.js backend services, browser-based dashboards, and React/Vue/Angular frontends.

10.1 LabLynx One JavaScript Client Module

JavaScript — elab-client.js
export class ELabClient { constructor(baseUrl, apiKey) { this.baseUrl = baseUrl.replace(/\/$/, ''); this.headers = { 'Authorization': apiKey, 'Content-Type': 'application/json', 'Accept': 'application/json' }; } async getExperiments(params = {}) { const url = new URL(`${this.baseUrl}/api/v2/experiments`); Object.entries(params).forEach(([k,v]) => url.searchParams.set(k, v)); const res = await fetch(url, { headers: this.headers }); if (!res.ok) throw new Error(`GET experiments failed: ${res.status}`); return res.json(); } async createExperiment() { const res = await fetch(`${this.baseUrl}/api/v2/experiments`, { method: 'POST', headers: this.headers }); if (!res.ok) throw new Error(`POST failed: ${res.status}`); return parseInt(res.headers.get('Location').split('/').pop(), 10); } async updateExperiment(id, data) { const res = await fetch(`${this.baseUrl}/api/v2/experiments/${id}`, { method: 'PATCH', headers: this.headers, body: JSON.stringify(data) }); if (!res.ok) throw new Error(`PATCH failed: ${res.status}`); } // Metadata helpers parseMetadata(experiment) { try { const meta = JSON.parse(experiment.metadata || '{}'); return Object.fromEntries( Object.entries(meta.extra_fields || {}).map(([k, v]) => [k, v.value || '']) ); } catch { return {}; } } buildMetadata(fields) { return JSON.stringify({ extra_fields: Object.fromEntries( Object.entries(fields).map(([name, cfg], i) => [name, { type: cfg.type || 'text', value: String(cfg.value || ''), position: i + 1, ...(cfg.options && { options: cfg.options }), ...(cfg.units && { units: cfg.units, unit: cfg.unit || '' }) }]) ) }); } }

10.2 Complete Node.js Integration Example — Plate Reader

JavaScript — plate_reader_integration.js
import { ELabClient } from './elab-client.js'; import { readFileSync } from 'fs'; import { parse } from 'csv-parse/sync'; const client = new ELabClient(process.env.ELAB_BASE_URL, process.env.ELAB_API_KEY); async function importPlateReaderResults(csvFile) { const raw = readFileSync(csvFile, 'utf8'); const records = parse(raw, { columns: true, skip_empty_lines: true }); // Compute plate statistics const ods = records.map(r => parseFloat(r.OD450)).filter(v => !isNaN(v)); const mean = ods.reduce((a,b) => a+b, 0) / ods.length; const stddev = Math.sqrt(ods.reduce((a,b) => a+(b-mean)**2, 0) / ods.length); const cv = (stddev / mean * 100).toFixed(1); // Build HTML plate layout table for the experiment body const tableHtml = [ '<table border="1"><tr><th>Well</th><th>Sample</th><th>OD450</th></tr>', ...records.map(r => `<tr><td>${r.Well}</td><td>${r.Sample}</td><td>${r.OD450}</td></tr>`), '</table>' ].join(''); const today = new Date().toISOString().split('T')[0]; const expId = await client.createExperiment(); await client.updateExperiment(expId, { title: `Plate Reader — ELISA — ${today} (Auto)`, date: today, category: 7, body: `<h2>Plate Results</h2>${tableHtml}`, metadata: client.buildMetadata({ 'Run Date': { type:'date', value: today }, 'Mean OD450': { type:'number', value: mean.toFixed(4) }, 'CV (%)': { type:'number', value: cv }, 'Well Count': { type:'number', value: String(records.length) }, 'Source': { type:'select', value:'Auto-Import', options:['Auto-Import','Manual','Instrument-Direct'] } }), tags: ['Plate-Reader', 'Auto-Import', today.substring(0,7)] }); console.log(`Created experiment ${expId} | ${records.length} wells | CV: ${cv}%`); return expId; } const csvFile = process.argv[2]; importPlateReaderResults(csvFile).catch(console.error);
Chapter 11

Complete API Endpoint Reference

Consolidated reference of all major API endpoints. For the full OpenAPI specification with request/response schemas, see: https://doc.elabftw.net/api/v2/

11.1 Experiments

MethodEndpointDescription and Body/Params
GET/experimentsList. Query: limit, offset, q, cat, status, owner, extended
POST/experimentsCreate empty. Returns 201 + Location header.
GET/experiments/{id}Full detail including metadata, tags, uploads, links, steps.
PATCH/experiments/{id}Partial update. Only sent fields change.
DELETE/experiments/{id}Soft-delete. Returns 204.
GET/experiments/{id}/revisionsBody text version history. Returns [{id, created_at, body}].
GET/experiments/{id}/changelogField change history. Returns [{field, previous, next, userid, created_at}].
POST/experiments/{id}/tagsBody: {"tag": "TagName"}. Returns 201.
DELETE/experiments/{id}/tags/{tagId}Remove tag. Returns 204.
GET/experiments/{id}/uploadsList attachments.
POST/experiments/{id}/uploadsUpload file. multipart/form-data: file (required), comment (optional).
DELETE/experiments/{id}/uploads/{uploadId}Delete attachment.
GET/experiments/{id}/linksReturns {experiments_links:[], items_links:[]}
POST/experiments/{id}/links/itemsBody: {"link": itemId}
POST/experiments/{id}/links/experimentsBody: {"link": expId}
POST/experiments/{id}/stepsBody: {"body": "Step text", "ordering": 1}
PATCH/experiments/{id}/steps/{stepId}Body: {"body", "ordering", "finished": true/false}
POST/experiments/{id}/commentsBody: {"comment": "text"}
POST/experiments/{id}/timestampsApply RFC 3161 timestamp. No request body needed.

11.2 Resources (Items)

MethodEndpointDescription
GET/itemsList items. Same query params as /experiments.
POST/itemsCreate empty item.
GET/items/{id}Full item detail.
PATCH/items/{id}Update item.
DELETE/items/{id}Delete item.
GET/items_typesList all resource category types.
POST/items/{id}/uploadsUpload file (multipart).
POST/items/{id}/tagsAdd tag.
GET/items/{id}/linksGet all links.
POST/items/{id}/links/itemsLink to another resource.
POST/items/{id}/links/experimentsLink to an experiment.
POST/items/{id}/stepsAdd step.
PATCH/items/{id}/steps/{stepId}Update/complete step.

11.3 Users, Teams, and System

MethodEndpointDescription
GET/usersList all users (SysAdmin).
GET/users/{id}Get user profile. Use me for authenticated user.
POST/usersCreate user (SysAdmin). Body: {firstname, lastname, email, team, usergroup}.
PATCH/users/{id}Update user (SysAdmin or self for limited fields).
GET/teamsList teams.
GET/teams/{id}Get team details.
PATCH/teams/{id}Update team (Admin/SysAdmin).
GET/statusList experiment status values for current team.
GET/tagsList all tags in current team.
PATCH/tags/{id}Rename a tag (Admin).
DELETE/tags/{id}Delete a tag (Admin).
GET/eventsList bookings. Params: start, end, item (resource ID).
POST/eventsCreate booking. Body: {item, start, end, title}.
PATCH/events/{id}Update booking.
DELETE/events/{id}Cancel booking.
GET/infoGet instance info (version, etc.). No auth required.
Chapter 12

Security, Rate Limits, and Best Practices

Production integration patterns for API key security, rate limit handling, safe concurrent writes, and integration testing.

12.1 API Key Security

PracticeDetails
Never hardcode keysAlways load from environment variables, secrets managers (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault), or secure config files outside the codebase.
One key per integrationCreate a separate key for each script or service. If one key is compromised, revoke only that key without disrupting other integrations.
Read-only keys when possibleIf an integration only reads data (reporting, BI), generate a read-only key. A compromised read-only key cannot modify or delete data.
Rotate keys periodicallyRevoke and regenerate keys at least annually, or immediately after any suspected exposure (developer departure, key committed to version control).
Monitor access patternsReview API access in the LabLynx One audit log. Unusual patterns (off-hours, unexpected IPs, large extractions) may indicate a compromised key.

12.2 Rate Limiting

LabLynx One enforces rate limits to protect system stability. Key practices:

  • Add time.sleep(0.1–0.2) between requests in batch loops.
  • Use large page sizes (limit=200–500) to reduce total request count.
  • Cache responses when data is not time-critical.
  • Handle 429 responses with exponential backoff.
Python — exponential backoff
def request_with_backoff(session, method, url, max_retries=5, **kwargs): """Make a request with exponential backoff on 429 rate limit errors.""" for attempt in range(max_retries): resp = session.request(method, url, **kwargs) if resp.status_code == 429: wait = int(resp.headers.get('Retry-After', 2 ** attempt)) print(f'Rate limited. Waiting {wait}s (attempt {attempt+1}/{max_retries})') time.sleep(wait) else: resp.raise_for_status() return resp raise Exception(f'Max retries reached for {url}')

12.3 Handling the Read-Modify-Write Pattern Safely

When updating metadata or other fields, always fetch the current state first to avoid race conditions. Two integrations simultaneously writing to the same experiment can produce lost updates. For high-frequency concurrent writes, serialize updates through a queue rather than parallel writes.

Python — optimistic concurrency check
def safe_patch_metadata(session, base_url, exp_id, field_name, value): # 1. Read current state exp = session.get(f'{base_url}/api/v2/experiments/{exp_id}').json() # 2. Update only the target field meta = json.loads(exp.get('metadata') or '{}') meta.setdefault('extra_fields', {})[field_name] = { 'type': 'text', 'value': str(value) } # 3. Write back session.patch(f'{base_url}/api/v2/experiments/{exp_id}', json={'metadata': json.dumps(meta)}).raise_for_status()

12.4 Testing Your Integration

Tip
  • Test against a staging or development instance with synthetic data. LabLynx can provision a test instance for development use.
  • Write integration tests that create, verify, and clean up test experiments. A test that leaves 500 test records in production is not a test — it is a mess.
  • Use descriptive titles for test records: 'INTEGRATION_TEST — Auto-Delete — {timestamp}'.
  • Test all error paths: what happens when an experiment doesn't exist? When the key is invalid?
Python — test_integration.py
def test_api_connectivity(): session = requests.Session() session.headers.update({'Authorization': os.environ['ELAB_API_KEY']}) print('1. Testing authentication...') me = session.get(f'{BASE_URL}/api/v2/users/me').json() print(f" Authenticated as: {me['firstname']} {me['lastname']}") print('2. Creating test experiment...') resp = session.post(f'{BASE_URL}/api/v2/experiments') exp_id = int(resp.headers['Location'].split('/')[-1]) print('3. Populating...') ts = datetime.now().isoformat()[:19] session.patch(f'{BASE_URL}/api/v2/experiments/{exp_id}', json={ 'title': f'INTEGRATION_TEST — Auto-Delete — {ts}', 'tags': ['integration-test'] }).raise_for_status() print('4. Verifying...') exp = session.get(f'{BASE_URL}/api/v2/experiments/{exp_id}').json() assert 'integration-test' in [t['tag'] for t in exp.get('tags', [])] print('5. Cleaning up...') session.delete(f'{BASE_URL}/api/v2/experiments/{exp_id}').raise_for_status() print('All tests passed.')
Appendix A

Environment Setup Reference

Python Environment

Shell
# Create a virtual environment (recommended) python -m venv elab-env source elab-env/bin/activate # Linux/Mac .\elab-env\Scripts\activate # Windows # Install dependencies pip install requests pandas matplotlib elabapi-python # Set environment variables export ELAB_API_KEY='3-your-api-key-here' export ELAB_BASE_URL='https://yourlab.elabeln.com' # Verify connectivity python test_integration.py

Node.js Environment

Shell
mkdir elab-integration && cd elab-integration npm init -y npm install node-fetch csv-parse dotenv # Create .env file — do NOT commit to version control echo 'ELAB_API_KEY=3-your-key' >> .env echo 'ELAB_BASE_URL=https://yourlab.elabeln.com' >> .env echo '.env' >> .gitignore # Add "type": "module" to package.json for ES module imports

Required API Key Permissions by Use Case

Use CaseRequired Key Type
Read experiments and resources (BI/analytics)Read-only API key
Create experiments from instrumentsRead-write API key for the integration user's account
Create and manage resources (inventory sync)Read-write API key
Manage users and teams (admin automation)Read-write API key on a SysAdmin account
All operations (full integration)Read-write API key on an account with appropriate team membership
Appendix B

Metadata JSON Schema Quick Reference

JSON — complete schema with all field types
{ "extra_fields": { // Text field "Analyst Name": { "type":"text", "value":"J. Smith", "position":1 }, // Number with units "Volume": { "type":"number", "value":"100", "units":["µL","mL","L"], "unit":"µL", "position":2 }, // Date (YYYY-MM-DD required) "Expiry Date": { "type":"date", "value":"2026-12-31", "position":3 }, // Datetime (YYYY-MM-DDTHH:MM required) "Run Start": { "type":"datetime-local", "value":"2026-06-01T09:00", "position":4 }, // Select (dropdown) — value must be in options[] "Sample Type": { "type":"select", "value":"Blood", "options":["Blood","Urine","CSF","Tissue"], "position":5 }, // Radio — value must be in options[] "Priority": { "type":"radio", "value":"Routine", "options":["STAT","Priority","Routine"], "position":6 }, // Checkbox — "on" = checked, "" = unchecked "Controls Run": { "type":"checkbox", "value":"on", "position":7 }, // URL "Raw Data": { "type":"url", "value":"https://...", "position":8 }, // Email "Contact": { "type":"email", "value":"analyst@lab.com", "position":9 }, // Field in a named group "Batch Number": { "type":"text", "value":"BATCH-001", "group_id":1, "position":10 } }, "elabftw": { "display_main_text": true, "extra_fields_groups": [ { "id": 1, "name": "Production Info" }, { "id": 2, "name": "QA Results" } ] } }
Documentation Set

LabLynx One IT Admin Manual

Licensing, architecture, and installation reference.

Chapter 1

LabLynx One Commercial License (LabLynx, Inc.)

LabLynx One is delivered by LabLynx under a commercial subscription license. This chapter describes the terms of that license and its relationship to the open-source platform on which LabLynx One is built.

1.1 License Summary

LabLynx One is a commercial software product delivered by LabLynx, Inc. under a subscription license agreement. The commercial license governs the use of LabLynx branding, customization, documentation, managed hosting infrastructure (sciCloud.net®), and proprietary integrations and connectors.

LabLynx One Commercial License — Key Terms
LicensorLabLynx, Inc., Pensacola, Florida, USA
License TypeCommercial Subscription License
GrantNon-exclusive, non-transferable right to use LabLynx One as delivered by LabLynx for the subscriber's internal laboratory operations during the subscription term.
UsersUnlimited users per instance. No per-seat licensing.
RestrictionsLicensee may not redistribute, sublicense, sell, or host LabLynx One as a service for third parties. Reverse engineering of LabLynx proprietary components is prohibited.
SupportIncluded per subscription tier. See www.lablynx.com for current tier details.
Contactsales@lablynx.com | support@lablynx.com

1.2 Open-Source Foundation

LabLynx One is built on eLabFTW, an open-source Electronic Laboratory Notebook developed by Deltablot SAS. LabLynx applies branding, configuration, enterprise features, and managed hosting to the eLabFTW platform. The underlying eLabFTW codebase is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

eLabFTW Open Source License
  • Project: eLabFTW
  • Developer: Deltablot SAS
  • License: GNU Affero General Public License v3.0 (AGPL-3.0)
  • Source Code: https://github.com/elabftw/elabftw
  • AGPL-3.0 Summary: Permissions: commercial use, distribution, modification, patent use, private use. Conditions: disclose source, same license, state changes, network use is distribution. Limitations: no liability, no warranty.
  • Full License Text: https://www.gnu.org/licenses/agpl-3.0.html

1.3 License Compatibility Statement

LabLynx's commercial subscription does not alter the open-source licensing terms of eLabFTW or any of its open-source dependencies. Customers who deploy LabLynx One using the LabServer (on-premises) model receive the complete source code of eLabFTW as part of the container images, in accordance with AGPL-3.0 requirements.

Customers who deploy on-premises and modify eLabFTW source code must make those modifications available under AGPL-3.0 if those modifications are used to provide network services. LabLynx proprietary components (branding, configuration files, integration scripts) that do not constitute derived works of eLabFTW are not subject to AGPL-3.0.

Note

The complete text of all open-source licenses is available in the /licenses directory of the eLabFTW source repository and in the /usr/share/doc directory of the deployed Docker container.

Chapter 2

Open-Source Component Licenses

The LabLynx One software stack incorporates numerous open-source components. This chapter documents every component with its version, applicable license, and source — covering the Docker image, PHP runtime, Composer packages, JavaScript libraries, database, and host OS.

2.1 License Type Summary

LicenseTypeDescription
AGPL-3.0Strong copyleftSource must be made available when software is run over a network. Applies to eLabFTW core and Ghostscript.
GPL-2.0 / GPL-3.0Strong copyleftUsed by Linux kernel, MySQL, GnuPG, and several host OS components.
LGPL-2.1 / LGPL-3.0Weak copyleftPermits linking from non-GPL software. Used by systemd and several libraries.
MITPermissiveVery widely used. Full use, copy, modify, redistribute permitted with attribution.
BSD 2-Clause / 3-ClausePermissiveSimilar to MIT with attribution requirements. Used by nginx, Docker, and several libraries.
Apache 2.0Permissive + patentPermissive with explicit patent grant. Used by Docker Engine, OpenSSL 3.x.
PHP License v3.01PermissivePHP-specific permissive license used for PHP core and most bundled extensions.
ISCPermissiveFunctionally equivalent to MIT. Used by s6-overlay and several Node.js packages.
MPL-2.0Weak copyleftFile-level weak copyleft. Used by some cryptographic components and ca-certificates.

2.2 Core Application Stack — Primary Docker Image (elabftw/elabimg)

The primary LabLynx One Docker image (elabftw/elabimg:stable) is built on Alpine Linux and bundles the following components:

ComponentVersionLicenseSource
eLabFTW5.3.x (stable)AGPL-3.0github.com/elabftw/elabftw
Alpine Linux3.20.xMIT (kernel: GPL-2.0)alpinelinux.org
nginx1.26.xBSD 2-Clausenginx.org
PHP8.3.xPHP License v3.01php.net
PHP-FPM8.3.xPHP License v3.01php.net
s6-overlay3.xISCgithub.com/just-containers/s6-overlay
skalibs2.xISCskarnet.org/software/skalibs
execline2.xISCskarnet.org/software/execline
s62.xISCskarnet.org/software/s6
OpenSSL3.3.xApache 2.0openssl.org
zlib1.3.xMIT-likezlib.net
libc (musl)1.2.xMITmusl.libc.org
libcurl8.xMIT (curl)curl.se
GnuPG (gpg)2.4.xGPL-3.0gnupg.org
Ghostscript10.xAGPL-3.0ghostscript.com
ImageMagick7.xMIT-variantimagemagick.org
FreeType2.xFTL (BSD-like)freetype.org
libpng1.6.xlibpng Licenselibpng.org
libjpeg-turbo3.xIJG / BSD 3-Clauselibjpeg-turbo.org
libzip1.xBSD 3-Clauselibzip.org
libxml22.12.xMITgitlab.gnome.org/GNOME/libxml2
libxslt1.1.xMITgitlab.gnome.org/GNOME/libxslt
ICU74.xUnicode Licenseicu.unicode.org
brotli1.1.xMITgithub.com/google/brotli
borgbackup (optional)1.4.xBSD 3-Clauseborgbackup.readthedocs.io

2.3 PHP Extensions (Bundled in Container)

ExtensionLicenseRole in LabLynx One
php8-bcmathPHP / MITArbitrary-precision arithmetic. Required for cryptographic operations.
php8-ctypePHPCharacter type checking. Required for input validation.
php8-curlPHP / MITcURL HTTP client. Required for API calls and timestamping.
php8-domPHPXML Document Object Model. Required for HTML/XML processing.
php8-exifPHPEXIF image metadata. Required for image handling.
php8-fileinfoPHPFile type detection. Required for file upload validation.
php8-gdPHP / MITImage processing (GD library). Required for image manipulation, PDF generation.
php8-gettextPHPInternationalization/localization. Multi-language support.
php8-iconvPHPCharacter encoding conversion. Required for encoding handling.
php8-intlPHP / UnicodeICU internationalization. Required for locale-aware operations.
php8-jsonPHPJSON encoding/decoding. Required for API and data serialization.
php8-ldapPHP / OpenLDAPLDAP authentication. Required for LDAP/AD integration.
php8-mbstringPHPMultibyte string handling. Required for Unicode text processing.
php8-opcachePHPPHP opcode caching. Performance optimization.
php8-opensslPHP / Apache 2.0OpenSSL cryptographic functions. Required for TLS, encryption, e-signatures.
php8-pdoPHPPHP Data Objects. Required for database connectivity.
php8-pdo_mysqlPHPMySQL PDO driver. Required for MySQL database access.
php8-sessionPHPSession management. Required for user sessions.
php8-simplexmlPHPSimpleXML parser. Required for XML processing.
php8-sodiumPHP / ISClibsodium binding. Required for Ed25519 signing, encrypted storage.
php8-tokenizerPHPPHP tokenizer. Required internally.
php8-xmlPHPXML processing. Required for XML output.
php8-xmlwriterPHPXML writer. Required for XML generation.
php8-zipPHP / BSD 3-ClauseZIP archive handling. Required for ZIP export/import.

2.4 PHP Composer Packages

PackageVersionLicenseRole
mpdf/mpdfv8.2.xGPL-2.0PDF generation from HTML. Experiment PDF exports.
monolog/monologv3.xMITApplication logging framework.
symfony/consolev6/v7MITCLI commands (db init, maintenance tools).
symfony/cachev6/v7MITCaching abstraction layer.
symfony/http-foundationv6/v7MITHTTP request/response abstraction.
symfony/mailerv6/v7MITEmail sending (SMTP notifications, invitations).
symfony/mimev6/v7MITMIME type handling.
symfony/translationv6/v7MITInternationalization and translation.
symfony/yamlv6/v7MITYAML parsing.
twig/twigv3.xBSD 3-ClauseHTML template rendering engine.
league/commonmarkv2.xBSD 3-ClauseMarkdown to HTML conversion.
league/html-to-markdownv5.xMITHTML to Markdown for exports.
intervention/imagev2/v3MITImage manipulation and processing.
ramsey/uuidv4.xMITUUID generation for ELabIDs.
paragonie/constant_time_encodingv2.xMITConstant-time string encoding for security.
paragonie/random_compatv9.xMITCryptographically secure random numbers.
psr/logv3.xMITPSR-3 logging interface standard.
psr/cachev3.xMITPSR-6 cache interface standard.
psr/containerv2.xMITPSR-11 container interface standard.
psr/http-messagev2.xMITPSR-7 HTTP message interface.
php-http/httplugv2.xMITHTTP client abstraction.
guzzlehttp/guzzlev7.xMITHTTP client for TSA, PubChem API calls.
guzzlehttp/psr7v2.xMITPSR-7 HTTP message implementation.
php-di/php-div7.xMITDependency injection container.
defuse/php-encryptionv2.xMITAES-256 encryption for stored credentials.
minisign-phpv1.xMITEd25519 cryptographic signature verification.

2.5 JavaScript / Frontend Libraries

LibraryVersionLicenseRole
TinyMCEv6/v7MIT (Community)Rich text WYSIWYG editor. Primary experiment body editor.
ChemDoodle Webv9.xGPL-3.03D molecular viewer for CIF/PDB/MOL files.
Ketcher (EPAM)v2.xApache 2.02D chemical structure drawing editor.
3Dmol.jsv2.xBSD 3-Clause3D molecular visualization.
mermaid.jsv10.xMITDiagram rendering from text markup.
SnapGene ViewerN/AProprietary freeDNA sequence visualization (.gb, .ape, .dna files).
Chart.jsv4.xMITCanvas-based charting library.
SheetJS (XLSX.js)v0.18.xApache 2.0 (Community)Excel file parsing and export.
Bootstrapv5.xMITCSS framework for responsive UI components.
jQueryv3.xMITJavaScript utility library (legacy components).
Font Awesomev6.xMIT (icons) CC BY 4.0 (fonts)Icon library used throughout the UI.
MathJaxv3.xApache 2.0LaTeX mathematical equation rendering.
CodeMirrorv6.xMITCode block editor with syntax highlighting.
DOMPurifyv3.xApache 2.0 / MITHTML sanitization to prevent XSS attacks.
sortablejsv1.xMITDrag-and-drop sortable lists.
interact.jsv1.xMITDrag-and-resize interactions.
pakov2.xMITzlib/deflate compression in JavaScript.
lodashv4.xMITJavaScript utility library.
markedv9.xMITMarkdown parser for preview mode.

2.6 Database Container (MySQL 8.4)

ComponentVersionLicense
MySQL Community Server8.4.xGPL-2.0
mysql:8.4 Docker Image8.4.xGPL-2.0 + various OS licenses
MySQL Connector/C8.4.xGPL-2.0 with FOSS Exception
OpenSSL (in MySQL image)3.xApache 2.0
Note

MySQL 8.4 is the Long Term Support (LTS) release series. LabLynx recommends pinning to 8.4.x for production deployments. MySQL 8.0.x reached End of Life in April 2026. MySQL 9.x (Innovation series) is not yet recommended for production LabLynx One deployments.

2.7 Docker and Container Infrastructure

ComponentVersionLicenseRole
Docker Engine27.xApache 2.0Container runtime. Core of the deployment platform.
Docker Compose Plugin2.xApache 2.0Multi-container orchestration. Manages web + mysql containers.
containerd1.7.xApache 2.0Container runtime used by Docker Engine.
runc1.1.xApache 2.0OCI runtime specification implementation.
libnetwork0.8.xApache 2.0Docker networking layer.
Moby (Docker source)27.xApache 2.0Open-source Docker Engine codebase.
BuildKit0.13.xApache 2.0Advanced Docker image build engine.
CNI plugins1.4.xApache 2.0Container Network Interface plugins.
iptables1.8.xGPL-2.0Linux firewall/NAT rules for Docker networking.
Docker Hub RegistryN/AService terms / Apache 2.0 (client)Container image registry hosting elabftw/elabimg and mysql images.

2.8 Ubuntu Host OS Components

ComponentVersionLicenseRole
Ubuntu Server24.04 LTSGPL (kernel), MIT/BSD/Apache (userspace)Host OS. LTS until April 2029.
Linux Kernel6.8.xGPL-2.0OS kernel. Container namespaces, cgroups.
systemd255.xLGPL-2.1+Service manager. Manages Docker daemon.
OpenSSH Server9.6.xBSD-styleRemote administration access.
ufw0.36.xGPL-3.0Host-level firewall configuration utility.
AppArmor4.0.xGPL-2.0Mandatory Access Control for container security.
curl8.5.xMIT (curl)Used by elabctl installer.
openssl3.0.xApache 2.0Host TLS utilities and certificate management.
apt2.7.xGPL-2.0Ubuntu package manager.
gpg / gnupg22.4.xGPL-3.0GPG key verification for Docker repository.
ca-certificates20240203MPL-2.0 / VariousTrusted root certificate bundle.
borgbackup2.0.xBSD 3-ClauseOptional backup tool.
dialog1.3.xLGPL-2.0+TUI dialog boxes used by elabctl.
cron3.0pl1ISCScheduled task execution for backups.
logrotate3.21.xGPL-2.0Log file rotation.
fail2ban1.0.xGPL-2.0Intrusion prevention — blocks IPs after repeated failed auth.

2.9 Optional Add-On Components

ComponentVersionLicenseRole
Redis7.2.xBSD 3-ClauseOptional session storage. Required for HA/multi-container deployments.
Indigo Chemistry PluginlatestApache 2.0Chemical structure editor (Ketcher) and substructure search.
OpenCloning PluginlatestMITDNA cloning workflow integration.
Let's Encrypt / Certbot2.xApache 2.0Free TLS certificate issuance and auto-renewal.
Nginx (reverse proxy)1.26.xBSD 2-ClauseOptional external reverse proxy with TLS termination.
Traefik3.xMITAlternative reverse proxy with built-in Let's Encrypt support.

2.10 Compliance Note on AGPL-3.0

LabLynx One includes eLabFTW software licensed under AGPL-3.0. The key obligations are:

  • If you run a modified version of eLabFTW over a network, you must make the modified source code available to users of that service.
  • LabLynx distributes an unmodified (branded) version of eLabFTW and satisfies this requirement through the public GitHub repository.
  • LabLynx proprietary components (branding, configuration files, integration scripts) that do not constitute derived works of eLabFTW are not subject to AGPL-3.0.
  • On-premises customers who modify eLabFTW source and use those modifications to provide network services must make the modifications available under AGPL-3.0.
Chapter 3

System Architecture

LabLynx One is a three-tier web application deployed using Docker containerization. Understanding the architecture is essential for infrastructure planning, security configuration, and troubleshooting.

3.1 Application Architecture Overview

All three tiers are orchestrated by Docker Compose (or an equivalent OCI-compatible engine) on a single Linux host for standard deployments. The web/application tier runs in one container (elabftw/elabimg); the database tier runs in a separate container (mysql, MySQL only — MariaDB is not supported). Both containers communicate over an isolated internal Docker bridge network (elabftw-net).

Supported container runtimes

eLabFTW (the platform underlying LabLynx One) is supported only on 64-bit GNU/Linux, and only in containers. Docker Compose is the most common runtime and the one this manual documents in detail, but Podman is recommended on RHEL-family hosts and Kubernetes is recommended for large or managed deployments. LabLynx's own elabctl-based deployment path (Chapter 7) uses Docker Compose under the hood.

Presentation + Application Tier
elabftw/elabimg:stable
nginx 1.26 · PHP-FPM 8.3 · eLabFTW application · Port 443 exposed
↕ elabftw-net (Docker bridge, internal only)
Data Tier
mysql:8.4
MySQL 8.4 LTS · Port 3306 — NOT exposed externally

Request Flow

  1. User browser sends HTTPS request to server IP/domain on port 443.
  2. Nginx receives the request. Static files (CSS, JS, images) are served directly. PHP requests are forwarded to PHP-FPM over a Unix socket.
  3. PHP-FPM runs the eLabFTW PHP code, queries MySQL as needed, and generates an HTML response.
  4. The response passes back through PHP-FPM to nginx, which returns it to the browser with appropriate headers.
  5. All database reads/writes occur over the elabftw-net Docker bridge between the web container and the mysql container.
LayerImageExternal PortNotes
Web + Appelabftw/elabimg:stable443 (HTTPS)TLS terminates here
Databasemysql:8.4None (unexposed)Internal only via elabftw-net
Session Storeredis:7-alpineNoneOptional — required for HA
Chemistry Pluginelabftw/chem-pluginNoneOptional chemical substructure search

3.2 Internal Container Services (s6-overlay)

The elabftw/elabimg container runs four concurrent services managed by s6-overlay, the container process supervisor:

ServiceDescription
nginxWeb server. Handles TLS, static file serving, and PHP-FPM proxying. Config: /etc/nginx/
php-fpmPHP FastCGI Process Manager. Executes the LabLynx One PHP application. Manages a pool of PHP worker processes. Config: /etc/php83/php-fpm.d/
cron (fcron)Runs scheduled tasks: session garbage collection, temporary file cleanup, and configured automation.
php-fpm statusExposes /php-status endpoint (password-protected) for PHP-FPM pool metrics monitoring. Enable via STATUS_PASSWORD environment variable.

3.3 Data Persistence Model

Two Docker bind mounts provide persistent storage outside the containers. Both must exist on the host before starting containers and must be included in all backup procedures.

Host PathContainer PathContent
/var/elabftw/web/elabftw/uploadsAll user-uploaded files, attachment exports, and generated ZIPs. Must survive container updates.
/var/elabftw/mysql/var/lib/mysqlComplete MySQL database. Primary data directory. Must be backed up regularly.
Important

Data stored only inside containers is lost when containers are removed or recreated. Both bind mount directories must exist on the host before starting containers and must be included in every backup procedure.

3.4 Networking Architecture

Network ComponentDescription
elabftw-netInternal Docker bridge network. Carries all web ↔ mysql traffic. Not accessible from outside the host. MySQL does NOT expose port 3306 externally.
Host port 443The web container exposes port 443 (HTTPS) to the Docker host. In security-hardened deployments, restrict to a specific interface: 127.0.0.1:443:443.
Reverse Proxy (optional)Set DISABLE_HTTPS=true to let a front-end reverse proxy (nginx, Traefik, HAProxy) handle TLS. Configure CORS variables if the API is accessed cross-domain.
Chapter 4

Hardware and Software Requirements

Minimum and recommended hardware specifications, software prerequisites, network port requirements, and TLS certificate options for all LabLynx One deployment models.

4.1 Minimum Hardware Requirements

ComponentMinimumRecommended (Production)
CPU Architecture64-bit x86_64 (AMD64)x86_64 — ARM64 supported but not primary tested
CPU Cores2 cores4+ cores — PHP-FPM and MySQL both benefit
RAM2 GB4 GB (≤50 users) · 8 GB+ (large deployments)
Disk — OS + Docker20 GB40+ GB
Disk — Application DataVaries~1 GB per 100 experiments. Plan 100 GB–1 TB for active labs with instrument data.
Network100 Mbps LANGigabit Ethernet + static public IP or DNS FQDN
Tip

PHP_MAX_CHILDREN and MAX_PHP_MEMORY are the primary performance tuning parameters. On a 4 GB RAM server, start with PHP_MAX_CHILDREN=20 and MAX_PHP_MEMORY=512M. Monitor /php-status for pool utilization under load.

4.2 Recommended Production Configurations

Small Lab (1–10 users)

4 CPU · 4 GB RAM · 100 GB SSD
PHP_MAX_CHILDREN=20
MAX_PHP_MEMORY=512M

Medium Lab (10–50 users)

8 CPU · 8 GB RAM · 500 GB SSD
PHP_MAX_CHILDREN=50
MAX_PHP_MEMORY=1G

Large Lab (50–200+ users)

16+ CPU · 16+ GB RAM · 1+ TB NFS/SAN
PHP_MAX_CHILDREN=100
MAX_PHP_MEMORY=2G
USE_REDIS=true

High Availability

2+ app servers + load balancer
Shared NFS for uploads
External MySQL (Group Replication)
USE_REDIS=true

4.3 Software Prerequisites (Host OS)

RequirementSpecification
Operating SystemAny 64-bit GNU/Linux distribution. Ubuntu Server LTS and Rocky Linux/RHEL are the most common choices; Rocky/RHEL is recommended if using Podman instead of Docker. Fully patched.
Container RuntimeDocker (recommended for most setups) or Podman (recommended on RHEL-family hosts) or Kubernetes (recommended for large/managed deployments). This manual documents the Docker Compose path via elabctl, which is the fastest route to a working install.
Docker EngineLatest stable Docker CE — from Docker's official apt/yum repository. NOT the snap package (known to cause issues on Ubuntu).
Docker Compose PluginDocker Compose V2 (plugin) — required by elabctl. Do not use the legacy standalone docker-compose tool.
curl8.5.x or later — for downloading configuration files and the elabctl installer.
dialog1.3.x or later — for the interactive elabctl installation wizard.
bash5.2.x or later — for running elabctl and installation scripts.
borgbackup (optional)2.x or later — required if using elabctl backup.
openssl3.0.x or later — for TLS certificate management and key generation.
Domain NameA fully qualified domain name (FQDN) resolving to the server's public IP. Required for HTTPS and Let's Encrypt.
Outbound InternetRequired for: Docker Hub image pulls, Let's Encrypt validation, RFC 3161 TSA requests, PubChem compound lookup, software updates.

4.4 Network Ports and Firewall Requirements

PortProtocolDirectionPurpose
443 (TCP)HTTPSInboundRequired. All user browser traffic. LabLynx One web interface and REST API.
80 (TCP)HTTPInboundOptional. Required only for Let's Encrypt HTTP-01 challenge. Redirect to 443.
22 (TCP)SSHInboundRecommended. Server administration. Restrict to admin IPs only.
3306 (TCP)MySQLInternal onlyMust NOT be exposed externally. Only elabftw-net container traffic.
6379 (TCP)RedisInternal onlyMust NOT be exposed externally. Only if Redis is deployed.
Outbound 443HTTPSOutboundRequired. Docker Hub, Let's Encrypt, TSA (RFC 3161), PubChem API.
Outbound 25/587SMTPOutboundRequired for email notifications if using external SMTP relay.

4.5 TLS / SSL Certificate Options

OptionConfigurationRequirements
Let's Encrypt (recommended)ENABLE_LETSENCRYPT=truePublic domain name, outbound port 443, port 80 for HTTP-01 challenge. Certificates auto-renew before expiry.
Custom CertificateMount /etc/letsencrypt:/ssl in docker-compose.ymlPlace fullchain.pem and privkey.pem at /etc/letsencrypt/live/<SERVER_NAME>/. Supports any CA (DigiCert, Sectigo, GlobalSign, internal CA).
Reverse Proxy Terminates TLSDISABLE_HTTPS=trueExternal nginx, Traefik, or HAProxy handles TLS and forwards plain HTTP to the container. Use for enterprise environments with centralized certificate management.
Chapter 5

Pre-Installation: Host Preparation (Ubuntu Reference Path)

Before installing Docker or LabLynx One, prepare the Linux host: update the OS, configure the hostname, set up the firewall, and create the required data directories. This chapter documents the Ubuntu Server + Docker path, which is LabLynx's standard reference deployment; see the note below for RHEL/Rocky + Podman or Kubernetes alternatives.

Other Supported Platforms

LabLynx One's underlying platform supports any 64-bit GNU/Linux host with Docker, Podman, or Kubernetes. Podman is recommended on RHEL/Rocky Linux hosts (substitute firewalld commands for ufw below, and podman/podman-compose for the Docker commands in Chapter 6). Kubernetes deployments are recommended for large or managed environments and follow a different manifest-based setup outside the scope of this reference path — contact LabLynx support for a Kubernetes deployment guide.

Before You Begin
  • A 64-bit Ubuntu Server 24.04 LTS system with root (sudo) access.
  • A fully qualified domain name (FQDN) pointing to your server's public IP.
  • Outbound internet connectivity on port 443 (HTTPS).
  • At least 4 GB RAM, 4 CPU cores, and 100 GB available disk space.

5.1 Update the Operating System

# Update the package index and upgrade all installed packages sudo apt-get update sudo apt-get upgrade -y # Reboot if the kernel was updated sudo reboot # After reboot, verify the Ubuntu version lsb_release -a # Expected: Ubuntu 24.04.x LTS Noble Numbat # Verify architecture (must be x86_64 / amd64) uname -m # Expected: x86_64

5.2 Configure the Hostname and DNS

# Set the hostname (replace elab.yourlab.com with your actual FQDN) sudo hostnamectl set-hostname elab.yourlab.com # Verify hostname -f # Expected: elab.yourlab.com # Add to /etc/hosts (recommended for local resolution fallback) echo '127.0.1.1 elab.yourlab.com' | sudo tee -a /etc/hosts # Verify DNS resolves from external — run from your local machine: # nslookup elab.yourlab.com → should return your server's public IP

5.3 Configure the Firewall (ufw)

# Enable ufw sudo ufw enable # Allow SSH first — prevents locking yourself out sudo ufw allow 22/tcp # Allow HTTPS (required) sudo ufw allow 443/tcp # Allow HTTP (required for Let's Encrypt HTTP-01 challenge) sudo ufw allow 80/tcp sudo ufw reload sudo ufw status verbose
Important

Docker manages its own iptables rules and bypasses ufw. Docker-exposed ports are accessible even if ufw would block them. Fix this by restricting Docker port bindings to 127.0.0.1 and using a reverse proxy, or install the ufw-docker package. See Section 10.3.

5.4 Create the LabLynx One Data Directories

# Create the parent data directory sudo mkdir -p /var/elabftw # Create subdirectories for uploads and MySQL data sudo mkdir -p /var/elabftw/web sudo mkdir -p /var/elabftw/mysql # Set correct ownership — the container runs as nginx user (UID 101) sudo chown -R 101:101 /var/elabftw/web # Verify ls -la /var/elabftw/ # Expected: # drwxr-xr-x nginx nginx /var/elabftw/web # drwxr-xr-x root root /var/elabftw/mysql
Note

If your uploads directory is on an NFS mount with enforced UIDs, adjust ELABFTW_USERID and ELABFTW_GROUPID environment variables in docker-compose.yml to match the NFS-imposed ownership.

Chapter 6

Installing Docker Engine and Docker Compose

Install Docker Engine and the Docker Compose plugin from Docker's official apt repository. Never use the snap-packaged version.

Important

Do NOT install Docker via sudo snap install docker. The snap-packaged Docker causes permission and volume mounting issues with LabLynx One. Always install from the official Docker apt repository as described below.

6.1 Remove Conflicting Packages

for pkg in docker.io docker-doc docker-compose docker-compose-v2 \ podman-docker containerd runc; do sudo apt-get remove -y $pkg 2>/dev/null || true done

6.2 Add the Docker Official APT Repository

# Install prerequisites sudo apt-get install -y ca-certificates curl gnupg lsb-release # Create the Docker keyring directory sudo install -m 0755 -d /etc/apt/keyrings # Download and store Docker's official GPG signing key sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the Docker stable repository to apt sources echo \ "deb [arch=$(dpkg --print-architecture) \ signed-by=/etc/apt/keyrings/docker.asc] \ https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update

6.3 Install Docker Engine and Compose Plugin

sudo apt-get install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin # Verify Docker Engine is installed and running sudo docker version # Expected: Client and Server showing Docker CE 27.x or later # Verify Docker Compose plugin (V2) docker compose version # Expected: Docker Compose version v2.x.x sudo systemctl status docker # Expected: Active: active (running)

6.4 Configure Docker to Start on Boot

sudo systemctl enable docker sudo systemctl enable containerd # Verify sudo systemctl is-enabled docker # Expected: enabled

6.5 (Optional) Allow Non-Root Docker Access

# Add your user to the docker group (replace 'ubuntu' with your username) sudo usermod -aG docker ubuntu newgrp docker # Test non-root Docker access docker run --rm hello-world # Expected: 'Hello from Docker!' message
Caution

Adding a user to the docker group is effectively equivalent to giving them root access to the host system. Only add trusted administrators in production environments.

6.6 Install elabctl (Preview)

elabctl is the command-line tool that manages the full LabLynx One lifecycle: initial configuration, starting/stopping, backups, and updates. Chapter 7 covers it in full; the quick install is:

# Download elabctl and make it executable curl -sL https://get.elabftw.net -o elabctl && chmod +x elabctl # Move it into your PATH sudo mv elabctl /usr/local/bin/ # Verify elabctl help
Chapter 7

LabLynx One Installation

Install and configure LabLynx One using elabctl (the recommended path), pull container images, initialize the database, and verify the installation. A manual, elabctl-free alternative is included at the end of this chapter for environments that prefer to manage docker-compose.yml directly.

7.1 Install elabctl

elabctl is the command-line tool that manages the full lifecycle of an LabLynx One install: initial configuration, starting/stopping services, database initialization, backups, and updates. It is a plain bash script — not strictly required, but strongly recommended.

# Download elabctl and make it executable curl -sL https://get.elabftw.net -o elabctl && chmod +x elabctl # Move it into your PATH sudo mv elabctl /usr/local/bin/ # Verify elabctl help

7.2 Run the Configuration Wizard

The elabctl install wizard walks you through the initial configuration and writes the result to /etc/elabftw.yml by default (a single Docker Compose file that also contains LabLynx One's environment configuration).

sudo elabctl install

After the wizard completes, open the generated file and review it — it is heavily commented to help with further configuration (persistent storage paths, TLS certificates, ports, reverse proxy settings, etc.):

sudo nano /etc/elabftw.yml
VariableServiceSet To
DB_PASSWORDwebA strong random password (the wizard generates one by default)
SITE_URLwebhttps://elab.yourlab.com
PHP_TIMEZONE / TZwebYour local timezone (e.g., America/Chicago)
SERVER_NAMEwebelab.yourlab.com (without https://)
ENABLE_LETSENCRYPTwebtrue (recommended for public servers)
MYSQL_ROOT_PASSWORDmysqlA different strong random password
MYSQL_PASSWORDmysqlMust exactly match DB_PASSWORD above
Important

The DB_PASSWORD value in the web service environment must exactly match the MYSQL_PASSWORD value in the mysql service environment. If these differ, the web container cannot connect to the database and LabLynx One will not start.

7.3 Launch Services

# Pull images and start containers in detached mode sudo elabctl start # same as: docker compose -f /etc/elabftw.yml up -d # Monitor startup logs (Ctrl+C to stop watching) sudo docker compose -f /etc/elabftw.yml logs -f

7.4 Initialize the Database

After the first start, install the database structure:

sudo elabctl initialize # same as: docker exec -it elabftw bin/init db:install # Expected output: # [OK] Database successfully initialized.

7.5 Verify Installation

# Check container health status sudo docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' # Check nginx is serving correctly curl -k https://localhost/ # Expected: HTML content (the LabLynx One login page) # Check that the API endpoint is accessible curl -k https://localhost/api/v2/info # Expected: JSON response with LabLynx One version info # Lightweight monitoring endpoints (no auth required) curl -k https://localhost/healthcheck # 204 if nginx OK curl -k https://localhost/php-ping # 200 if php-fpm OK curl -k https://localhost/healthcheck.php # 200 + "ok" if nginx + php-fpm + MySQL all OK

7.6 First Login and SysAdmin Setup

  1. Navigate to https://elab.yourlab.com in a browser. Accept the certificate warning if Let's Encrypt has not yet issued the certificate.
  2. On the registration page, create your first account. The first account registered is automatically granted SysAdmin privileges.
  3. After logging in as SysAdmin, navigate to User Avatar → Sysconfig to configure email (SMTP settings) — this is required before users can reset passwords or receive notifications — create your first team, and configure the timestamping service (TSA).
  4. Create your first Team Admin: Admin Panel → Users → promote the first researcher to Admin.
  5. Invite additional users via Admin Panel → Users → Add User.

7.7 Manual Alternative (Without elabctl)

If you prefer not to install elabctl, you can obtain a pre-populated Docker Compose configuration file directly and manage it with plain docker compose commands:

# Get a docker-compose.yml pre-populated with a generated SECRET_KEY and DB_PASSWORD curl -so docker-compose.yml "https://get.elabftw.net/?config" # Edit as needed, then start the same way elabctl would: docker compose up -d docker exec -it elabftw bin/init db:install

The complete annotated configuration below reflects the same variables the wizard would generate, for reference or for environments that manage configuration via tools like Ansible:

# docker-compose.yml — LabLynx One Production Configuration (manual/reference) name: elabftw networks: elabftw-net: services: web: image: elabftw/elabimg:stable restart: always container_name: elabftw depends_on: mysql: condition: service_healthy security_opt: - no-new-privileges:true cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID - FOWNER - DAC_OVERRIDE environment: # MySQL Connection - DB_HOST=mysql - DB_PORT=3306 - DB_NAME=elabftw - DB_USER=elabftw - DB_PASSWORD=CHANGE_THIS_STRONG_PASSWORD # PHP - PHP_TIMEZONE=America/Chicago - TZ=America/Chicago - PHP_MAX_CHILDREN=50 - PHP_MAX_EXECUTION_TIME=120 - MAX_PHP_MEMORY=1G - MAX_UPLOAD_SIZE=100M # LabLynx One - SECRET_KEY=GENERATED_DURING_DOWNLOAD - SITE_URL=https://elab.yourlab.com # nginx / TLS - SERVER_NAME=elab.yourlab.com - DISABLE_HTTPS=false - ENABLE_LETSENCRYPT=true # Auto-maintenance - AUTO_DB_INIT=false - AUTO_DB_UPDATE=false ports: - '443:443' - '80:80' # needed for Let's Encrypt HTTP-01 challenge volumes: - /var/elabftw/web:/elabftw/uploads - /etc/letsencrypt:/ssl networks: - elabftw-net mysql: image: mysql:8.4 restart: always container_name: mysql healthcheck: test: "/usr/bin/mysql --user=$$MYSQL_USER --password=$$MYSQL_PASSWORD --execute 'SHOW DATABASES;'" interval: 5s timeout: 5s retries: 42 cap_drop: - AUDIT_WRITE - MKNOD - SYS_CHROOT - SETFCAP - NET_RAW cap_add: - SYS_NICE environment: - MYSQL_ROOT_PASSWORD=CHANGE_THIS_ROOT_PASSWORD - MYSQL_DATABASE=elabftw - MYSQL_USER=elabftw - MYSQL_PASSWORD=CHANGE_THIS_STRONG_PASSWORD - TZ=America/Chicago volumes: - /var/elabftw/mysql:/var/lib/mysql expose: - '3306' networks: - elabftw-net
Note

Whichever path you use, the underlying container image (elabftw/elabimg) and database (MySQL, not MariaDB) are identical. elabctl only changes how you manage the lifecycle around them — it does not change the application itself.

Chapter 8

Post-Installation Configuration

Configure automatic startup on boot, set up automated backups, and configure log rotation.

8.1 Configure Automatic Container Restart on Boot

Note

Because the compose file sets restart: always on both services, Docker will already restart the containers automatically whenever the Docker daemon starts — which is why Chapter 6.4 enables docker and containerd at boot. The systemd unit below is optional and mainly useful if you want an explicit, named systemd service to start/stop/monitor alongside other host services.

# Create an (optional) systemd service for LabLynx One sudo tee /etc/systemd/system/elabftw.service > /dev/null << 'EOF' [Unit] Description=LabLynx One Docker Compose Service Requires=docker.service After=docker.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/docker compose -f /etc/elabftw.yml up -d ExecStop=/usr/bin/docker compose -f /etc/elabftw.yml down TimeoutStartSec=0 [Install] WantedBy=multi-user.target EOF sudo systemctl enable elabftw sudo systemctl daemon-reload

8.2 Set Up Automated Backups

Important

Store backup copies on a separate physical or network location. A backup stored on the same disk as the application provides no protection against disk failure. Use offsite storage: S3, Azure Blob, Google Cloud Storage, NFS, or a separate physical backup appliance.

Option A: elabctl Backup (uses mysqldump + borgbackup)

The MySQL database is dumped via mysqldump (bundled in the mysql container); uploaded files are backed up via borgbackup, which must be installed and configured first. Note that your configuration file (/etc/elabftw.yml) is deliberately not included in elabctl backup — back it up separately (e.g., with Ansible or your configuration-management tool of choice) since it contains secrets like SECRET_KEY.

# Install borgbackup, then initialize a repository (local or remote/ssh path) sudo apt-get install -y borgbackup borg init -e repokey-blake2 /path/to/elabftw-borg-repo # Place elabctl's config file (specifies the repo path, retention, etc.) sudo curl -so /root/.config/elabctl.conf \ https://raw.githubusercontent.com/elabftw/elabctl/master/elabctl.conf # edit /root/.config/elabctl.conf to point at your repo # Test manually sudo elabctl backup # full backup: mysqldump + borgbackup sudo elabctl mysql-backup # database only sudo elabctl borg-backup # uploaded files only # Schedule daily backups at 4:00 AM sudo tee /etc/cron.d/elabftw-backup > /dev/null << 'EOF' 0 4 * * * root /usr/local/bin/elabctl backup >> /var/log/elabftw-backup.log 2>&1 EOF
Note

Even with automated backups, keep multiple layers: a full VM/host snapshot, the mysqldump, the borg archive, and periodic filesystem snapshots. Test restores regularly — a backup that has never been restored is not a verified backup.

Option B: Manual mysqldump + rsync

# Create backup script at /usr/local/bin/elab-backup.sh sudo tee /usr/local/bin/elab-backup.sh > /dev/null << 'BACKUPEOF' #!/bin/bash BACKUP_DIR=/backup/elabftw DATE=$(date +%Y-%m-%d) mkdir -p ${BACKUP_DIR}/${DATE} # 1. Dump MySQL database docker exec mysql mysqldump \ --user=elabftw --password=YOUR_DB_PASSWORD \ --single-transaction --routines --triggers elabftw \ | gzip > ${BACKUP_DIR}/${DATE}/elabftw-db.sql.gz # 2. Sync uploaded files rsync -av --delete /var/elabftw/web/ ${BACKUP_DIR}/${DATE}/uploads/ # 3. Copy configuration cp /etc/elabftw.yml ${BACKUP_DIR}/${DATE}/docker-compose.yml.bak # 4. Remove backups older than 30 days find ${BACKUP_DIR} -maxdepth 1 -type d -mtime +30 -exec rm -rf {} + echo "Backup completed: ${BACKUP_DIR}/${DATE}" BACKUPEOF sudo chmod +x /usr/local/bin/elab-backup.sh echo '0 2 * * * root /usr/local/bin/elab-backup.sh >> /var/log/elab-backup.log 2>&1' | \ sudo tee /etc/cron.d/elab-backup

8.3 Configure Log Rotation

# Create logrotate config for Docker container logs sudo tee /etc/logrotate.d/docker-elabftw > /dev/null << 'EOF' /var/lib/docker/containers/*/*-json.log { rotate 7 daily compress delaycompress missingok copytruncate } EOF # Configure Docker daemon log rotation globally sudo tee /etc/docker/daemon.json > /dev/null << 'EOF' { "log-driver": "json-file", "log-opts": { "max-size": "50m", "max-file": "7" } } EOF sudo systemctl restart docker sudo docker compose -f /etc/elabftw.yml up -d

8.4 Authentication Options

LabLynx One supports four authentication mechanisms, configured from the Sysconfig Panel. It's recommended to enable only one and hide the others so users aren't confused about which to use.

MethodDescription
LocalEmail + password stored in the LabLynx One database. Enabled by default.
SAMLFederate authentication to one or more Identity Providers (IdP).
LDAPVerify credentials against an LDAP directory service.
ExternalTrust request headers set by upstream middleware (e.g., Apache's auth_mellon).
Tip

If you disable Local authentication and later get locked out because SAML/LDAP fails, connect to the MySQL container and run: update config set conf_value = '1' where conf_name = 'local_auth_enabled'; — this re-enables the local login form so you can get back in.

8.5 Optional: S3-Compatible Upload Storage

By default, uploaded files are stored on the /var/elabftw/web bind mount. As an alternative, LabLynx One can store uploads in any S3-compatible bucket (AWS S3, Scaleway, MinIO, etc.).

# Add to the web service environment in /etc/elabftw.yml - ELAB_AWS_ACCESS_KEY=your_access_key - ELAB_AWS_SECRET_KEY=your_secret_key # Then configure bucket name, region, and endpoint from the # Sysconfig Panel > Uploads tab, and test by uploading a file. # To migrate existing local uploads into the bucket after configuring: sudo docker exec -it elabftw bin/console uploads:migrate

8.6 Monitoring Endpoints

The container exposes several unauthenticated and Basic-Auth-protected endpoints useful for uptime monitoring and metrics collection:

EndpointAuthPurpose
/healthcheckNone204 if nginx is up
/php-pingNone200 if php-fpm is up
/healthcheck.phpNone200 + "ok" if nginx, php-fpm, and MySQL are all reachable
/php-statusBasic (user elabftw, password = STATUS_PASSWORD)PHP-FPM pool metrics
/nginx-statusBasicNginx status module metrics
/metricsBasicOpenMetrics 1.0 endpoint (experiment/upload counts, etc.) for Prometheus-style collectors
Note

If STATUS_PASSWORD is not set, a random unknown password is generated and these protected endpoints are effectively disabled. None of these endpoints produce access-log entries.

Chapter 9

Updating LabLynx One

LabLynx One updates are distributed as new Docker image versions. Always read the release notes and back up before updating.

9.1 Standard Update Procedure (with elabctl)

  1. Check your current version — shown in the bottom right of every page — and read the release notes for the target version: https://github.com/elabftw/elabftw/releases/latest
  2. Backup first: sudo elabctl backup — verify completion before proceeding.
  3. Update: sudo elabctl update — this pulls the new image, recreates the container, and is the single recommended command if elabctl is installed.
  4. Run the database migration: sudo docker exec -it elabftw bin/console db:update
Note

If you free up disk space is a concern after several updates, docker system prune -a removes old, unused images.

9.2 Standard Update Procedure (without elabctl)

  1. Backup first using your chosen mysqldump/rsync procedure (Chapter 8.2, Option B) — verify completion.
  2. Pull the latest stable image: sudo docker compose -f /etc/elabftw.yml pull
  3. Recreate containers: sudo docker compose -f /etc/elabftw.yml down then sudo docker compose -f /etc/elabftw.yml up -d
  4. Run database migration: sudo docker exec -it elabftw bin/console db:update
Note

If you have pinned a specific version tag (e.g., elabftw/elabimg:5.6.0), update the tag in /etc/elabftw.yml before pulling. LabLynx recommends using stable (or latest) for automatic minor updates, and pinning a specific version for strictly change-controlled environments.

9.3 Pinning a Specific Version

# In /etc/elabftw.yml, change: image: elabftw/elabimg:stable # To a specific released version, e.g.: image: elabftw/elabimg:5.6.0 sudo docker compose -f /etc/elabftw.yml pull sudo docker compose -f /etc/elabftw.yml up -d sudo docker exec -it elabftw bin/console db:update

9.4 Very Old Installations

If you are updating an installation that predates the current schema conventions, the db:update command chain has special-case commands for very old versions:

If you are onRun this once, before continuing normal updates
< 2.0.7 (Dec 2018)Update as soon as possible; very old and no longer directly supported
< 3.0.0 (Apr 2019)bin/console db:updateto3
< 3.4.0 (Mar 2020)bin/console db:updateTo34
Note

db:revert XYZ can be used to revert the changes made by a specific migration schema, and --force ignores errors during migration — only use --force if you understand exactly why the error occurred.

9.5 Rollback Procedure

# Stop current containers sudo docker compose -f /etc/elabftw.yml down # Restore database from backup zcat /backup/elabftw/2026-06-01/elabftw-db.sql.gz | \ sudo docker exec -i mysql mysql \ --user=elabftw --password=YOUR_DB_PASSWORD elabftw # Restore uploaded files sudo rsync -av --delete /backup/elabftw/2026-06-01/uploads/ /var/elabftw/web/ # Edit the config file — change image tag back to the previous version sudo nano /etc/elabftw.yml # Change: image: elabftw/elabimg:<previous version> sudo docker compose -f /etc/elabftw.yml up -d
Chapter 10

Security Hardening

Recommended hardening steps for all production deployments — essential for regulated environments where data integrity and access control are compliance requirements.

10.1 SSH Security

sudo nano /etc/ssh/sshd_config # Recommended settings: PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys X11Forwarding no MaxAuthTries 3 sudo systemctl restart sshd # Verify SSH still works in a separate terminal before closing current session

10.2 Install fail2ban

sudo apt-get install -y fail2ban sudo tee /etc/fail2ban/jail.local > /dev/null << 'EOF' [DEFAULT] bantime = 3600 findtime = 600 maxretry = 5 backend = auto [sshd] enabled = true port = 22 logpath = /var/log/auth.log maxretry = 3 [nginx-http-auth] enabled = true filter = nginx-http-auth port = http,https logpath = /var/log/nginx/error.log EOF sudo systemctl enable fail2ban sudo systemctl start fail2ban sudo fail2ban-client status

10.3 Docker and ufw Integration

# Option A: Restrict Docker port binding to localhost only # In docker-compose.yml, change ports: section from: ports: - '443:443' # To: ports: - '127.0.0.1:443:443' # Option B: Install ufw-docker (fixes Docker/ufw iptables integration) sudo wget -O /usr/local/bin/ufw-docker \ https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker sudo chmod +x /usr/local/bin/ufw-docker sudo ufw-docker install sudo ufw-docker allow elabftw 443/tcp sudo ufw-docker allow elabftw 80/tcp sudo ufw reload

10.4 File System Security

# Uploads directory — owned by nginx user (UID 101) sudo chown -R 101:101 /var/elabftw/web sudo chmod -R 750 /var/elabftw/web # MySQL data directory — owned by Docker mysql container sudo chown -R 999:999 /var/elabftw/mysql sudo chmod -R 750 /var/elabftw/mysql # Protect the docker-compose.yml (contains passwords) sudo chown root:root /etc/elabftw.yml sudo chmod 600 /etc/elabftw.yml # Protect the backup script (contains database password) sudo chown root:root /usr/local/bin/elab-backup.sh sudo chmod 700 /usr/local/bin/elab-backup.sh

10.5 Enable Automatic Security Updates

sudo apt-get install -y unattended-upgrades # Enable security updates sudo dpkg-reconfigure -plow unattended-upgrades # Configure automatic reboot if needed sudo tee -a /etc/apt/apt.conf.d/50unattended-upgrades > /dev/null << 'EOF' Unattended-Upgrade::Automatic-Reboot "true"; Unattended-Upgrade::Automatic-Reboot-Time "03:00"; EOF

10.6 TLS Security Configuration Reference

ParameterConfiguration
TLS ProtocolsTLSv1.2 and TLSv1.3 only. TLS 1.0 and 1.1 are disabled.
Cipher SuitesModern AEAD ciphers (AES-GCM, ChaCha20-Poly1305). Prioritizes forward secrecy.
HSTSHTTP Strict Transport Security header enforces HTTPS on subsequent browser visits.
OCSP StaplingCertificate revocation status cached by nginx for faster TLS handshakes.
Session CacheTLS session resumption cache enabled for performance.
Security HeadersX-Frame-Options: SAMEORIGIN, X-Content-Type-Options: nosniff, X-XSS-Protection, Content-Security-Policy.
Chapter 11

Monitoring and Health Checks

Commands and techniques for monitoring container health, PHP-FPM performance, database size, and disk utilization.

11.1 Container Health Monitoring

# Check container status and health sudo docker ps # Detailed health check status sudo docker inspect --format '{{.Name}} {{.State.Health.Status}}' $(sudo docker ps -q) # View recent logs from the web container sudo docker logs elabftw --tail 50 # View real-time logs (Ctrl+C to stop) sudo docker logs -f elabftw # Monitor container resource usage sudo docker stats --no-stream # Output: CPU%, MEM USAGE, NET I/O, BLOCK I/O for each container

11.2 PHP-FPM and Nginx Status Endpoints

Enable the /php-status, /nginx-status, and /metrics endpoints by setting STATUS_PASSWORD in /etc/elabftw.yml under the web service (see also Chapter 8.6 for the unauthenticated /healthcheck family of endpoints):

- STATUS_PASSWORD=your-monitor-password
# Query the status endpoint after restarting the container curl -u elabftw:your-monitor-password \ https://elab.yourlab.com/php-status # Key metrics to watch: # active processes — compare to max_children; if consistently at max, increase PHP_MAX_CHILDREN # max children reached — if > 0, the pool was exhausted; increase PHP_MAX_CHILDREN # slow requests — requests exceeding request_slowlog_timeout # Nginx process metrics curl -u elabftw:your-monitor-password https://elab.yourlab.com/nginx-status # OpenMetrics 1.0 endpoint (experiment counts, upload counts, etc.) for Prometheus-style collectors curl -u elabftw:your-monitor-password https://elab.yourlab.com/metrics
Note

None of the monitoring endpoints (/healthcheck, /php-ping, /healthcheck.php, /php-status, /nginx-status, /metrics) produce access-log entries, so polling them frequently won't clutter your logs.

11.3 Database Monitoring

# Connect to MySQL for manual inspection sudo docker exec -it mysql mysql \ --user=elabftw --password=YOUR_DB_PASSWORD elabftw # Inside MySQL prompt: SHOW TABLE STATUS; -- View all tables and their sizes SHOW PROCESSLIST; -- View current queries SHOW STATUS LIKE 'connections'; -- View connection count # Check database size sudo docker exec -it mysql mysql \ --user=elabftw --password=YOUR_DB_PASSWORD \ --execute="SELECT table_schema AS 'Database', \ ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)' \ FROM information_schema.tables GROUP BY table_schema;"

11.4 Disk Space Monitoring

df -h /var/elabftw # Overall disk usage du -sh /var/elabftw/web # Size of uploads directory du -sh /var/elabftw/mysql # Size of MySQL data directory # Set up a disk usage alert cron job (email when disk > 80%) sudo tee /usr/local/bin/check-disk.sh > /dev/null << 'EOF' #!/bin/bash THRESHOLD=80 USAGE=$(df /var/elabftw | awk 'NR==2 {print $5}' | tr -d '%') if [ "$USAGE" -gt "$THRESHOLD" ]; then echo "WARNING: /var/elabftw disk usage is ${USAGE}%" | \ mail -s "LabLynx One Disk Alert" admin@yourlab.com fi EOF sudo chmod +x /usr/local/bin/check-disk.sh echo '0 * * * * root /usr/local/bin/check-disk.sh' | sudo tee /etc/cron.d/disk-check
Chapter 12

Troubleshooting

Solutions for the most common installation and operational issues.

IssueSymptomResolution
Containers fail to startdocker compose logs shows connection errorVerify DB_PASSWORD matches MYSQL_PASSWORD. Wait 30 seconds for MySQL healthcheck. Check docker compose ps for healthy status on mysql container.
Cannot access HTTPScurl: (7) Failed to connectVerify port 443 is open: sudo ufw status. Check Docker port binding: sudo docker ps shows 0.0.0.0:443. Check nginx: sudo docker logs elabftw | grep nginx.
Certificate error in browserSSL_ERROR_RX_RECORD_TOO_LONGDISABLE_HTTPS=true but accessing via HTTPS. If using a reverse proxy, ensure it handles TLS and forwards plain HTTP to the container.
Let's Encrypt certificate failsCertbot log shows challenge failedPort 80 must be open and accessible from the internet for HTTP-01 validation. SERVER_NAME must exactly match your DNS FQDN.
500 Internal Server ErrorBrowser 500, nginx logs show PHP-FPM errorCheck PHP-FPM logs: sudo docker exec elabftw cat /var/log/php-fpm.log. Common causes: insufficient MAX_PHP_MEMORY, failed DB connection, bad file permissions on /var/elabftw/web.
Database initialization failsbin/init db:install returns errorVerify MySQL is running and healthy: sudo docker ps. Check credentials in docker-compose.yml. Test connection: sudo docker exec -it mysql mysql -u elabftw -p elabftw.
Uploads permission deniedPHP writes fail, attachments don't saveRun: sudo chown -R 101:101 /var/elabftw/web. The nginx user (UID 101) must own the uploads directory.
Container keeps restartingdocker ps shows restarting statusCheck logs immediately: sudo docker logs elabftw --tail 20. Common cause: environment variable misconfiguration or missing SECRET_KEY.
High memory usagedocker stats shows >90% memoryReduce PHP_MAX_CHILDREN or MAX_PHP_MEMORY. Add physical RAM. Check for memory leaks via consistent growth over hours in docker stats.
MySQL slow to startWeb container shows 'waiting for mysql'The healthcheck retries 42 times × 5s = 3.5 minutes total. If MySQL still doesn't start, check: sudo docker logs mysql. Verify /var/elabftw/mysql has correct permissions and sufficient disk space.

12.1 Useful Diagnostic Commands

# View all container logs with timestamps sudo docker compose -f /etc/elabftw.yml logs --timestamps # Enter the web container shell for direct debugging sudo docker exec -it elabftw /bin/sh # Enter the MySQL container sudo docker exec -it mysql /bin/bash # Check nginx configuration for syntax errors sudo docker exec -it elabftw nginx -t # Check PHP configuration sudo docker exec -it elabftw php --ini # View LabLynx One system info curl -k https://localhost/api/v2/info # Clear application cache sudo docker exec -it elabftw bin/init tools:clearcache # Check for available database updates sudo docker exec -it elabftw bin/console db:update # Restart nginx and PHP services inside the container (no downtime) sudo docker exec -it elabftw s6-svc -r /run/service/nginx sudo docker exec -it elabftw s6-svc -r /run/service/php-fpm
Documentation Set

LabLynx One Security & Compliance Guide

For IT reviewers, security officers, and compliance teams evaluating LabLynx One.

Preface

How to Use This Guide

This guide is written for the people who must answer a hard question before LabLynx One can be deployed: is this system trustworthy enough to hold our laboratory's records? It is intended for IT reviewers, information security officers, compliance managers, and procurement teams conducting a vendor security assessment.

For regulated laboratories, a software vendor's security posture and compliance certifications are not background information — they are vendor qualification criteria. A laboratory cannot deploy a system to generate regulated records if the vendor operating that system cannot demonstrate adequate security controls, independent verification of those controls, and alignment with the regulatory frameworks the laboratory itself must satisfy.

LabLynx maintains a formal, documented information security program that is independently audited annually and aligned with US federal government security standards. The chapters that follow describe each component of that program in the detail required for a vendor qualification review, security questionnaire response, or regulatory audit.

Scope of This Guide

This guide covers LabLynx One, the sciCloud.net hosting platform that supports it, and the organizational security controls LabLynx maintains as the operating company. Pricing is intentionally excluded — current pricing is available at elabeln.com/pricing.

Chapter 1

Security Architecture & Shared Responsibility

LabLynx One's security architecture rests on Amazon Web Services (AWS) infrastructure, LabLynx's own operational controls, and a clearly defined division of responsibility between the two.

Infrastructure Security — AWS Foundation

LabLynx's sciCloud.net platform is built on AWS US East/West infrastructure. AWS itself carries SSAE 18 SOC 1, SOC 2, and SOC 3 certifications covering physical data centers, hardware, hypervisor virtualization, network backbone, and managed services infrastructure. AWS's SOC 3 report — covering Security, Availability, Confidentiality, and Privacy Trust Services Criteria for the period April 1, 2024 through March 31, 2025 and spanning 185 in-scope services — provides publicly available, independently audited evidence of the physical and infrastructure security controls underpinning every LabLynx One deployment.

The Shared Responsibility Model

AWS secures the cloud infrastructure itself — physical data centers, hypervisors, and managed service infrastructure. LabLynx is responsible for everything built and operated on top of that infrastructure. This is not a gap; it is how cloud security is designed to work, and LabLynx explicitly addresses every layer AWS does not cover.

AWS
Physical Data Centers & Hardware

SOC 3 certified physical access controls, environmental controls, and hardware disposal. LabLynx One clients inherit this certification.

AWS
Hypervisor & Virtualization Layer

SOC 3 certified hypervisor isolation, patching, and virtual machine separation between client environments.

AWS
Network Infrastructure (Backbone)

DDoS protection (AWS Shield), Web Application Firewall (WAF), and GuardDuty threat detection at the network layer.

LabLynx
AWS IAM Policies & Configuration

Least-privilege IAM policies; MFA on all privileged accounts; semi-annual access reviews enforcing ongoing least-privilege.

LabLynx
Operating System Patching

Scheduled maintenance with weekly vulnerability reviews via AlienVault USM; emergency patching for critical vulnerabilities.

LabLynx
Application Security

Secure SDLC practices; OWASP Top 10 controls; annual penetration testing performed as part of the Trustnet NIST 800-53 audit.

LabLynx
Application Access Controls & RBAC

Role-based access control enforced at the application level; semi-annual access reviews; least-privilege enforcement per user, group, and project.

Shared
Encryption Key Management

AES-256 encryption at rest via AWS KMS; TLS 1.2 or higher for all data in transit. LabLynx configures and manages encryption policy; AWS KMS provides the key management infrastructure.

LabLynx
Backup & Recovery

Automated backups with tested RTO/RPO objectives; documented contingency plan reviewed annually; geographically distributed secondary storage.

LabLynx
Security Awareness & Training

Mandatory security training at onboarding and at every policy update; randomized phishing simulations; training records retained.

Deployment Options

Every LabLynx One deployment uses exactly one of two hosting models. There is no third "client-hosted cloud" option.

Standard
sciCloud.net GxP Validated Cloud

LabLynx's managed, AWS-based hosting environment. Standard for all client deployments unless a laboratory specifically requires self-hosting.

  • AES-256 encryption at rest; TLS 1.2+ in transit
  • Managed backups with tested restore
  • Dedicated GxP-validated tenancy option available
Alternative
LabServer — Client-Hosted

Deployment on the client's own infrastructure, including on-premises or air-gapped environments, for organizations with full data sovereignty requirements.

  • Air-gapped deployment supported
  • Client-managed network and data center
  • Same application security controls as sciCloud.net
Chapter 2

Identity, Access & Authentication

Access to LabLynx One is governed by role-based access control, single sign-on integration, and a formal review cycle that keeps access privileges aligned to actual need.

Role-Based Access Control

LabLynx One implements role-based access control (RBAC) at every level: SysAdmin, Admin, User, and Read-Only, with further refinement at the team and project level. Administrative privileges are reduced and controlled on all assets, and separation of duties is enforced. Every access event — login, logout, failed login attempt, and permission change — is logged in the audit trail described in Chapter 3.

Single Sign-On & Identity Access Management

LabLynx One includes LabLynx OpenSocial, a SAML-based single sign-on (SSO) and identity access management (IAM) platform that integrates with institutional identity providers including Microsoft Active Directory, Okta, OneLogin, and Azure AD. For each organization using OpenSocial-based SSO, a dedicated instance is created and is manageable by the client's own administrator.

ControlImplementation
Multi-Factor AuthenticationEnforced on all privileged accounts; available for standard user accounts via SSO provider policy
Password PolicyConfigurable complexity, history, and lockout controls; client-configurable session length and login banners
Access ReviewsSemi-annual review of access privileges across all information assets to confirm continued need
OffboardingAccess privileges revoked promptly upon employee or contractor separation, per documented offboarding procedures
Least PrivilegeGranular permission assignment at user, group, project, and site levels; no default administrative access
Client-Configurable Controls

LabLynx One is configurable by clients to meet their own access control requirements, including password complexity, password history, session length, login banners, and user account change auditing — allowing institutions to align the system with their own internal security policy rather than a fixed vendor default.

Chapter 3

Audit Trail & Data Integrity

Every action taken on an LabLynx One record is captured in an audit trail that cannot be modified or deleted by any user — including system administrators.

LabLynx One's audit trail operates at three levels:

  • Field-level changelog: Every structured metadata field change captures the original value, the new value, the timestamp, and the authenticated user who made it.
  • Body text revision history: Every save of a rich-text entry creates a versioned snapshot. Any two versions can be compared with a full diff view.
  • Access event logging: Login events, failed authentication attempts, permission changes, and administrative actions are all logged with user identity and timestamp.

ALCOA+ Data Integrity Principles

LabLynx One's design supports the ALCOA+ data integrity principles that regulators expect of electronic records: data must be Attributable, Legible, Contemporaneous, Original, and Accurate, plus Complete, Consistent, Enduring, and Available. Every entry is attributed to an authenticated individual, time-stamped at the moment of creation, and preserved in its original form alongside a complete revision history.

Part 11 RequirementLabLynx One Control
§11.10(e) — Audit trailSystem-generated, time-stamped at the server, records every create/modify/delete action, retained as a permanent part of the record
§11.10(d) — Limited accessRole-based access control at user, group, project, and site levels
§11.10(g) — Authority checksSigning requires credential re-entry at the moment of signature; a user can only sign with their own credentials
§11.100 — Unique identificationEach user account is unique to one individual; no shared credentials
Export & Review

The audit trail is available for review, export, and regulatory inspection in both human-readable (PDF) and machine-readable formats — including formatted PDF exports of a complete experiment with metadata, body text, protocol steps, attachment lists, and signature blocks, and ZIP exports for machine-readable submission.

Chapter 4

Electronic Signatures & 21 CFR Part 11

LabLynx One offers three distinct attestation tools, each suited to a different level of legal and regulatory weight.

Level 1
Electronic Signature

21 CFR Part 11-compliant e-signature requiring credential re-entry at the moment of signing. Displays the printed name of the signer, the date and time, and a mandatory, non-optional meaning of the signature per §11.50.

Level 2
RFC 3161 Timestamping

Trusted third-party timestamp authority stamping, providing independently verifiable proof that a record existed in a given state at a given time.

Level 3
Advanced Cryptographic Signature

Ed25519 public-key signatures over a SHA-256 content hash, signed with the user's private key — independently verifiable non-repudiation distinct from credential re-entry alone.

Signature Workflow & Enforcement

A configurable multi-level signature workflow supports analyst, reviewer, and approver steps. The system enforces identity at the point of signature, not only at login: there is no mechanism for one user to sign with another user's credentials, and the active session alone is insufficient — credential re-entry is required every time.

RequirementStatus
21 CFR Part 11-compliant e-signatures✓ Native across LabLynx One
Multi-level signature workflow✓ Configurable analyst/reviewer/approver
Immutable audit trail✓ Full audit logging
Revision history with reason-for-change✓ Full revision history retained
Tamper-evident, time-stamped, non-repudiable records✓ RFC 3161 timestamping available
Chapter 5

NIST SP 800-53 & Virginia SEC530

LabLynx's primary security standard is NIST Special Publication 800-53 Revision 5, implemented through the Commonwealth of Virginia's ITRM Standard SEC530, and independently audited every year.

Framework ElementDescription
Base StandardNIST SP 800-53 Rev 5 — Security and Privacy Controls for Information Systems and Organizations
State ImplementationVirginia ITRM Standard SEC530-01.2 (effective June 17, 2025) — Commonwealth-specific implementation with COV enhancements
Audit StandardVirginia ITRM Standard SEC502 — IT Security Audit Standard
NIST FoundationNIST Cybersecurity Framework (CSF) 2.0 — Identify, Protect, Detect, Respond, Recover
AuditorTrustnet, Inc. — independent, qualified IT security auditor; maintains full auditor independence per SEC502
Audit FrequencyAnnual — SEC530 mandates at least annual audit for sensitive IT systems

Control Family Coverage

The annual Trustnet assessment covers all 20 NIST SP 800-53 control families. A representative sample:

IA — Identification & Authentication
SAML SSO; MFA on privileged accounts; password controls
IR — Incident Response
Formal IR plan; dedicated IR team; annual review
AC — Access Control
RBAC; least privilege; semi-annual access reviews
CP — Contingency Planning
Documented plan; tested RTO/RPO objectives
SC — Systems & Comms Protection
TLS in transit; AES-256 at rest; network segmentation
SI — System & Information Integrity
Weekly vulnerability scanning; patch management
PS — Personnel Security
Pre-employment screening; onboarding training; access revocation
PE — Physical & Environmental
AWS SOC 3 certified; LabLynx facility access controls
RA — Risk Assessment
Annual risk assessment; risk register; Trustnet external assessment
SR — Supply Chain Risk Mgmt
AWS FedRAMP-eligible infrastructure; vendor security assessments
Why SEC530 Exceeds a Standard NIST 800-53 Baseline

Because SEC530 is a Virginia-specific implementation of NIST 800-53, LabLynx's annual audit covers Commonwealth-of-Virginia control enhancements that a generic NIST 800-53 audit alone would not require — meaning LabLynx's evidence base already exceeds what most vendor security questionnaires ask for.

Chapter 6

Incident Response & Vulnerability Management

LabLynx maintains a formal Incident Response Plan and a layered, continuous monitoring program spanning both the application layer and the AWS infrastructure layer.

Incident Response Program

ElementDetail
Incident Types CoveredVirus infections, hacker attempts, break-ins, unauthorized disclosure, service interruptions, breaches of personal information, and other security events
Threat IntelligenceThe Incident Response Team subscribes to security industry alert services to monitor threats, vulnerabilities, and incidents in real time
Breach ResponseDevOps serves as the central point of contact; a Priority Incident Request is opened and tracked through resolution upon verification
Client NotificationClients receive help desk accounts with full ticket visibility via email; direct phone or email contact is used when urgency warrants
Annual ReviewThe IR plan is reviewed and tested annually, or after any material incident

Continuous Monitoring & Vulnerability Management

ControlFrequency
AlienVault USM vulnerability scanning — all systemsAt least weekly
Asset inventory reviewEvery 30 days
AWS CloudTrail audit log reviewContinuous / automated alerting
AWS GuardDuty threat detectionContinuous / automated alerting
Access privilege reviewSemi-annually
Randomized phishing simulationsPeriodic / randomized
Trustnet independent security auditAnnually

Corrective Action Plan (CAP) Process

All Trustnet audit findings are tracked through a formal Corrective Action Plan process until complete remediation, with quarterly reporting to VDOA and CSRM per SEC530 requirements.

Step 1
Finding Identification & Risk Rating
Step 2
CAP Development (within 15 business days)
Step 3
Remediation (30–180 days by severity)
Step 4
Independent Re-Testing
Step 5
Formal Closure
Chapter 7

Data Retention, Privacy & PII/PHI

LabLynx maintains formal data governance policies covering retention, classification, and the handling of regulated personal data.

Data Retention

  • LabLynx retains all client electronic data and records for a minimum of six years unless directed otherwise by the client.
  • Clients may request adherence to their own internal data retention policies; LabLynx implements client-specified policies upon agreement.
  • Non-production environments containing PII must never leave the hosted, protected network — developers may not copy databases or application files containing PII to local devices.

HIPAA & Protected Health Information

LabLynx is a Business Associate, not a Covered Entity, under HIPAA, and executes Business Associate Agreements with covered entities accordingly. PHI data hosted on behalf of LabLynx clients is managed under those BAA obligations, with appropriate security and privacy controls maintained on the client's behalf.

GDPR Alignment

LabLynx maintains data handling, encryption, and access control practices aligned with the EU General Data Protection Regulation for organizations processing the personal data of EU residents. A formal privacy policy governing data processing practices is maintained and available upon request.

Security Policy Framework

LabLynx maintains 18 formal security policies — including Access Control, Data Management, Incident Response, Password Control, Log Management, and Disaster Recovery — reviewed and updated annually as part of the security program review cycle.

Chapter 8

Validation Support — IQ/OQ/PQ

Laboratories operating under GxP requirements do not need to write their own validation documentation from scratch.

LabLynx One includes a complete IQ, OQ, and PQ validation documentation package — written, ready to execute, and available to every customer. Organizations operating in a GxP environment can deploy the LabLynx One GxP Validated Cloud, a dedicated tenancy with controlled release cycles, aligned to GAMP 5 guidance. Your team reviews, executes, and signs the pre-written documentation rather than authoring it independently.

CapabilityStatus
IQ/OQ/PQ validation documentation package✓ Dedicated manual provided to every customer
Validation support for SaaS/cloud deployment✓ sciCloud.net GxP Validated Cloud
GAMP 5 risk-based validation alignment◐ Validation manual aligned to GxP practice
Controlled release cycle for validated tenancies✓ Dedicated GxP tenancy with managed releases
See Also

The full IQ/OQ/PQ Validation Manual, including complete installation and operational qualification protocols, follows this guide as the next manual in this documentation library.

Chapter 9

Accessibility Compliance

LabLynx One publishes a formal Voluntary Product Accessibility Template (VPAT) documenting conformance to WCAG 2.1 AA and Section 508.

CriterionStatus
Published VPAT / Accessibility Conformance Report✓ VPAT 2.5 ACR published
WCAG 2.1 AA conformance◐ Partially Supports across most criteria
Section 508 conformance◐ Partially Supports
Keyboard-only navigation◐ Partially Supports; some drag-and-drop lacks keyboard equivalents
Screen reader compatibility◐ Partially Supports (NVDA/VoiceOver spot-tested)
200% zoom / reflow support✓ Supports
Accessibility remediation roadmap✓ Prioritized roadmap published in the VPAT
Requesting the Full VPAT

The complete LabLynx One VPAT 2.5 Accessibility Conformance Report, including the full criterion-by-criterion evaluation and remediation roadmap, is available on request from LabLynx sales for institutions with formal accessibility procurement requirements.

Chapter 10

Vendor Risk Assessment — HECVAT

LabLynx supports the standard vendor security questionnaires used by academic institutions, healthcare systems, and enterprise procurement teams.

LabLynx has completed the Higher Education Community Vendor Assessment Toolkit (HECVAT) workbook — the industry-standard security questionnaire used by academic institutions to assess vendor security posture. A current, pre-filled HECVAT 4.1.5 response is maintained and available from LabLynx sales.

HECVAT and Custom Security Questionnaires

Laboratories and institutions requiring a completed HECVAT, SIG Lite, or custom security questionnaire as part of their vendor qualification process should contact LabLynx at sales@lablynx.com to request the current documentation.

Assessment TypeLabLynx Support
HECVAT Full / HECVAT Lite✓ Pre-filled workbook maintained and available on request
SIG Lite✓ Available on request
Custom institutional security questionnaires✓ Supported via direct engagement with LabLynx security contact
NDA-protected audit evidence (Trustnet report)✓ Available to clients under NDA
Chapter 11

Certifications, Attestations & Roadmap

LabLynx treats security as an ongoing program rather than a point-in-time certification, with an active roadmap toward additional independent attestations.

Certification / StandardCurrent StatusNotes
NIST SP 800-53 / Virginia SEC530 Active — Annual Annual Trustnet audit; all 20 control families; results reported to VITA/CSRM
AWS SSAE 18 SOC 2 (infrastructure) Active — AWS Applies to AWS data center infrastructure; inherited by all sciCloud.net deployments
AWS SOC 3 (public attestation) Active — AWS Publicly available; covers Security, Availability, Confidentiality, and Privacy Trust Services Criteria
HIPAA Business Associate Active BAA executed with covered entities; PHI handling per LabLynx Business Associate policies
SOC 2 Type 2 In Progress Engagement with Saltmarsh CPAs (Pensacola, FL) is in process
ISO/IEC 27001:2022 Roadmap Targeted as a follow-on to SOC 2 Type 2 completion; supports international expansion requirements
FedRAMP Future Roadmap Aligned with government customer pipeline development; LabLynx hosts on FedRAMP-eligible AWS infrastructure
What This Means for Regulated Clients

For clients completing vendor security assessments, LabLynx's annual Trustnet audit against all 20 NIST SP 800-53 control families provides independent third-party evidence of the controls in place — the highest standard of independent verification LabLynx has achieved to date, conducted annually rather than as a one-time certification.

Questions About Security & Compliance?

Our team supports vendor risk assessments, security questionnaires, NDA documentation requests, and security review calls. Contact sales@lablynx.com or support@lablynx.com, or call 866-522-5969 (866-LabLynx).

Documentation Set

LabLynx One IQ/OQ/PQ Validation Manual

21 CFR Part 11 / GAMP 5 computer system validation protocols.

Preface

About This Manual

This manual provides the Installation Qualification (IQ), Operational Qualification (OQ), and Performance Qualification (PQ) protocols for LabLynx One, structured for 21 CFR Part 11 and GAMP 5 (Category 4) computer system validation.

Approval Signatures

RoleName / TitleSignature / Date
Validation Owner[Name / Title][Signature / Date]
Quality Assurance[Name / Title][Signature / Date]
System Owner / IT[Name / Title][Signature / Date]
Department Head[Name / Title][Signature / Date]
Regulatory Affairs (if applicable)[Name / Title][Signature / Date]

Revision History

VersionDescriptionAuthor / Date
1.0Initial release — Version-agnostic baseline protocol.[Author]
[___][Description of change][Author]

Distribution List

RecipientCopy Type
QA / Regulatory AffairsControlled Copy
Validation OwnerControlled Copy
System Owner / ITControlled Copy
Department HeadControlled Copy
Training Records ArchiveUncontrolled Reference Copy
Chapter 1

Validation Overview

Establishes the purpose, scope, regulatory basis, and risk-based testing rationale for validating LabLynx One as a GAMP 5 Category 4 configurable software system.

1.1 Purpose

This document establishes the Installation Qualification (IQ), Operational Qualification (OQ), and Performance Qualification (PQ) protocols for LabLynx One, an Electronic Laboratory Notebook (ELN) system delivered by LabLynx, Inc. The purpose of this validation is to provide documented evidence that LabLynx One has been correctly installed, operates as intended within its specified functional requirements, and performs reliably in the actual user environment — in full compliance with 21 CFR Part 11 requirements for electronic records and electronic signatures.

1.2 Scope

This validation covers LabLynx One as deployed in the following configurations:

  • LabServer Deployment: On-premises installation on Ubuntu Server 24.04 LTS using Docker Engine and Docker Compose, as documented in the LabLynx One License, Technical Specifications & Installation Manual.
  • sciCloud.net® Cloud Deployment: LabLynx-managed hosted deployment on the sciCloud.net® platform (AWS-based), where LabLynx is responsible for infrastructure qualification.

The validation covers all features and functions of LabLynx One that support electronic records and electronic signatures subject to 21 CFR Part 11, including: user authentication, access control, audit trail, electronic signatures, trusted timestamping, experiment management, template enforcement, resource management, and the administrative configuration required to maintain system integrity.

1.3 Regulatory Basis

Regulation / GuidanceRelevance and Application
21 CFR Part 11FDA regulation governing electronic records and electronic signatures. This is the primary regulatory driver for this validation. All critical controls tested in the OQ are mapped to specific Part 11 subsections.
GAMP 5 (2nd Edition)Risk-based approach to computer system validation. LabLynx One is classified as GAMP 5 Category 4 (Configurable Software). This classification establishes the validation strategy: full IQ, OQ, and PQ with risk-proportionate test depth.
FDA Guidance — Part 11, ERR, ES (2003)FDA's guidance document on the scope and application of 21 CFR Part 11. This document confirms that predicate rule records documented in LabLynx One must meet all Part 11 requirements.
FDA Guidance — Computerized Systems in Clinical Investigations (1999)Applicable to any clinical investigation records maintained in LabLynx One.
ICH Q9 — Quality Risk ManagementProvides the framework for the risk assessment used to prioritize OQ test depth.
ISO/IEC 62304Referenced for software lifecycle documentation (applicable if LabLynx One is used in a medical device quality system context).

1.4 GAMP 5 Software Category Classification

LabLynx One is classified as GAMP 5 Category 4 — Configurable Software. Category 4 software is commercially available software that is configured by the customer (via templates, settings, user groups, workflows) but not custom-programmed. The implications for validation scope are:

  • IQ: Verify the software is installed as specified, with the correct version and configuration.
  • OQ: Verify all configured functions operate according to their specifications (full test coverage required per the instructions for this document).
  • PQ: Verify the configured system performs correctly in actual use under representative real-world conditions.
  • Supplier Audits: LabLynx is the supplier. The GAMP 5 framework recommends supplier assessment, which LabLynx supports through its SOC 2 compliance documentation, security policies, and technical support.

1.5 System Description

AttributeValue
System NameLabLynx One Electronic Laboratory Notebook
SupplierLabLynx, Inc., Pensacola, Florida, USA
Supplier Contactsupport@lablynx.com │ www.lablynx.com
Underlying PlatformeLabFTW (open-source ELN, Deltablot SAS, AGPL-3.0)
System Version[Record installed version: _____________________ ]
Deployment ModelLabServer (on-premises) and/or sciCloud.net® (cloud-managed)
Operating System (LabServer)Ubuntu Server 24.04 LTS (64-bit x86_64)
Container Runtime (LabServer)Docker Engine 27.x with Docker Compose plugin v2.x
DatabaseMySQL 8.4.x (containerized via Docker)
Web Server (inside container)nginx 1.26.x + PHP-FPM 8.3.x
Primary URLhttps://[your-lablynxone-domain.com]
Intended UseElectronic laboratory notebook for creation, management, and electronic signing of scientific records subject to 21 CFR Part 11 controls.
GxP ImpactHigh — Records maintained in LabLynx One may directly support regulatory submissions, clinical investigations, GMP batch records, or GLP study records.

1.6 Roles and Responsibilities

RoleResponsibility
Validation OwnerResponsible for the overall validation effort: planning, coordination, final sign-off, and maintenance. Typically a QA or Regulatory Affairs manager.
Test Executor(s)Personnel who perform the IQ, OQ, and PQ test steps and record actual results. Must be trained on LabLynx One. Must sign and date each test record at execution.
QA ReviewerReviews and approves all test protocols and completed test records. Confirms pass/fail determinations are appropriate. Signs off on the Validation Summary Report.
System Owner / IT (LabServer)Responsible for infrastructure qualification (server, OS, Docker). Executes and signs off on hardware/OS/infrastructure IQ steps.
LabLynx SupportProvides product specifications, release notes, and technical clarifications. Does not execute validation tests on behalf of the customer but may provide advisory support.
End UsersParticipate in PQ scenario execution under the supervision of the Validation Owner and QA Reviewer. Represent real-world operating conditions.

1.7 Risk Assessment and Test Depth Rationale

Per GAMP 5 and ICH Q9, the depth of testing is proportional to the risk of incorrect system function. The following risk classification drives test protocol depth in this document:

Risk LevelFunction CategoriesTesting Approach
CRITICALElectronic signatures, audit trail, session authentication, access control, record integrity (lock/immutability), trusted timestamping.Full step-by-step test scripts. Testing must confirm both the positive case (function works) and the negative case (attempt to circumvent fails).
HIGHExperiment creation/management, template enforcement, metadata fields, file attachments, export functions, user/team management, notifications.Full step-by-step test scripts. Positive-case testing required.
MEDIUMResource management, scheduler, tag management, search functions, batch actions, API authentication.Full step-by-step test scripts. Representative test cases for each function type.
LOWUI display preferences, non-compliance-affecting cosmetic settings, developer tools.Not explicitly tested in OQ. Verified as part of PQ scenarios if encountered.

1.8 Acceptance Criteria

The overall validation is considered successful when:

  • All IQ test cases receive a Pass result, or all failures have documented deviations with approved CAPAs.
  • All OQ test cases at CRITICAL or HIGH risk receive a Pass result, or all failures have documented deviations with approved CAPAs.
  • All OQ test cases at MEDIUM risk receive a Pass result, or all failures have documented deviations.
  • All PQ scenarios receive a Pass result, or all failures have documented deviations with approved CAPAs.
  • The Validation Summary Report (Section 7) is reviewed by QA and signed by all required approvers.

1.9 Deviation Handling

If any test step produces an Actual Result that does not match the Expected Result, the following procedure applies:

  • Record the actual result observed in the Actual Result column. Do not alter the Expected Result.
  • Mark the test step as FAIL in the P/F column.
  • Open a Deviation Record (Appendix D template) immediately. Assign a deviation number.
  • Classify the deviation: Critical (prevents system use for GxP records), Major (affects primary function but has a workaround), or Minor (cosmetic, does not affect GxP record integrity).
  • Initiate a CAPA if the deviation is Critical or Major. The CAPA must be approved by QA before retesting.
  • After CAPA implementation, retest the failed step(s). Document the retest result on the Deviation Record.
  • Include all deviations and their resolutions in the Validation Summary Report (Section 7).
Chapter 2

System Configuration Baseline

Captures the approved hardware, software, and configuration baseline against which the installed system is qualified. Any subsequent change requires formal change control and revalidation assessment.

Complete this section at the time of validation execution. The values recorded here become the approved configuration baseline. Any subsequent change to these values requires a formal change control and re-validation assessment.

2.1 Hardware Baseline (LabServer Deployments)

Hardware ComponentRecorded Value
Server Make / Model[ ]
CPU Architecturex86_64 (64-bit) — Cores: [ ] Threads: [ ]
Total RAM Installed[ ] GB
Operating SystemUbuntu Server 24.04 LTS (Noble Numbat)
OS Kernel Version[Record: uname -r output: ________________________________ ]
Primary Data Disk Size[ ] GB — Mount: /var/elabftw
Network InterfaceIP Address: [ ] Hostname: [ ]
Server Location / Data Center[ ]

2.2 Software Baseline

Software ComponentRecorded Version
Docker Engine Version[Record: docker version output: __________________________ ]
Docker Compose Plugin Version[Record: docker compose version output: _________________ ]
LabLynx One Image Tag[Record: docker inspect elabftw --format '{{.Config.Image}}': ______ ]
LabLynx One Image Digest (SHA256)[Record: docker inspect elabftw --format '{{.Image}}': ________ ]
MySQL Image Tag[Record: docker inspect mysql --format '{{.Config.Image}}': _______ ]
MySQL Image Digest (SHA256)[Record: docker inspect mysql --format '{{.Image}}': ____________ ]
LabLynx One Application Version[Record: curl -k https://localhost/api/v2/info | grep -i version: __ ]
PHP Version[Record: docker exec elabftw php -r 'echo PHP_VERSION;': _________ ]
nginx Version[Record: docker exec elabftw nginx -v: ___________________________ ]
MySQL Server Version[Record: docker exec mysql mysql -u elabftw -p -e 'SELECT VERSION();': __ ]

2.3 Configuration Parameter Baseline

Configuration ParameterRecorded Value
SITE_URL (docker-compose.yml)[Record value: __________________________________________ ]
SERVER_NAME[Record value: __________________________________________ ]
PHP_TIMEZONE / TZ[Record value: __________________________________________ ]
ENABLE_LETSENCRYPTtrue / false (circle one)
DISABLE_HTTPStrue / false (circle one)
PHP_MAX_CHILDREN[Record value: _________ ]
MAX_PHP_MEMORY[Record value: _________ ]
MAX_UPLOAD_SIZE[Record value: _________ ]
USE_REDIStrue / false (circle one)
AUTO_DB_INITtrue / false (circle one)
AUTO_DB_UPDATEtrue / false (circle one)
MFA Enforcement (Admin Panel)Enabled / Disabled (circle one)
SSO / LDAP ConfiguredYes / No (circle one) — Provider: [_________________ ]
RFC 3161 TSA ConfiguredProvider: [_______________] URL: [______________________ ]

2.4 Interfaces Baseline

InterfaceConfiguration Record
SMTP Email ServerHost: [_____________] Port: [____] TLS: Yes/No Auth: Yes/No
SSO / SAML Identity Provider[Provider name / URL or N/A: __________________________ ]
LDAP Directory Server[Host / Base DN or N/A: _________________________________ ]
RFC 3161 Timestamp Authority[Provider / URL: _______________________________________ ]
ELab LIMS IntegrationYes / No — API endpoint: [__________________________ ]
REST API External Clients[List active API integrations or 'None': _________________ ]
Chapter 3

Installation Qualification (IQ)

Verifies that LabLynx One has been correctly installed in the target environment and that all components match their approved specifications before Operational Qualification begins.

The Installation Qualification verifies that LabLynx One has been correctly installed in the target environment, that all components match their approved specifications, and that the system is ready for Operational Qualification testing. The IQ must be completed and approved before any OQ testing begins.

IQ-001 Host Operating System Verification

21 CFR Part 11 Reference: 21 CFR 11.10(a) — System controls to ensure record authenticity and integrity begin at the OS level.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Must be performed by IT/System Owner. Requires SSH or console access to the Ubuntu server. For sciCloud.net®, mark N/A and attach LabLynx IQ evidence.
1Log in to the Ubuntu server via SSH or local console.Successful login as authorized user.
2Execute: lsb_release -aOutput shows: Ubuntu 24.04.x LTS Noble Numbat 64-bit.
3Execute: uname -mOutput shows: x86_64
4Execute: uname -rRecord the kernel version in Section 2.1. Version is 6.x.x or later.
5Execute: df -h /var/elabftwMount point /var/elabftw (or equivalent data volume) exists with sufficient free space (minimum 20 GB available).
6Execute: sudo systemctl status dockerDocker service status is 'active (running)'. Docker is enabled for boot: sudo systemctl is-enabled docker returns 'enabled'.

IQ-002 Docker Engine Version Verification

21 CFR Part 11 Reference: 21 CFR 11.10(b) — Software must meet all applicable requirements to generate records.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Confirm Docker was installed from the official Docker CE repository, not via snap.
1Execute: docker versionOutput shows Docker Engine version 27.x.x or later for both Client and Server. No error messages.
2Execute: docker compose versionOutput shows Docker Compose version v2.x.x or later.
3Execute: docker info │ grep 'Storage Driver'Output shows overlay2 as the storage driver (not vfs).
4Execute: which dockerOutput shows /usr/bin/docker (not /snap/bin/docker). If snap path appears, Docker must be reinstalled from official repository.
5Execute: docker run --rm hello-worldOutput includes 'Hello from Docker!' confirming container runtime is functional.

IQ-003 Container Image Version Verification

21 CFR Part 11 Reference: 21 CFR 11.10(b) — All applicable software requirements must be met.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Both containers (elabftw and mysql) must be running before this test. Execute 'sudo docker compose -f /etc/elabftw.yml up -d' if not already running.
1Execute: docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'Output lists both 'elabftw' and 'mysql' containers as 'Up' with healthy status.
2Execute: docker inspect elabftw --format '{{.Config.Image}}'Output shows the approved image tag (e.g., elabftw/elabimg:stable or pinned version). Record value in Section 2.2.
3Execute: docker inspect elabftw --format '{{.Image}}'Output shows a SHA256 image digest. Record this value in Section 2.2 as the immutable image fingerprint.
4Execute: docker inspect mysql --format '{{.Config.Image}}'Output shows mysql:8.4 or approved pinned version. Record in Section 2.2.
5Execute: docker inspect mysql --format '{{.Image}}'Output shows a SHA256 digest. Record in Section 2.2.
6Execute: curl -k https://localhost/api/v2/infoReturns a JSON response including the LabLynx One application version. Record in Section 2.2.

IQ-004 Data Persistence Configuration Verification

21 CFR Part 11 Reference: 21 CFR 11.10(c) — Computer-generated audit trails must be protected from modification or deletion.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: The /var/elabftw/web and /var/elabftw/mysql directories must exist on the host before running this test.
1Execute: docker inspect elabftw --format '{{json .Mounts}}' │ python3 -m json.toolOutput shows two volume mounts: (1) host /var/elabftw/web mapped to container /elabftw/uploads; (2) host /var/elabftw/mysql mapped to container /var/lib/mysql.
2Execute: ls -la /var/elabftw/webDirectory exists and is owned by UID 101 (nginx user). Permissions are 750 or 755.
3Execute: ls -la /var/elabftw/mysqlDirectory exists and contains MySQL data files. Not empty (indicating MySQL has initialized).
4Execute: docker exec elabftw stat /elabftw/uploadsCommand returns file system information confirming the uploads directory is accessible inside the container.
5Execute: docker exec mysql ls /var/lib/mysqlDirectory is accessible and contains MySQL database files.

IQ-005 Network Configuration Verification

21 CFR Part 11 Reference: 21 CFR 11.10(d) — System access must be limited to authorized individuals.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Verify that the MySQL container is not exposed externally and that only port 443 (HTTPS) is exposed to the host network.
1Execute: docker network lsOutput includes elabftw_elabftw-net (the internal bridge network). Record network name.
2Execute: docker network inspect elabftw_elabftw-net --format '{{range .Containers}}{{.Name}}{{end}}'Output lists both 'elabftw' and 'mysql' as members of the internal network.
3Execute: docker ps --format '{{.Names}}\t{{.Ports}}''elabftw' shows 0.0.0.0:443->443/tcp (or 127.0.0.1:443). 'mysql' shows NO external port mapping (only internal 3306/tcp exposed).
4From an external client (not the server), attempt: curl -k https://[SERVER_IP]/api/v2/infoReturns HTTP 200 with JSON content. The LabLynx One application is accessible over HTTPS.
5From an external client (not the server), attempt TCP connection to port 3306: nc -zv [SERVER_IP] 3306Connection is refused or times out. MySQL port is NOT accessible from outside the server.

IQ-006 TLS Certificate Verification

21 CFR Part 11 Reference: 21 CFR 11.10(d) — Access controls; 21 CFR 11.30 — Open networks require encryption.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: TLS (HTTPS) must be operational before any electronic records are created. This test verifies the certificate is valid, not expired, and matches the configured server name.
1Execute: echo │ openssl s_client -connect [SERVER_NAME]:443 -servername [SERVER_NAME] 2>/dev/null │ openssl x509 -noout -subject -datesOutput shows: subject with CN=[SERVER_NAME]; notBefore and notAfter dates. notAfter must be a future date (at least 30 days from now).
2Navigate to https://[SERVER_NAME] in a browser (Chrome or Firefox).Browser shows a secure padlock icon. No certificate warning is displayed. The address bar shows https:// protocol.
3Execute: curl -I https://[SERVER_NAME]/Response headers include: HTTP/2 200, Strict-Transport-Security header present.
4Attempt to navigate to http://[SERVER_NAME]/ (HTTP, not HTTPS).Browser is redirected to HTTPS, or connection is refused. Plain HTTP access to application data is not permitted.
5Execute: echo │ openssl s_client -connect [SERVER_NAME]:443 2>/dev/null │ grep 'Protocol'Protocol shows TLSv1.2 or TLSv1.3 only. Protocols TLSv1.0 and TLSv1.1 must NOT appear.

IQ-007 Database Initialization and Schema Verification

21 CFR Part 11 Reference: 21 CFR 11.10(a) — Validation to ensure accuracy, reliability, consistent intended performance.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: The database must have been initialized via 'docker exec elabftw bin/init db:install' before this test.
1Execute: docker exec mysql mysql --user=elabftw --password=[DB_PASSWORD] elabftw --execute='SHOW TABLES;'Output lists LabLynx One database tables (experiments, items, users, audit_logs, etc.). No empty result. Record number of tables displayed: [____]
2Execute: docker exec mysql mysql --user=elabftw --password=[DB_PASSWORD] elabftw --execute='SELECT COUNT(*) FROM config;'Returns a count greater than 0, confirming the configuration table is populated.
3Execute: docker exec elabftw bin/console db:updateCommand completes without error. Output confirms the database schema is current for the installed version, or reports the migrations it applied.
4Execute: curl -k https://localhost/healthcheck.phpReturns HTTP 200 with body 'ok', confirming nginx, php-fpm, and the MySQL connection are all healthy.

IQ-008 Application Accessibility Verification

21 CFR Part 11 Reference: 21 CFR 11.10(b) — Software must generate accurate and complete records.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Open a supported browser (Chrome 120+ or Firefox 120+). Navigate to the LabLynx One instance URL.
1Navigate to https://[SERVER_NAME]/The LabLynx One login page loads completely. The LabLynx One branding is visible. No error messages or broken elements.
2Navigate to https://[SERVER_NAME]/api/v2/infoReturns a JSON response containing the LabLynx One version string and other system information. HTTP status code 200.
3Attempt to navigate to https://[SERVER_NAME]/api/v2/experiments without an API key.Returns HTTP status 401 (Unauthorized). The API does not grant access without authentication.
4Navigate to https://[SERVER_NAME]/app/logout.phpRedirects to the login page without error. Session termination is handled gracefully.

IQ-009 Email Configuration Verification

21 CFR Part 11 Reference: 21 CFR 11.10(b) — Supporting features (notifications) must function as specified.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: SysAdmin account required. Log in to LabLynx One as SysAdmin before running this test.
1Log in as SysAdmin. Navigate to User Avatar → Sysconfig → Email tab.The Email configuration page loads. SMTP settings (host, port, from address, authentication) are populated with the approved values from Section 2.4.
2Click the 'Send test email' button. Provide a valid recipient email address.A test email is received at the specified address within 5 minutes. Subject line contains 'LabLynx One' or similar identifier.
3Verify email content.The test email body confirms the sender is the configured from-address. No SMTP authentication errors appear in the system logs.

IQ-010 Backup System Verification

21 CFR Part 11 Reference: 21 CFR 11.10(c) — Protection of records to enable accurate and ready retrieval throughout records retention period.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: A backup procedure must have been configured per the Installation Manual before this test. For sciCloud.net®, LabLynx performs backup verification; attach LabLynx backup attestation and mark this test N/A.
1Execute the configured backup command (e.g., sudo elabctl backup (or sudo /usr/local/bin/elab-backup.sh if using the manual script from Chapter 8.2)).Backup completes without error. Backup output or log confirms: (a) database dump was created; (b) uploads directory was copied.
2Navigate to the backup destination directory. Verify the following files exist: database dump file (.sql.gz or equivalent); uploads backup (directory or archive); a separately-stored copy of /etc/elabftw.yml (not included in elabctl backup by design — see Chapter 8.2).All three backup elements are present, timestamped with today's date, and non-zero in size.
3Verify the scheduled backup task (cron job or systemd timer) is active.Execute: crontab -l or cat /etc/cron.d/elab* shows an active scheduled backup task. Backup is scheduled to run at a defined interval (minimum daily).

IQ-011 Log Configuration Verification

21 CFR Part 11 Reference: 21 CFR 11.10(e) — Audit trails must be generated and retained.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Verify that container logs are configured with appropriate retention and that LabLynx One application logs are accessible.
1Execute: cat /etc/docker/daemon.jsonFile contains log-driver: json-file with max-size and max-file settings. Log rotation is configured.
2Execute: sudo docker logs elabftw --tail 20Returns the most recent nginx and PHP-FPM log entries without error.
3Execute: sudo docker logs mysql --tail 20Returns the most recent MySQL log entries without error. No critical error messages visible.
4Verify logrotate is configured: cat /etc/logrotate.d/docker-elabftwLogrotate configuration file exists with rotate, daily, and compress settings.

IQ-012 Security Configuration Verification

21 CFR Part 11 Reference: 21 CFR 11.10(d) — Limiting system access to authorized individuals; 21 CFR 11.300 — Controls for identification codes/passwords.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Verify host-level security hardening has been applied per the Installation Manual (Security Hardening chapter).
1Execute: sudo ufw status verboseufw is active. Rules show: port 22 (SSH), 443 (HTTPS), and optionally 80 (HTTP) are allowed. No unnecessary ports are open.
2Execute: sudo systemctl status fail2banfail2ban service is 'active (running)'. Execute: sudo fail2ban-client status. Shows active jails including sshd.
3Execute: sudo systemctl status unattended-upgradesService is active (running) or enabled. Automatic security updates are configured.
4Execute: ls -la /etc/elabftw.ymlFile permissions are 600 (owner read/write only). File is owned by root.
5Verify SSH key authentication is required: cat /etc/ssh/sshd_config │ grep PasswordAuthenticationPasswordAuthentication is set to 'no'. PermitRootLogin is 'no'.

IQ-013 SysAdmin Account and Initial Configuration Verification

21 CFR Part 11 Reference: 21 CFR 11.10(d) — System access limited to authorized individuals; 21 CFR 11.300 — Identification codes/passwords.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Log in to LabLynx One as SysAdmin. The first account created on a fresh installation automatically receives SysAdmin privileges.
1Navigate to https://[SERVER_NAME]/. Attempt to access the login page.Login page is displayed. No error messages.
2Log in with SysAdmin credentials (email + password).Login is successful. User is redirected to the LabLynx One dashboard. The username/email is displayed in the top-right corner.
3Navigate to User Avatar → Sysconfig.The Sysconfig panel opens successfully. All configuration tabs (Users, Teams, Email, Security, Authentication, Timestamping, API) are visible.
4Navigate to Sysconfig → Security. Verify the password policy settings match the organization's approved policy.Password minimum length and complexity settings reflect the organization's approved security policy.
5Navigate to Sysconfig → Users. Confirm that only authorized accounts exist (no unexpected accounts).User list contains only expected, authorized accounts.

IQ-014 IQ Summary and Release for OQ

21 CFR Part 11 Reference:

IQ Summary ItemRecorded Value
Total IQ Tests14
Tests Passed[Record: _____ ]
Tests Failed[Record: _____ ]
Tests Not Applicable (N/A)[Record: _____ ] — (List N/A IDs: ___________________ )
Open Deviations[Record: _____ ] — (List Deviation IDs: __________________ )
IQ Overall ResultPASS / FAIL / CONDITIONAL PASS (circle one)
Conditional Pass Conditions[Describe any conditions required before OQ commencement: ______________ ]
RoleNameIQ Approval Signature / Date
Validation Owner[Name / Title][Signature / Date]
QA Reviewer[Name / Title][Signature / Date]
Chapter 4

Operational Qualification (OQ)

Verifies that every configured function of LabLynx One operates according to its specification, with test depth proportional to GAMP 5 risk classification.

The Operational Qualification verifies that LabLynx One operates according to its functional specifications across all system functions. Each test protocol below documents exact procedural steps, expected results, and record fields for actual results, pass/fail determination, tester initials, and execution date.

OQ Prerequisites: (1) IQ is complete and approved. (2) At least two test user accounts exist with different roles (regular User and Admin). (3) At least one team is configured. (4) Test browsers are supported versions (Chrome 120+ or Firefox 120+). (5) A test experiment template with at least 3 metadata fields and 3 steps (including 1 locked step) has been created by the Admin.

4.4 Authentication and Access Control [CRITICAL — 21 CFR 11.10(d), 11.300]

OQ-AC-001 Local Authentication — Valid Credentials

21 CFR Part 11 Reference: 21 CFR 11.10(d): Limit system access to authorized individuals; 21 CFR 11.300(a): Unique identifiers.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Use a test account with a known valid password. Ensure the account is active and validated.
1Navigate to https://[SERVER_NAME]/. Observe the login page.The login page displays fields for Email and Password. A company/LabLynx logo is visible. No authenticated content is visible without login.
2Enter the valid test user email and correct password. Click Sign In.Login succeeds. User is redirected to their LabLynx One dashboard. The user's name appears in the top-right navigation. No error messages are displayed.
3Observe the browser URL bar after successful login.URL contains /experiments or similar authenticated path. No session token is visible in the URL (tokens are handled via HTTP cookies, not URL parameters).
4Log out by clicking User Avatar → Sign Out.User is redirected to the login page. The session is terminated.
5Attempt to navigate directly to https://[SERVER_NAME]/app/experiments.php (a protected page) after logout.User is redirected back to the login page. Unauthenticated access to protected pages is not permitted.

OQ-AC-002 Authentication — Invalid Credentials and Account Lockout

21 CFR Part 11 Reference: 21 CFR 11.300(c): Use of appropriate controls (e.g., password or token systems) to limit unauthorized access.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Use a test account. Note: this test will lock the account temporarily. Have the SysAdmin password available to unlock if needed.
1Navigate to the login page. Enter the test user email with an incorrect password. Click Sign In.Login fails. An error message is displayed (e.g., 'Invalid credentials'). No information about whether the account exists is leaked.
2Repeat the incorrect password entry 5 consecutive times (or the configured lockout threshold from Section 2.3).After the configured number of failures, the account is temporarily locked. A message or behavior change confirms the lockout.
3Wait the configured lockout duration (e.g., 15 minutes as configured in fail2ban). Attempt login with the correct password.Login succeeds after the lockout period expires, confirming lockout is temporary rather than permanent.
4As SysAdmin, verify login attempt events are recorded. Navigate to Sysconfig → Audit Logs and filter for authentication events.Failed login attempts appear in the system audit log with timestamp and IP address. Successful login after unlock also appears.

OQ-AC-003 Multi-Factor Authentication (MFA) Enforcement

21 CFR Part 11 Reference: 21 CFR 11.300(b),(d): Operational checks to ensure valid users; two-factor controls.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: MFA must be configured for the test account before running this test. Admin Panel → Team tab → Force MFA must be enabled, or the test user must have voluntarily enrolled. Use an authenticator app (Google Authenticator, Authy, Aegis, or equivalent).
1Navigate to the login page. Enter the MFA-enrolled test user email and correct password. Click Sign In.After password validation, the system presents a second challenge: a prompt for the 6-digit MFA code.
2Enter an incorrect 6-digit code (e.g., 000000). Click Verify.Authentication fails. Error message indicates the code is invalid. The user remains on the MFA challenge page.
3Open the authenticator app. Retrieve the current 6-digit TOTP code for the enrolled account. Enter it in the MFA challenge prompt.Authentication succeeds. User is redirected to their dashboard.
4Verify the MFA event appears in the system audit log. As SysAdmin, navigate to Sysconfig → Audit Logs.Successful MFA authentication event is recorded with timestamp, user identity, and IP address.

OQ-AC-004 Session Timeout Enforcement

21 CFR Part 11 Reference: 21 CFR 11.10(d): Time-limited access; session controls.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Configure a short session timeout (e.g., 5 minutes) temporarily in the SysAdmin panel for testing purposes. Restore the production value after the test.
1Log in as a test user. Note the login time.Successful login. Record start time: [ ]
2Leave the browser idle (do not perform any actions) for the duration of the configured session timeout period.[Wait configured timeout + 2 minutes]
3After the timeout period has elapsed, attempt to perform an action (e.g., click Experiments in the navigation bar).User is redirected to the login page. The session has expired. A message may indicate the session timed out.
4Verify that no data entered before the timeout is accessible without re-authentication.Login page is presented. No LabLynx One content is accessible without fresh authentication.

OQ-AC-005 Role-Based Access Control — User Cannot Access Admin Panel

21 CFR Part 11 Reference: 21 CFR 11.10(d): System access limited to authorized individuals only.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Log in as a standard User (not Admin, not SysAdmin) for this test.
1Log in as a standard User. Click the User Avatar (top right).The dropdown menu does NOT display 'Admin Panel' or 'Sysconfig' options. Only personal settings options are visible.
2Attempt to navigate directly to the Admin Panel URL: https://[SERVER_NAME]/app/admin.phpAccess is denied. User receives an error page or is redirected. The Admin Panel content is NOT displayed.
3Attempt to navigate directly to the SysAdmin URL: https://[SERVER_NAME]/app/sysconfig.phpAccess is denied. User receives an error page or is redirected. The SysAdmin content is NOT displayed.
4As the User, attempt to create a new experiment category (a function reserved for Admins).The option to create a new category is not available in the User's interface. No unauthorized category creation is possible.

OQ-AC-006 Permission Model — Private Experiment Not Visible to Other Users

21 CFR Part 11 Reference: 21 CFR 11.10(d): Access controls to protect records from unauthorized access.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Two test user accounts (User A and User B) in the same team are required. Both must be logged in on separate browser sessions.
1Log in as User A. Create a new experiment titled 'AC-006 Private Test — Do Not Share'. Set visibility to 'Only Me (Private)'. Save.‘Only Me’ visibility setting is accepted. Experiment is saved and visible to User A.
2As User A, note the experiment's ELabID and URL from the browser address bar.Record ELabID: [____________________] URL: [_________________________]
3In a separate browser (or incognito window), log in as User B. Navigate to Experiments index. Search for the experiment title 'AC-006 Private Test — Do Not Share'.‘Only Me’ experiment does NOT appear in User B's search results.
4As User B, attempt to navigate directly to the experiment URL noted in Step 2.Access is denied. User B receives a 403 Forbidden error or is redirected to the experiments index. The experiment content is NOT displayed.
5As User A, change the experiment's visibility to 'My Team'. As User B, refresh the experiments index and search again.The experiment is now visible to User B in the index.

OQ-AC-007 Account Deactivation — Immediate Access Revocation

21 CFR Part 11 Reference: 21 CFR 11.10(d): Limit access to currently authorized individuals; deactivation controls.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: A test account to be deactivated and an active SysAdmin account are required. Ensure the test account data has been backed up or ownership transferred before deactivation.
1Log in as the SysAdmin. Navigate to Sysconfig → Users. Locate the test account. Set the account's validity expiry date to yesterday's date (or set the account to Inactive). Save.Account is marked as expired/inactive in the Users list.
2In a separate browser, attempt to log in with the deactivated test account credentials.Login fails immediately. An error message indicates the account is not active or access is denied. The user is NOT granted any access.
3Confirm any active session from the deactivated account (if one existed before deactivation) is also terminated. Refresh the browser for the deactivated user if a session was open.Existing session shows an authentication error or the user is redirected to the login page.
4As SysAdmin, verify the deactivation event is recorded in the audit log.Sysconfig → Audit Logs shows the account modification event with timestamp and SysAdmin identity.

4.5 Experiment Management [HIGH]

OQ-EX-001 Experiment Creation — From Template

21 CFR Part 11 Reference: 21 CFR 11.10(b): Software meets all applicable requirements for generating records accurately and completely.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: A test template with at least 3 metadata fields and 3 steps (one locked) must exist. Log in as a regular User.
1Navigate to Experiments → Create. Select the test template from the template dropdown. Click Create.New experiment is created. The experiment opens in edit mode. The body text, metadata fields, and steps from the template are pre-populated.
2Observe the metadata fields.All metadata fields from the template are present: correct names, correct field types (text, number, date, select, etc.), and any default values.
3Observe the Steps checklist.All steps from the template are present in the correct order. The locked step has a lock icon and is not editable.
4Attempt to edit the locked step's description text (click on it and try to type).The locked step text is read-only. No modification is accepted.
5Enter a title: 'OQ-EX-001 Template Test'. Fill in at least one metadata field. Click Save.Experiment is saved. No error messages. The experiment appears in the Experiments index.

OQ-EX-002 Experiment Category and Status Assignment

21 CFR Part 11 Reference: 21 CFR 11.10(b): Records must reflect correct classification information.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Open experiment OQ-EX-001 from the previous test, or create a new blank experiment.
1In edit mode, locate the Category field. Select a category from the dropdown.Category is assigned. The category label appears with its configured color in the experiment header.
2Locate the Status field. Change the status from the default ('Running' or configured default) to a different status.Status is updated. The new status label appears with its configured color.
3Save the experiment. Navigate back to the Experiments index.The experiment appears in the index with the correct category color badge and status label.
4In the index, filter by the category assigned in Step 1.Only experiments of that category are shown. The test experiment is visible in the filtered list.
5Filter by the status assigned in Step 2.Only experiments with that status are shown. The test experiment is visible.

OQ-EX-003 Custom Metadata Fields — All Field Types

21 CFR Part 11 Reference: 21 CFR 11.10(b): Records must accurately capture all required data elements.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Create a new blank experiment. Use the Admin-configured test template that has at least one field of each type: text, number, date, select/dropdown, checkbox.
1In the metadata section, locate the Text field. Type: 'Test Analyst JR'. Click Save.Text field value 'Test Analyst JR' is saved and displayed correctly on the next page load.
2Locate the Number field (with units). Enter: 99.3. Select unit 'mg/mL'. Click Save.Number value 99.3 and unit mg/mL are saved and displayed correctly.
3Locate the Date field. Use the date picker to select today's date. Click Save.Today's date is saved and displayed in YYYY-MM-DD format.
4Locate the Select (dropdown) field. Select an option (e.g., 'Pass'). Click Save.The selected option is saved and displayed correctly.
5Locate the Checkbox field. Click it to check it. Click Save.Checkbox is shown as checked/enabled after save.
6Switch to View mode. Verify all field values are displayed correctly.All metadata field values entered in steps 1–5 are visible in view mode with correct labels and values.
7Clear the Number field entirely and click Save.Empty numeric field is accepted without causing an application error.

OQ-EX-004 Experiment Steps — Completion with Timestamp Attribution

21 CFR Part 11 Reference: 21 CFR 11.10(e): Audit trails must include date/time stamps and user identification for all steps.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Open the experiment created in OQ-EX-001. The experiment must have at least one unlocked step.
1In edit mode, locate the Steps checklist. Note the current state of an unlocked step (unchecked).Unchecked step is visible with a checkbox on the left.
2Click the checkbox on an unlocked step.The step is immediately marked as complete. A timestamp and the current user's name/initials appear next to the step completion. The next incomplete step advances.
3Switch to View mode. Observe the completed step.Completed step shows a check mark, the user's name (or initials), and the exact date and time of completion.
4Navigate to the Experiments index. Observe the experiment row.The experiment row shows the next incomplete step (if any remain) as a reminder in the Next Step column.
5Navigate to the To-Do List (top-left navigation icon).The To-Do list shows remaining incomplete steps for this experiment and all other open experiments owned by the current user.

OQ-EX-005 File Attachment Upload and Retrieval

21 CFR Part 11 Reference: 21 CFR 11.10(b): Records must include all required supporting data; original data retention.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Prepare a test file for upload (e.g., a small PDF or text file named 'OQ-EX-005-testfile.pdf').
1Open a test experiment in edit mode. Locate the Attachments section. Drag the test file onto the upload area (or click Browse and select it).File upload progress is displayed. After completion, the file appears in the Attachments panel with its name, size, upload timestamp, and uploader identity.
2Switch to View mode. Observe the attachment entry.File is listed in the Attachments panel with: filename, file size, upload date and time, and the name of the user who uploaded it.
3Click on the attachment to download it.File downloads correctly. The downloaded file is identical to the original uploaded file (not corrupted, not renamed).
4Attempt to upload a second file with the same name.System either renames the new file to avoid collision, or appends a version indicator. Original file is preserved.
5Attempt to delete an attachment on an unlocked experiment. Click the delete icon on the attachment.Attachment is removed from the entry. A confirmation prompt may appear before deletion. After deletion, the file no longer appears.

OQ-EX-006 Experiment-to-Resource Linking — Bidirectionality

21 CFR Part 11 Reference: 21 CFR 11.10(b): Records must accurately identify all related materials used.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: A Resource record (e.g., a reagent or instrument entry) must exist in the system before this test. Note its ID and title.
1Open a test experiment in edit mode. In the body editor, type # followed by the first 3 characters of the resource name.An autocomplete dropdown appears showing matching resource entries.
2Select the resource from the autocomplete list.The resource is added to the Linked Resources panel on the left/bottom of the experiment. A hyperlink to the resource is inserted in the body text.
3Save the experiment. Switch to View mode. Click the link to the resource in the body text.Browser navigates to the Resource record.
4On the Resource record page, navigate to the 'Linked Experiments' or 'Related' section.The experiment that was linked in Step 2 appears in the Resource's linked entries list. The link is bidirectional.
5From the Resource's linked entry panel, click the link back to the experiment.Browser navigates back to the experiment. Round-trip bidirectional navigation is confirmed.

OQ-EX-007 Experiment Locking — Prevents Further Modification

21 CFR Part 11 Reference: 21 CFR 11.10(c): After the fact alteration of records must be prevented.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Use a test experiment that is ready for locking (all metadata filled, steps completed). Log in as the experiment owner.
1Open the test experiment. Click the Lock icon in the toolbar. Confirm the lock action when prompted.Experiment is locked. A lock icon appears in the experiment header and in the index list view. The lock event is recorded in the Changelog.
2Attempt to edit the experiment: click Edit mode and try to modify the title.Edit mode is not accessible. The experiment is read-only. No modification options are available.
3Attempt to add an attachment to the locked experiment.File upload is rejected. No new attachments can be added to a locked experiment.
4Attempt to add a new tag to the locked experiment.Tag addition is rejected. No new tags can be applied to a locked experiment.
5As an Admin (a different user than the owner), navigate to the locked experiment. Attempt to unlock it via the Unlock button in the toolbar.Admin can unlock the experiment. After unlocking, edit mode becomes accessible again. The unlock event is recorded in the Changelog.
6Re-lock the experiment as the Admin.Experiment is locked again. Lock event recorded in Changelog.

OQ-EX-008 Experiment Soft Delete and Recovery

21 CFR Part 11 Reference: 21 CFR 11.10(c): Records must be protected from accidental or unauthorized destruction.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Create a dedicated test experiment titled 'OQ-EX-008 Soft Delete Test' for this test.
1Open the test experiment. Navigate to the Ellipsis (…) menu. Click Delete. Confirm the deletion when prompted.The experiment is removed from the default Experiments index view. It is no longer visible in the normal list.
2In the Experiments index, use the State filter to select 'Deleted' or 'Archived' state.The deleted experiment reappears in the filtered view with 'Deleted' status. The experiment content is fully intact.
3Click on the deleted experiment. Verify all content (title, body, metadata, attachments) is intact.All original content is preserved. The experiment is accessible and readable.
4Click Restore (or equivalent) on the deleted experiment.Experiment is restored to the active index. It is visible again in the default view with its original status.
5As SysAdmin, verify that true permanent deletion requires SysAdmin action and cannot be performed by regular users.Regular User does not see a 'Permanently Delete' option. Only SysAdmin-level actions can perform true permanent deletion (if configured).

OQ-EX-009 Full-Text Search Functionality

21 CFR Part 11 Reference: 21 CFR 11.10(e): Records must be available for ready retrieval throughout the retention period.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Create a test experiment with a unique term in both the body text and a metadata field. Use a term unlikely to appear in other records (e.g., 'XQZTEST2026UNIQUE').
1Create an experiment. In the body, type: 'XQZTEST2026UNIQUE is documented here.' In a Text metadata field, enter: 'XQZTEST2026META'. Save.‘Experiment is created with the unique terms in both body and metadata.
2In the search bar, type: XQZTEST2026UNIQUE and press Enter.Search results include the test experiment, found by its body text content.
3In the search bar, type: XQZTEST2026META and press Enter.Search results include the test experiment, found by its metadata field content.
4Search for a non-existent term: ZZZNORESULT99999.Search returns zero results. No error message. The empty result state is displayed clearly.

OQ-EX-010 Experiment PDF Export — Content Completeness

21 CFR Part 11 Reference: 21 CFR 11.10(b): Records must be complete and accurate.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Use a fully populated test experiment (title, date, status, tags, at least 2 metadata fields, body text, 1 completed step, 1 comment, 1 attachment). Note the ELabID of this experiment.
1Open the test experiment in view mode. Click the Export button in the toolbar. Select PDF format. Click Export.‘PDF download begins. The file is downloaded to the local machine.
2Open the downloaded PDF. Verify the PDF contains the experiment title.Experiment title is present at the top of the PDF.
3Verify the PDF contains the date, status, category, and tags.All classification fields are present and correct.
4Verify the PDF contains all metadata fields and their values.All metadata field names and values entered in the experiment are present in the PDF.
5Verify the PDF contains the body text (main narrative).Body text content is rendered in the PDF, including any headings, tables, and images that were in the body.
6Verify the PDF contains the completed step with its timestamp and tester identity.Completed step is listed with the correct completion timestamp and tester name.
7Verify the ELabID appears in the PDF (typically in the footer).ELabID is present in the PDF footer or header for cross-referencing.

4.6 Electronic Signatures [CRITICAL — 21 CFR Part 11 Subpart C: §11.50, §11.70, §11.100, §11.200, §11.300]

OQ-SIG-001 Simple Electronic Signature — Authenticated Signing Event

21 CFR Part 11 Reference: 21 CFR 11.50(a), 11.70, 11.200(a)(1) — Non-biometric e-signatures require user ID and password.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Use a fully written test experiment in an unlocked state. Log in as the experiment owner (User A).
1Open the test experiment in view mode. Click the Signature button in the toolbar. The signature dialog opens.Signature dialog is displayed. Options are presented for signature type and meaning.
2Observe: the dialog requires credential re-entry before signing. Enter User A's password when prompted.Signing cannot proceed without credential re-entry. The system requires active re-authentication at the point of signing.
3Enter the correct password. Select signature meaning (e.g., 'I certify this record is accurate and complete'). Click Sign.Signature is recorded. A signature block appears in the experiment record showing: (a) the signer's full name, (b) the date and time of signing, (c) the meaning of the signature.
4Verify the signature block is appended to the experiment record and visible in view mode.Signature block is visible with all three required 21 CFR 11.50(a) elements: name, date/time, meaning.
5Attempt to remove the signature block by editing the experiment body.The signature block cannot be deleted from the body by editing. It is rendered as a protected, immutable element.
6As a different user (User B), attempt to sign the experiment as if they were User A (use User B's session, enter User B's credentials).The signature records User B's identity, not User A's. The system does not allow one user to sign as another.

OQ-SIG-002 Electronic Signature — Linking to Record (Cannot Be Detached or Falsified)

21 CFR Part 11 Reference: 21 CFR 11.70: Electronic signatures must be linked to their respective electronic records so as to preclude the transfer or falsification of the signature.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Use the experiment that was signed in OQ-SIG-001.
1Open the signed experiment. Observe the signature block. Note the exact text of the signature (name, date/time, meaning).Signature block is present and displays all required fields.
2Unlock the experiment (as Admin). Edit the body text of the experiment. Add additional text after the signature block. Save and re-lock.Body edit is saved. However, the signature block from OQ-SIG-001 remains and is clearly attributed to the original signing event. The Changelog records the body edit as a new revision, distinct from the signature event.
3Navigate to Ellipsis (…) → See Revisions. Compare the pre-edit and post-edit versions.Revision history shows the original version (as it was when signed) and the post-edit version as distinct entries. The audit trail clearly shows the record was modified after signing.
4Export the experiment as a ZIP archive. Inspect the archive contents.ZIP archive contains: the experiment PDF, a JSON data export, and (if Ed25519 signing was used) the signature archive files. The signature files include the exact content hash at signing time.
5Verify that the original signature is still valid against the signing-time snapshot (applicable if Ed25519 cryptographic signing was used; see OQ-SIG-005 for details).The signature archive preserves the content snapshot at signing time, independent of any subsequent edits to the live record.

OQ-SIG-003 Request Action — Two-Person Review and Countersignature Workflow

21 CFR Part 11 Reference: 21 CFR 11.50(a): Signatures must be associated with specific individuals; 21 CFR 11.70: Signatures linked to records.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Two user accounts required: User A (experiment owner/analyst) and User B (reviewer/supervisor). Both must be active members of the same team.
1As User A, open a completed, unsigned experiment. Click the Request Action button. Select 'Sign'. In the recipient field, select User B. Add a note: 'Please review and sign as supervisor.' Click Send.Request Action notification is sent. A confirmation message appears for User A.
2As User B, open the notification (Bell icon → notification center). Click the notification for the signature request.User B is navigated to the experiment awaiting their signature.
3As User B, review the experiment content. Click the Signature button in the toolbar. Re-enter User B's password. Select meaning 'Supervisor Review and Approval'. Click Sign.User B's signature is applied to the experiment. Signature block shows User B's name, date/time, and 'Supervisor Review and Approval' meaning.
4Return to User A's session. Navigate to the signed experiment. Observe the signature block.Both signatures are visible: (1) User A's signature with their details; (2) User B's countersignature with their details. Both are distinct, attributed, and timestamped.
5Navigate to the Changelog for this experiment. Verify both signature events are recorded.Changelog entries show two signature events: one attributed to User A, one to User B. Each has a unique timestamp and cannot be altered.

OQ-SIG-004 Electronic Signature — Uniqueness and Non-Repudiation

21 CFR Part 11 Reference: 21 CFR 11.100(a): Each electronic signature shall be unique to one individual and shall not be reused by or reassigned to another individual.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Two user accounts (User A and User B) are required. This test verifies that electronic signatures can only be applied using the account holder's credentials.
1Log in as User A. Open an unsigned experiment. Click Signature. In the credential re-entry dialog, enter User B's password instead of User A's.Authentication fails. The signature is not applied. An error message indicates invalid credentials.
2Enter User A's correct password. Sign with meaning 'Author Certification'.Signature is applied. The signature block shows User A's name.
3Log out as User A. Log in as User B. Navigate to the experiment signed by User A. Observe the signature.The signature block shows User A's name, not User B's. User B cannot delete, modify, or claim ownership of User A's signature.
4As User B, attempt to add a second signature to the same experiment claiming to be User A (enter User A's credentials in User B's browser session).The system rejects the attempt: the credentials are checked against the current authenticated session. The signature would be attributed to User B, not User A.

OQ-SIG-005 Ed25519 Cryptographic Signature — Signing and Archive Creation

21 CFR Part 11 Reference: 21 CFR 11.70: Electronic signatures must be linked to records to preclude falsification. Ed25519 provides cryptographic non-repudiation.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: This test applies only if Ed25519 cryptographic signing is enabled. User must have generated an Ed25519 key pair in Settings → Account → Cryptographic Key. Skip this test and mark N/A if only simple signatures are used.
1In Settings → Account, verify the Ed25519 public key is generated and displayed. Note the key fingerprint.Public key fingerprint is displayed. No errors.
2Open a test experiment. Click Signature → Ed25519 (cryptographic signature) option. Enter the passphrase protecting the private key. Select meaning 'Cryptographic Author Certification'. Click Sign.Signature process executes. A 'Signature created' confirmation appears. An immutable ZIP archive (the signature archive) is attached to the experiment in an archived/hidden attachment state.
3Navigate to Ellipsis (…) → Show Archived Attachments (or equivalent). Locate the signature archive ZIP.The signature archive is present. Its filename includes the signature date/time and user identifier.
4Download the signature archive ZIP. Extract it. Verify it contains: (a) data.json (the experiment snapshot at signing time); (b) a .minisig signature file; (c) a public key file; (d) a verify.sh or README verification script.All four components are present in the archive.
5Execute the verification script or manually verify using Minisign: minisign -Vm data.json -p publickey.pub -x signature.minisigVerification output: 'Signature and comment signature verified.' The data.json content matches the experiment state at the time of signing.
6Modify data.json (add one character). Re-run verification.Verification fails: 'Signature verification failed.' This demonstrates that any alteration of the signed content is detectable.

4.7 Trusted Timestamping [CRITICAL — 21 CFR 11.10(c), 11.70]

OQ-TS-001 RFC 3161 Timestamp — Application and Token Storage

21 CFR Part 11 Reference: 21 CFR 11.10(c): Records must be retrievable in accurate form; timestamps establish temporal integrity.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: The TSA endpoint must be configured in Sysconfig → Timestamping. Internet access to the TSA is required. A test experiment in an unlocked state is required.
1Open the test experiment in view mode. Click the Timestamp button (clock/seal icon) in the toolbar. Observe the process.A timestamp request is initiated. A progress indicator or confirmation message appears. No error messages.
2After the timestamp completes, navigate to Ellipsis (…) → Show Archived Attachments.A timestamp archive file (.zip or similar) appears in the archived attachments list. Its creation timestamp is the current date and time.
3Download the timestamp archive. Inspect its contents.Archive contains: (a) the experiment JSON snapshot at timestamp time; (b) a .tsr (timestamp response) token file from the TSA; (c) a README or metadata file identifying the TSA used.
4Verify the TSA token is from the configured TSA provider (e.g., DFN.de, DigiCert, Sectigo). Inspect the .tsr file using: openssl ts -reply -in timestamp.tsr -textTSA name, policy, hash algorithm (SHA-256), and timestamp are displayed. The timestamp matches the date/time of the timestamp application.

OQ-TS-002 Timestamp Hash Integrity — Pre- and Post-Timestamp Content Verification

21 CFR Part 11 Reference: 21 CFR 11.10(c): Records must be protected from alteration or falsification.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Use the timestamped experiment from OQ-TS-001. This test verifies that: (1) the content hash in the token matches the actual content at timestamp time; (2) subsequent modifications are detectable.
1From the timestamp archive (OQ-TS-001, Step 3), extract the experiment JSON file (data.json or equivalent). Compute its SHA-256 hash: sha256sum data.jsonRecord the computed SHA-256 hash: [_________________________________________________]
2Extract the .tsr token file. Verify the hash embedded in the token: openssl ts -reply -in timestamp.tsr -text │ grep 'Message imprint'The hash shown in the TSA token exactly matches the SHA-256 hash computed in Step 1. This confirms the token was issued for this specific content.
3Unlock the experiment. Add additional text to the body. Save and re-lock. Re-export the experiment to JSON or ZIP.New export/JSON is created. Its content is different from the pre-modification snapshot.
4Compute the SHA-256 hash of the new export. Compare to the hash in the original timestamp token.The new hash is DIFFERENT from the hash in the original timestamp token. This demonstrates that the timestamp token is specific to the pre-modification content. The modification is detectable.

4.8 Audit Trail [CRITICAL — 21 CFR 11.10(e)]

OQ-AT-001 Changelog — Field Change Attribution and Timestamp

21 CFR Part 11 Reference: 21 CFR 11.10(e): Audit trails must record date/time, user identity, and what was changed.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Log in as User A. Create or open a test experiment. Record its current title before making changes.
1Open a test experiment in edit mode. Note the current title. Change the title to a new value (e.g., add ' — MODIFIED' at the end). Save.Title is changed successfully.
2Navigate to Ellipsis (…) → See Changelog.Changelog page opens and displays a list of change events.
3Locate the most recent entry. Verify it shows: (a) the field that changed ('title'); (b) the previous value (original title); (c) the new value (modified title); (d) the identity of the user who made the change (User A); (e) the date and time of the change.All five data elements are present and accurate for the title change.
4Change the experiment's Status. Save. Return to the Changelog.A new changelog entry appears for the status change, also including all five data elements.
5Attempt to delete or modify a Changelog entry. Look for any edit, delete, or modify option on the Changelog.No option exists to edit or delete any Changelog entry. The Changelog is read-only and immutable.
6Add a metadata field value. Change a tag. Return to the Changelog.Both the metadata field change and the tag change appear as distinct entries in the Changelog.

OQ-AT-002 Revisions — Main Text Body Version History

21 CFR Part 11 Reference: 21 CFR 11.10(e): Audit trail must capture all modifications to electronic records.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Create a new test experiment with initial body text. Then make at least two subsequent edits to create a multi-version history.
1Create an experiment with body text: 'Version 1 content — original text.' Save.Experiment is saved.
2Edit the body text: change 'Version 1 content' to 'Version 2 content — first edit.' Save.Change is saved.
3Edit the body text again: add a new paragraph 'Version 3 addition.' Save.Change is saved.
4Navigate to Ellipsis (…) → See Revisions.Revisions page opens. A list of at least 3 revisions (initial + 2 edits) is displayed, each with a timestamp and the user identity of the editor.
5Click on Version 1 (the earliest revision).The body text content for Version 1 is displayed exactly as it was when first saved: 'Version 1 content — original text.'
6View the diff between Version 1 and Version 2 (if diff view is available).Added and removed text is highlighted. Changes are clearly visible between versions.
7Attempt to delete any revision entry.No option exists to delete revision history. Revisions are immutable.

OQ-AT-003 ELabID — Uniqueness and Immutability

21 CFR Part 11 Reference: 21 CFR 11.10(b): Record accuracy and uniqueness; permanent record identification.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Three test experiments are needed for this test.
1Create three separate experiments. Navigate to the bottom of each experiment in view mode. Record the ELabID for each.ELabID 1: [___________________________] ELabID 2: [___________________________] ELabID 3: [___________________________]
2Compare the three ELabIDs.All three ELabIDs are unique. No two experiments share the same ELabID.
3Attempt to modify the ELabID of one experiment by editing any available field.No field in the user interface allows modification of the ELabID. It is a system-generated, read-only identifier.
4Delete one of the experiments (soft delete). Create a new experiment. Verify the new experiment's ELabID.The new experiment has a new unique ELabID. The ELabID of the deleted experiment is not reused or reassigned.

OQ-AT-004 System Audit Log — Authentication and Admin Events

21 CFR Part 11 Reference: 21 CFR 11.10(e): Audit trail must capture all access and administrative actions.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: SysAdmin access required. Perform a deliberate set of auditable actions before checking the log.
1Perform these actions in sequence: (a) Log in as a test user; (b) Log out; (c) Attempt login with wrong password; (d) As SysAdmin, modify a configuration setting in Sysconfig.All actions are performed.
2As SysAdmin, navigate to Sysconfig → Audit Logs.The system audit log page is accessible. Filtering options are available.
3Filter the log for the test user's login events from the past hour.Successful login event and logout event for the test user are both present, each with timestamp and IP address.
4Filter for failed login attempts.The failed login attempt (wrong password) appears with timestamp and IP address.
5Filter for SysAdmin configuration change events.The configuration change made in Step 1(d) appears in the log with the SysAdmin's identity and timestamp.
6Attempt to delete any log entry.No option exists to delete any log entry. The system audit log is immutable.

OQ-AT-005 Audit Trail Completeness — Multi-Step Workflow Record

21 CFR Part 11 Reference: 21 CFR 11.10(e): Audit trail must record a complete and accurate account of all actions.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: This test verifies that a complete chain of events across a full experiment lifecycle is captured without gaps. Perform the following workflow sequentially on a new test experiment.
1As User A, create a new experiment titled 'OQ-AT-005 Completeness Test'. Save.Record creation is logged in Changelog.
2Add a tag 'AT-Test'. Save.Tag addition is logged.
3Change status to 'Running' (if not default). Save.Status change logged.
4Add a comment: 'OQ completeness test comment.' Save.Comment creation logged.
5Upload an attachment.Upload event logged.
6Apply an electronic signature (any type).Signature event logged.
7Apply an RFC 3161 timestamp.Timestamp event logged.
8Lock the experiment.Lock event logged.
9Navigate to Ellipsis → See Changelog. Count the entries.Changelog contains at least 8 entries corresponding to the 8 actions above. Each entry has: event type, previous value (where applicable), new value, user identity, and timestamp. No actions are missing from the record.

4.9 Template Management [HIGH]

OQ-TM-001 Team Template Creation and Team-Wide Availability

21 CFR Part 11 Reference: 21 CFR 11.10(b): Standardized procedures for generating accurate and complete records.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Log in as Admin for this test. A regular User account (non-Admin) must be available for Step 5.
1As Admin, navigate to Experiments → Templates. Click Create. Enter template name: 'OQ-TM-001 Validation Template'. Select category. Add body text: 'Section: Results'. Add two metadata fields: (1) 'Analyst Name' (Text); (2) 'Result' (Select: Pass, Fail). Add one locked step: 'Step 1: Review all data before signing.' Mark the step as locked. Click Make available to Team. Save.Template is created and saved without error.
2As Admin, navigate to Experiments → Templates. Search for 'OQ-TM-001 Validation Template'.Template appears in the templates list with the team-visible indicator.
3As Admin, create a new experiment. When the template selection dialog opens, search for 'OQ-TM-001 Validation Template'.The template appears in the template selection dialog.
4As a regular User (non-Admin), log in. Navigate to Experiments → Create. Open the template selection dialog.The template 'OQ-TM-001 Validation Template' is visible to the regular User in the template selection list.
5As the regular User, create an experiment from the template.New experiment opens with: (a) 'Section: Results' in the body; (b) 'Analyst Name' and 'Result' metadata fields; (c) 'Step 1' in the steps panel with a lock icon indicating it is locked.

OQ-TM-002 Template Locked Steps Cannot Be Modified by User

21 CFR Part 11 Reference: 21 CFR 11.10(b): Standardized procedures; 11.10(e): Controls ensure procedural compliance.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Use an experiment created from OQ-TM-001 template (which has one locked step). Log in as the experiment owner (regular User, not Admin).
1Open the experiment in edit mode. Locate the locked step 'Step 1: Review all data before signing.'Locked step is visible. A lock icon is displayed on or near the step. The step text is not editable.
2Attempt to click on the locked step text and type replacement text.The text field is non-editable. No modification is accepted.
3Attempt to delete the locked step by clicking any delete icon or using keyboard delete.No delete option is available for the locked step. The step cannot be removed.
4Attempt to drag-and-drop the locked step to a different position in the steps list.Step position cannot be changed. Locked step remains in its original position.
5Click the checkbox on the locked step to mark it as complete.Step completion is accepted. The step is marked as complete with a timestamp and user attribution. Only the checkbox (completion) is interactive, not the step text.

4.10 Resource Management [MEDIUM-HIGH]

OQ-RM-001 Resource Creation and Category Assignment

21 CFR Part 11 Reference: 21 CFR 11.10(b): Accurate cataloging of all materials used in GxP records.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: At least one Resource Category must exist in the system. Log in as a regular User.
1Navigate to Resources. Click Create. Enter title: 'OQ-RM-001 Test Reagent Lot'. Select a resource category.Resource creation dialog accepts title and category.
2Add a metadata text field with key 'Lot Number' and value 'LOT-OQ-2026-001'. Add a date field 'Expiry Date' with today's date + 365 days. Save.Resource is created and all fields are saved correctly.
3Navigate to the Resources index. Filter by the category used in Step 1.The newly created resource appears in the filtered index.
4Search for 'OQ-RM-001' in the search bar.The resource appears in search results, findable by title.
5Open the resource in view mode. Verify all fields (title, category, metadata fields) are displayed correctly.All fields display the correct values entered in Steps 1 and 2.

OQ-RM-002 Resource Scheduler — Booking and Conflict Prevention

21 CFR Part 11 Reference: 21 CFR 11.10(b): Records accurately reflect when controlled items are used.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: A bookable resource (e.g., an instrument with scheduling enabled) must exist. Admin must have enabled booking on the resource. Log in as a regular User.
1Navigate to Resources. Open a bookable resource. Click 'Book Item' or navigate to the Scheduler.The scheduler/calendar view opens showing the resource's availability.
2Click on an available time slot for tomorrow (e.g., 10:00 AM – 12:00 PM). Add a booking note: 'OQ-RM-002 Test Booking'. Confirm.Booking is created. The time slot appears in the calendar as occupied with the booking user's name.
3As a second user (User B), attempt to book the same resource for the same time slot.Booking conflict is detected. User B receives an error or warning indicating the time slot is already booked. The booking is not created.
4As User A, cancel the test booking.Booking is cancelled. The time slot becomes available again.

4.11 User and Team Administration [HIGH]

OQ-UA-001 User Account Validation Workflow

21 CFR Part 11 Reference: 21 CFR 11.10(d): Access limited to authorized individuals only.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Self-registration must be enabled in the Team settings (Admin Panel → Team tab) for this test. Require Admin validation of new accounts must also be enabled.
1From a browser not logged in, navigate to the LabLynx One registration page. Register a new test account with a valid email address.Registration is accepted. A message indicates the account is pending Admin validation and cannot be used until validated.
2Attempt to log in with the newly registered account before Admin validation.Login fails. Error message indicates the account is pending validation. Access is denied.
3As Admin, open the Admin Panel → Users tab. Locate the pending new account.Pending account appears in a 'Validation pending' list or state.
4As Admin, click Validate for the new account.Account is activated. The status changes to active/validated.
5Attempt login with the newly validated account credentials.Login succeeds. User is redirected to the LabLynx One dashboard.

OQ-UA-002 Team Export — Bulk Experiment Data Integrity

21 CFR Part 11 Reference: 21 CFR 11.10(c): Records must be accurately and readily retrievable throughout the retention period.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Admin account required. At least 5 experiments of a specific category must exist.
1As Admin, navigate to Admin Panel → Export. Select experiment export. Filter by category = [test category]. Select PDF format. Click Export.Export process begins. Progress may be indicated.
2After the export completes, download the output (ZIP or individual PDFs).Files download successfully. Number of files matches the number of experiments in the selected category.
3Open one of the exported PDFs. Verify it contains the experiment's title, date, metadata, and body content.PDF content is complete and matches the experiment's actual content in LabLynx One.
4Verify the ELabID appears in the PDF footer.ELabID is present, enabling cross-reference between the paper PDF and the digital record.

4.12 System Configuration and Integration [MEDIUM]

OQ-SC-001 REST API — Authentication and Read Operation

21 CFR Part 11 Reference: 21 CFR 11.70: Electronic records must be accessible through authenticated methods only.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Generate a read-only API key in Settings → API Keys before this test. Record the key value.
1Execute: curl -H 'Authorization: [API_KEY]' https://[SERVER_NAME]/api/v2/users/meReturns HTTP 200 with a JSON object containing the authenticated user's name, email, and team. Authentication via API key is successful.
2Execute: curl -H 'Authorization: INVALID_KEY_VALUE' https://[SERVER_NAME]/api/v2/users/meReturns HTTP 401 Unauthorized. Invalid API keys are rejected.
3Execute: curl -H 'Authorization: [API_KEY]' https://[SERVER_NAME]/api/v2/experiments?limit=5Returns HTTP 200 with a JSON array of up to 5 experiments accessible to the API key's user.
4Using a Read-Only API key, attempt to create a new experiment: curl -X POST -H 'Authorization: [READ_ONLY_KEY]' https://[SERVER_NAME]/api/v2/experimentsReturns HTTP 403 Forbidden. Read-only keys cannot create or modify records.

OQ-SC-002 Timestamping Service Configuration Verification

21 CFR Part 11 Reference: 21 CFR 11.10(c): Protection of records; trusted third-party temporal integrity.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: SysAdmin account required. Verify the TSA is configured in Sysconfig → Timestamping.
1As SysAdmin, navigate to Sysconfig → Timestamping. Verify the configured TSA URL matches the approved TSA from Section 2.4.TSA URL matches the configured value in Section 2.4.
2Create a test experiment. Apply an RFC 3161 timestamp (see OQ-TS-001).Timestamp is applied without error, confirming the TSA endpoint is reachable and the configuration is valid.
3From the timestamp archive, confirm the TSA certificate chain can be verified. Execute: openssl ts -reply -in [timestamp.tsr] -text │ grep 'TSA'TSA identity is displayed and matches the configured provider.

4.13 OQ Summary

OQ Summary ItemRecorded Value
Total OQ Test Cases[Record: _____ ]
CRITICAL Tests — Passed[Record: _____ ] / [Total CRITICAL: _____ ]
HIGH Tests — Passed[Record: _____ ] / [Total HIGH: _____ ]
MEDIUM Tests — Passed[Record: _____ ] / [Total MEDIUM: _____ ]
Total Tests Failed[Record: _____ ] — Deviation IDs: [_____________________ ]
N/A Tests[Record: _____ ] — (List N/A IDs: _____________________ )
Open Deviations[Record: _____ ] — All deviations documented in Appendix D
OQ Overall ResultPASS / FAIL / CONDITIONAL PASS (circle one)
RoleNameOQ Approval Signature / Date
Validation Owner[Name / Title][Signature / Date]
QA Reviewer[Name / Title][Signature / Date]
Chapter 5

Performance Qualification (PQ)

Verifies that the configured system performs reliably under actual, representative real-world operating conditions.

The Performance Qualification demonstrates that LabLynx One operates correctly and consistently under actual use conditions with real users performing real workflows. PQ scenarios are designed to replicate complete end-to-end laboratory workflows that span multiple system features and confirm the system performs appropriately as an integrated whole.

PQ Prerequisites: (1) IQ and OQ are complete and approved. (2) The system is configured with production-representative data (at least one team, categories, templates, and user accounts). (3) All PQ testers are trained LabLynx One users who have completed any required onboarding. (4) PQ is conducted in the production environment (or an exact copy of it for initial validation).

PQ-001: Complete Regulated Analytical Experiment Lifecycle

Objective: Demonstrate that a complete GxP-compliant analytical experiment record can be created, documented, reviewed, signed, timestamped, and locked in a workflow that satisfies all 21 CFR Part 11 requirements simultaneously.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Two users required: Analyst (User A) and Supervisor (User B). A method validation or analytical run template must exist with at least 4 metadata fields and 3 steps (at least 1 locked).
1As the Analyst, log in with personal credentials (MFA if required). Create a new experiment from the analytical template. Title: 'PQ-001 HPLC Potency — Sample Batch PQ-2026'. Set date to today.Experiment created from template. All template fields present.
2Fill all metadata fields: Analyst = [tester name], Instrument = [instrument ID], Lot Number = [test lot], Result = [a representative numeric value], Pass/Fail = Pass.All metadata fields populated and saved.
3Write a protocol summary in the body text (at least 3 sentences describing the analytical procedure performed).Body text saved and visible in view mode.
4Upload a test file ('PQ-001-rawdata.pdf') as an attachment.File attached successfully. Upload timestamp and analyst identity shown.
5Complete all protocol steps by clicking each checkbox. Verify each step shows a completion timestamp and the Analyst's name.All steps completed and timestamped. Each step shows Analyst identity.
6Apply an electronic signature with meaning 'I certify this record is accurate, complete, and was prepared by me personally.' Re-enter credentials when prompted.Signature block appears with Analyst name, date/time, and meaning.
7Use Request Action → Sign to request the Supervisor's countersignature. As the Supervisor, review the experiment and apply a countersignature with meaning 'Supervisor Review and Technical Approval.'Supervisor signature block added. Both signatures are visible and individually attributed.
8Apply an RFC 3161 timestamp. Verify the timestamp archive is created (Ellipsis → Archived Attachments).Timestamp archive is present with today's date.
9Lock the experiment.Experiment is locked. Lock event appears in Changelog.
10Navigate to the Changelog. Verify all 10 events from this workflow are present in the audit trail (creation, field edits, file upload, step completions, two signatures, timestamp, lock).Changelog contains at least 10 entries covering all workflow events. Each entry has timestamp and user identity. No gaps in the chain of events.
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

PQ-002: Multi-User Concurrent Access and Data Isolation

Objective: Demonstrate that multiple users can simultaneously use the system without data collision, that private records remain isolated, and that all concurrent actions are individually attributed.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Three simultaneous user sessions required (three computers or browsers). Users: Analyst A, Analyst B, Admin C. All in the same team.
1Simultaneously: Analyst A creates an experiment titled 'PQ-002-UserA-Concurrent'. Analyst B creates 'PQ-002-UserB-Concurrent'. Admin C opens the team experiment index.All three operations succeed simultaneously without error or interference.
2Analyst A sets their experiment to 'Only Me' privacy. Analyst B sets theirs to 'My Team'. Both save.Both privacy settings are accepted.
3Analyst B's session: navigate to the index. Search for 'PQ-002-UserA-Concurrent'.Analyst B CANNOT see Analyst A's private experiment in search results.
4Admin C's session: navigate to the index (with Admin view of all team experiments). Search for 'PQ-002-UserA-Concurrent'.Admin C CAN see Analyst A's private experiment (Admin privilege). The experiment is present in Admin C's view.
5Simultaneously: Analyst A adds a tag, Analyst B changes a status, Admin C exports a different experiment. All three perform their actions at the same time.All three operations succeed without error. Each change is applied to the correct experiment.
6Verify the Changelog for each experiment shows the correct user identity for each change.Each experiment's Changelog shows only the attributed user's changes. No cross-attribution errors.
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

PQ-003: Template Enforcement Consistency Across Users

Objective: Demonstrate that a team template with locked steps produces identical structure and enforcement for all users who create experiments from it, regardless of which user creates the experiment.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Three different user accounts (all regular Users, not Admin). OQ-TM-001 template must exist with at least one locked step.
1User A creates an experiment from the OQ-TM-001 template. Record the step descriptions as User A sees them.Experiment created. Steps listed: [Record step 1 text: ________________________________]
2User B creates a separate experiment from the same template. Compare the steps to User A's.Steps are identical: same text, same order, same lock status as User A's.
3User C creates a third experiment from the same template.Steps are identical to Users A and B.
4All three users attempt to modify the locked step description on their respective experiments.All three fail. Locked step is non-editable for all three users.
5All three users complete their locked steps by clicking the checkbox. Verify each completion shows that user's individual identity and a unique timestamp.Each completion is individually attributed: User A's step shows User A, User B's shows User B, User C's shows User C. All timestamps are distinct.
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

PQ-004: Audit Trail Integrity Under Sequential Edits by Multiple Users

Objective: Demonstrate that the audit trail captures a complete, unbroken chain of events when multiple users make sequential modifications to the same experiment record.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: One shared experiment (write access for multiple users). Three users: User A (owner), User B (editor), User C (editor). Note the experiment ELabID.
1User A creates experiment 'PQ-004-MultiUser-AuditTest' with initial body text 'Initial content by User A.' Set permission to allow User B and C to edit. Save.Experiment created. Changelog shows creation by User A.
2User B edits the title to append ' — Updated by B'. Saves.Title update saved. Changelog entry: User B changed title.
3User C adds a metadata field value. Saves.Metadata update saved. Changelog entry: User C changed metadata.
4User A changes the body text (adding a new paragraph). Saves.Body text revision created. Revisions shows new version by User A.
5User B adds a comment: 'PQ-004 comment by User B.'Comment added. Comment panel shows User B's name and timestamp.
6User A locks the experiment.Lock event recorded in Changelog with User A's identity.
7Navigate to the Changelog for this experiment.Changelog shows 5+ distinct entries in chronological order: creation (A), title change (B), metadata change (C), lock (A). Each entry has the correct user attribution and timestamp. No events are missing.
8Navigate to Revisions. Verify the body text revision history.Revision history shows the initial version (User A) and the modified version (User A, Step 4). User B and C's changes (non-body) are in Changelog but not Revisions (correct behavior).
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

PQ-005: Resource Traceability — Lot Impact Analysis

Objective: Demonstrate that a single resource record can be linked to multiple experiments and that the complete list of linked experiments is retrievable from the resource record for impact analysis purposes.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: A Resource record (e.g., a reagent lot) and 10 test experiments must be available. Batch linking via the API or manual linking of 10 experiments is acceptable.
1Open the Resource record 'OQ-RM-001 Test Reagent Lot' (created in OQ-RM-001). Record its ID.Resource record is open. ID: [____________]
2Link 10 different experiments to this resource (either via the body text # autocomplete or the Links panel). Verify each link is created.All 10 experiments are linked to the resource. Each linking operation succeeds.
3Open the resource record in view mode. Navigate to the Linked Experiments or Related section.A list of linked experiments appears. All 10 experiments that were linked in Step 2 are visible in this list.
4Click on one linked experiment from the resource. Navigate to the experiment.Navigation to the experiment is successful. The experiment's Links panel shows the resource.
5From the experiment, click the link back to the resource.Navigation back to the resource is successful. Round-trip bidirectional navigation confirmed.
6Search for 'OQ-RM-001 Test Reagent Lot' in the main search bar.Search results include the resource record as a top result.
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

PQ-006: Backup and Restore Integrity

Objective: Demonstrate that the backup and restore procedure produces complete, accurate, and retrievable records — satisfying 21 CFR Part 11 requirement 11.10(c) for record protection and accessibility.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: This test requires system administrator access. Schedule this during a maintenance window as it involves container restarts. For sciCloud.net® deployments, coordinate with LabLynx support.
1Create a test experiment titled 'PQ-006-BackupRestoreTest' with: body text, 2 metadata fields, 1 attachment, 1 completed step, 1 comment, 1 signature. Note the ELabID.Test experiment created. ELabID: [__________________________]
2Execute the backup procedure: sudo elabctl backup (or sudo /usr/local/bin/elab-backup.sh). Verify completion with no errors.Backup completes successfully. Backup directory contains DB dump and uploads backup.
3Soft-delete the test experiment from LabLynx One. Verify it disappears from the active index.Experiment is no longer visible in the default experiment index.
4Stop the LabLynx One containers: sudo docker compose -f /etc/elabftw.yml downContainers stop cleanly.
5Restore the database from backup: zcat [backup]/elabftw-db.sql.gz │ sudo docker exec -i mysql mysql -u elabftw -p[password] elabftw. Restore uploads: sudo rsync -av --delete [backup]/uploads/ /var/elabftw/web/Restore commands execute without errors.
6Restart LabLynx One: sudo docker compose up -d. Wait for healthy status.Both containers start and report healthy.
7Log in. Navigate to the experiments index. Search for 'PQ-006-BackupRestoreTest'. Verify all content is restored.Experiment is present in the index. All content (body text, metadata, attachment, step completion, comment, signature) is intact and matches the pre-backup state.
8Navigate to the Changelog of the restored experiment. Verify the signature event is present.All audit trail events are intact post-restore. The signature event is preserved with its original timestamp and attribution.
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

PQ-007: System Recovery After Unplanned Restart

Objective: Demonstrate that LabLynx One recovers cleanly from an unplanned server restart, that containers auto-restart, and that no data is lost or corrupted.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: Requires system administrator access. For sciCloud.net®, coordinate with LabLynx support. Note the current state of several experiments before the test.
1Record the titles and last-saved timestamps of 3 existing experiments.Record: Exp 1: [________] Exp 2: [________] Exp 3: [________]
2Simulate an unplanned restart: sudo reboot (or LabLynx-managed equivalent for sciCloud.net®). Wait for the server to complete the reboot cycle (typically 2–5 minutes).Server reboots and comes back online.
3After reboot, wait 3 minutes. Execute: sudo docker psBoth elabftw and mysql containers show 'Up' status with healthy health check. Containers auto-started without manual intervention.
4Navigate to LabLynx One in a browser. Log in with valid credentials.Login page loads. Login succeeds. Dashboard is accessible.
5Navigate to the three experiments recorded in Step 1. Verify their titles, last-saved timestamps, and content are unchanged.All three experiments are present with their original content. No data has been lost or corrupted.
6Navigate to the Changelog of one of the three experiments. Verify the audit trail is intact.Changelog shows all pre-restart events. No audit trail entries are missing.
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

PQ-008: API Integration — Programmatic Record Creation and Audit Trail

Objective: Demonstrate that experiments created programmatically via the REST API are indistinguishable from UI-created records in the audit trail, and that all 21 CFR Part 11 controls apply equally to API-created records.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: A valid Read-Write API key must be available. Python with the requests library, or curl, must be available on the testing workstation.
1Execute via API: POST /api/v2/experiments. Note the returned experiment ID from the Location header.API returns HTTP 201 Created. Record experiment ID: [____________]
2Execute via API: PATCH /api/v2/experiments/{id} with body: {"title": "PQ-008 API Integration Test", "date": "[today]", "metadata": "{\"extra_fields\":{\"Analyst\":{\"type\":\"text\",\"value\":\"API-Integration-Test\"}}}"}.API returns HTTP 200. Metadata field is populated.
3Execute via API: POST /api/v2/experiments/{id}/tags with body {"tag": "PQ-API-Test"}API returns HTTP 201. Tag is added.
4In the LabLynx One browser interface, navigate to the experiment created in Step 1. Verify it appears in the index with the correct title and tag.Experiment is visible in the UI with all API-set values.
5Navigate to the Changelog of the API-created experiment.Changelog shows creation event attributed to the user associated with the API key, with a system timestamp. Tag addition event also recorded.
6In the UI, apply an electronic signature to the API-created experiment (with credential re-entry). Verify signature is applied.Signature is applied and recorded exactly as for a UI-created experiment. The system treats API-created and UI-created records identically.
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

PQ-009: Data Archival and Long-Term Retrievability

Objective: Demonstrate that archived experiments remain fully accessible, searchable, and retrievable, and that archived records maintain complete audit trail integrity.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: At least 10 completed, signed experiments must be available for archiving. This test simulates project closure archival.
1As Admin, navigate to Admin Panel → Batch Actions. Select 'Archive' action. Filter to select 10 completed experiments from a specific category. Preview the action.Preview shows the correct 10 experiments. No unintended experiments are included.
2Execute the batch archive action.10 experiments are archived. They no longer appear in the default experiment index.
3In the Experiments index, use the State filter to select 'Archived'.All 10 archived experiments appear in the filtered view.
4Open one archived experiment. Verify all content (body, metadata, attachments, steps, comments, signatures, Changelog) is intact.All content is preserved exactly as it was before archiving.
5Search for one archived experiment by title (without the archived filter).Archived experiments may or may not appear in default search (depends on configuration). With the archived state filter enabled, the experiment is findable.
6Attempt to edit an archived experiment.Edit is not permitted on archived experiments. The record is protected from modification.
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

PQ-010: Deviation and Incident Scenario — Post-Signature Modification Detection

Objective: Demonstrate that the system's controls correctly detect and document any attempt to modify a signed and locked record, and that the audit trail provides an accurate and complete record of the modification chain.

StepAction / ProcedureExpected ResultActual ResultP/FInitialsDate
Prerequisites / Notes: This scenario simulates a real-world deviation scenario: a record that was signed and locked is subsequently unlocked and modified (a scenario that would require a formal change control in a GMP environment). The test verifies the audit trail captures all events accurately.
1Create a new experiment. Populate all fields. Sign (Analyst). Apply RFC 3161 timestamp. Lock. Record the experiment title and ELabID.Experiment signed, timestamped, and locked. ELabID: [______________]
2As Admin, unlock the experiment. (Record the reason in the Deviation Log, Appendix D). Note the unlock timestamp.Experiment is unlocked. Unlock event appears in Changelog with Admin identity and timestamp.
3Add a corrective note to the body text: 'Correction per Deviation DEV-OQ-PQ10: [describe correction]'. Save.Body text modified. New revision created in Revisions history.
4Re-apply the Analyst signature and the Supervisor signature (new signing events for the corrected record).Two new signature events appear. The original signatures and the new signatures are all visible in the record.
5Re-apply an RFC 3161 timestamp (to the corrected record).New timestamp archive created. The original timestamp archive is also preserved (archived attachment from Step 1).
6Re-lock the experiment.Experiment locked. Re-lock event in Changelog.
7Navigate to the Changelog. Verify it shows the complete chain: creation, original signing, original timestamp, lock, UNLOCK, body edit, new signatures, new timestamp, re-lock — in chronological order with all events attributed.The Changelog shows a complete, unbroken chain of all 10+ events. The unlock event is clearly visible, the modification is attributed to the Admin, and all post-correction signatures are separately attributed. No events are hidden or missing. The record accurately reflects everything that happened.
FieldValue
PQ Scenario Performed By[Name / Title / Signature]
Date of Execution[ ]
QA Observer / Reviewer[Name / Title / Signature]
Scenario ResultPASS / FAIL (circle one) — Deviation Ref (if applicable): [_______]

5.2 PQ Summary

PQ Summary ItemRecorded Value
Total PQ Scenarios10
Scenarios Passed[Record: _____ ]
Scenarios Failed[Record: _____ ] — Deviation IDs: [_____________________ ]
Open Deviations[Record: _____ ] — All deviations documented in Appendix D
PQ Overall ResultPASS / FAIL / CONDITIONAL PASS (circle one)
RoleNamePQ Approval Signature / Date
Validation Owner[Name / Title][Signature / Date]
QA Reviewer[Name / Title][Signature / Date]
Chapter 6

Change Control and Revalidation Requirements

Defines how subsequent changes to the qualified system are controlled and when revalidation is required.

21 CFR Part 11 and GAMP 5 require that validated computerized systems be maintained in a validated state throughout their operational lifetime. Any change to the system must be assessed for its impact on validation status, and appropriate revalidation must be performed before the change is placed in production use.

6.1 Change Control Trigger Criteria

Change TypeRevalidation Requirement
LabLynx One Version Upgrade (minor: x.x.X)Review release notes. Assess impact on validated functions. Execute regression OQ for any changed or potentially impacted features. Full revalidation not typically required for minor patch updates, but a documented risk assessment is mandatory.
LabLynx One Version Upgrade (major/minor: X.x.0 or x.X.0)Full OQ repeat for all CRITICAL and HIGH-risk functions. PQ-001 through PQ-005 minimum. Update System Baseline (Section 2). Update IQ for any changed infrastructure.
Configuration Change (new category, template, status)Document the change. Execute the relevant OQ test cases for the changed configuration element (e.g., OQ-TM-001/002 for a new template). Minimal revalidation may be sufficient.
Authentication Change (new SSO provider, MFA enforcement)Execute OQ-AC-001 through OQ-AC-004 for the new authentication path.
Infrastructure Change (new server, OS upgrade, Docker upgrade)Full IQ repeat. Execute OQ-AT-004/005 (audit log continuity). Execute PQ-007 (restart recovery).
Network or TLS Certificate ChangeExecute IQ-005 and IQ-006. Verify application accessibility and API connectivity.
Backup System ChangeExecute IQ-010 and PQ-006.
sciCloud.net® Platform Update (LabLynx-managed)LabLynx is responsible for infrastructure change control. Customer must receive notification of changes and LabLynx's qualification documentation. Customer executes application-level OQ/PQ regression as warranted.
Chapter 7

Validation Summary Report

Summarizes the outcome of the IQ, OQ, and PQ execution for final QA review and sign-off.

Complete this section after all IQ, OQ, and PQ testing is complete and all deviations have been resolved or risk-accepted by QA. This section constitutes the formal conclusion of the validation exercise.

7.1 Summary of Validation Results

Summary ElementRecorded Value
System Name and VersionLabLynx One — Version: [___________________ ]
Validation PeriodFrom: [__ / __ / ____] To: [__ / __ / ____]
IQ ResultPASS / FAIL / CONDITIONAL PASS — Tests: [____] Passed / [____] Failed / [____] N/A
OQ ResultPASS / FAIL / CONDITIONAL PASS — Tests: [____] Passed / [____] Failed / [____] N/A
PQ ResultPASS / FAIL / CONDITIONAL PASS — Scenarios: [____] Passed / [____] Failed
Total Open Deviations[____] Critical / [____] Major / [____] Minor — All closed: Yes / No
Overall Validation ResultVALIDATED / NOT VALIDATED / CONDITIONALLY VALIDATED (circle one)
Conditional Use Restrictions (if applicable)[Describe any restrictions on system use pending CAPA completion: ____________ ]

7.2 21 CFR Part 11 Compliance Attestation

Based on the test evidence documented in this validation package, the following attestation is made regarding LabLynx One's compliance with 21 CFR Part 11:

21 CFR Part 11 SectionCompliance Evidence References
§11.10(a) — ValidationLabLynx One has been validated to ensure accuracy, reliability, consistent intended performance, and the ability to discern invalid or altered records. Evidence: IQ-001 through IQ-014; OQ-EX-007, OQ-EX-008; PQ-001 through PQ-010.
§11.10(b) — Record Legibility and RetentionElectronic records are accurate and complete. They can be accurately and readily retrieved throughout the records retention period. Evidence: OQ-EX-010, OQ-SC-001, PQ-005, PQ-009.
§11.10(c) — Record ProtectionComputer-generated audit trails prevent loss or modification of records. Backup procedures protect records for retrieval during the retention period. Evidence: OQ-EX-007, OQ-AT-001 through OQ-AT-005, PQ-006.
§11.10(d) — Access LimitationSystem access is limited to authorized individuals. Evidence: OQ-AC-001 through OQ-AC-007; IQ-005, IQ-012, IQ-013.
§11.10(e) — Audit TrailsSecure, computer-generated, time-stamped audit trails independently record operator entries and actions. Evidence: OQ-AT-001 through OQ-AT-005, PQ-004, PQ-010.
§11.30 — Open NetworksRecords transmitted via open networks (HTTPS) include measures to ensure authenticity, integrity, and confidentiality. Evidence: IQ-005, IQ-006; OQ-SC-001.
§11.50 — Signature ManifestationsSigned electronic records contain the printed name, date/time, and meaning of the signature. Evidence: OQ-SIG-001, OQ-SIG-003.
§11.70 — Signature LinkageElectronic signatures are linked to their electronic records to preclude transfer or falsification. Evidence: OQ-SIG-002, OQ-SIG-005, PQ-010.
§11.100 — Signature UniquenessEach electronic signature is unique to one individual and not reused or reassigned. Evidence: OQ-SIG-004.
§11.200 — Signature ComponentsNon-biometric signatures employ at least two distinct identification components (user ID + password / + MFA). Evidence: OQ-AC-001, OQ-AC-003, OQ-SIG-001.
§11.300 — Signature ControlsControls ensure only genuine owners use their signatures; systems detect attempted misuse. Evidence: OQ-AC-002, OQ-SIG-004.

7.3 Final Approval and Release

By signing below, the approvers confirm that: (1) all validation testing has been completed as documented in this package; (2) all deviations have been resolved or risk-accepted; (3) LabLynx One is released for use in the generation and maintenance of electronic records subject to 21 CFR Part 11; and (4) this validation package is retained as a controlled record for the life of the system.

RoleName / TitleFinal Approval Signature / Date
Validation Owner[Name / Title][Signature / Date]
Quality Assurance Director[Name / Title][Signature / Date]
System Owner / IT Director[Name / Title][Signature / Date]
Department Head / VP R&D[Name / Title][Signature / Date]
Regulatory Affairs (if applicable)[Name / Title][Signature / Date]
Appendix A

Appendix A: 21 CFR Part 11 Traceability Matrix

Maps 21 CFR Part 11 subsections to the specific test cases in this manual that verify each requirement.

21 CFR §Requirement SummaryTest Cases Providing Evidence
§11.10(a)ValidationIQ-001–014; OQ-EX-001–010; OQ-SIG-001–005; OQ-TS-001–002; OQ-AT-001–005; PQ-001–010
§11.10(b)Accurate/Complete RecordsOQ-EX-001,002,003,005,010; OQ-TM-001,002; OQ-RM-001; PQ-001,003,005
§11.10(c)Record ProtectionOQ-EX-007,008; OQ-AT-001–005; OQ-TS-001,002; IQ-010; PQ-006,009
§11.10(d)Access ControlsOQ-AC-001–007; IQ-005,012,013; PQ-002
§11.10(e)Audit TrailsOQ-AT-001–005; OQ-EX-004; PQ-004,010
§11.30Open Networks / EncryptionIQ-005,006; OQ-SC-001
§11.50Signature ManifestationsOQ-SIG-001,003; PQ-001
§11.70Signature Linkage to RecordOQ-SIG-002,005; OQ-TS-002; PQ-010
§11.100Signature UniquenessOQ-SIG-004; PQ-003
§11.200Signature ComponentsOQ-AC-001,003; OQ-SIG-001
§11.300Signature ControlsOQ-AC-002; OQ-SIG-004
Appendix B

Appendix B: Deviation Log Template

A reusable template for recording and tracking deviations discovered during validation execution.

Use one form per deviation. Assign sequential deviation numbers: DEV-[DocumentNumber]-[SequentialNumber] (e.g., DEV-VLD-ELAB-001-01).

FieldValue
Deviation NumberDEV-_________________
Date of Deviation[__ / __ / ____]
Validation PhaseIQ / OQ / PQ (circle one)
Test Case ID[e.g., OQ-SIG-001]
Step Number[Step ____]
Description of Deviation[Describe exactly what occurred vs. what was expected: ________________________]
Expected Result (from protocol)[Exact text from Expected Result column: ___________________________________]
Actual Result Observed[Exact text of what was observed: ___________________________________________]
Deviation ClassificationCritical / Major / Minor (circle one)
Immediate Impact Assessment[Does this deviation prevent system use for GxP records? Yes / No. Justification: ___]
Root Cause Investigation[Describe root cause: ________________________________________________________]
CAPA RequiredYes / No (circle one)
CAPA Description (if required)[Describe corrective and preventive action taken: _____________________________]
Retest RequiredYes / No (circle one)
Retest ResultPASS / FAIL / N/A (circle one)
Resolution Date[__ / __ / ____]
QA Approval[QA Reviewer Name / Signature / Date]
Appendix C

Appendix C: Abbreviations and Definitions

Defines abbreviations and terms used throughout this manual.

Abbreviation / TermDefinition
ALCOA+Attributable, Legible, Contemporaneous, Original, Accurate, Complete, Consistent, Enduring, Available — data integrity framework.
CAPACorrective and Preventive Action. Documented response to a deviation, identifying root cause and actions to prevent recurrence.
CFRCode of Federal Regulations (United States).
CSVComputer System Validation. The formal process for demonstrating that a computerized system consistently produces a result meeting predetermined specifications.
ELNElectronic Laboratory Notebook.
GAMP 5Good Automated Manufacturing Practice guidance for validation of automated systems, published by ISPE. Version 5 (2nd Edition) is the current reference.
GLPGood Laboratory Practice.
GMPGood Manufacturing Practice.
GxPCollective term for Good [x] Practices (GLP, GMP, GCP, etc.).
IQInstallation Qualification — documented verification that equipment/software has been installed correctly.
MFAMulti-Factor Authentication — authentication requiring two or more verification factors.
OQOperational Qualification — documented verification that equipment/software operates according to its specifications.
PQPerformance Qualification — documented verification that equipment/software consistently performs according to specifications under actual conditions of use.
RFC 3161Internet Standard for trusted timestamping, providing independent third-party verification of document existence at a specific time.
SOC 2Service Organization Control 2 — audit standard for service providers covering security, availability, processing integrity, confidentiality, and privacy.
TSATimestamp Authority — a trusted third party that issues RFC 3161 timestamp tokens.
URSUser Requirements Specification — document defining the functional and non-functional requirements that a system must meet.
21 CFR Part 11Title 21 of the U.S. Code of Federal Regulations, Part 11 — Electronic Records; Electronic Signatures. FDA regulation.
Appendix D

Appendix D: Referenced Documents

Lists documents referenced by or supporting this validation manual.

DocumentAuthorReference / Location
21 CFR Part 11 (1997)FDAElectronic Records; Electronic Signatures. 62 FR 13430. https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfcfr/CFRSearch.cfm?CFRPart=11
FDA Guidance — Part 11, ERR, ES (2003)FDAGuidance for Industry: Part 11, Electronic Records; Electronic Signatures — Scope and Application. https://www.fda.gov/regulatory-information/search-fda-guidance-documents
FDA Guidance — Computerized Systems in Clinical Investigations (1999)FDAGuidance for Industry: Computerized Systems Used in Clinical Investigations.
GAMP 5 (2nd Edition, 2022)ISPEGood Automated Manufacturing Practice (GAMP) 5: A Risk-Based Approach to Compliant GxP Computerized Systems.
ICH Q9(R1) Quality Risk ManagementICHHarmonised Tripartite Guideline — Quality Risk Management.
LabLynx One User Manual v3.0LabLynxComplete feature reference for users. Produced by LabLynx, Inc.
LabLynx One Administrator Manual v1.0LabLynxTeam and system administration reference. Produced by LabLynx, Inc.
LabLynx One Developer Manual v1.0LabLynxREST API reference and integration guide. Produced by LabLynx, Inc.
LabLynx One IT Admin Manual v1.0LabLynxSoftware stack, installation, and technical specifications. Produced by LabLynx, Inc.
RFC 3161 — Time-Stamp Protocol (TSP)IETFInternet X.509 Public Key Infrastructure Time-Stamp Protocol. https://www.rfc-editor.org/rfc/rfc3161

LabLynx One — IQ/OQ/PQ Validation Manual | VLD-ELAB-001

21 CFR Part 11 / GAMP 5 Category 4

LabLynx, Inc. | www.lablynx.com | support@lablynx.com | www.elabeln.com

© 2026 LabLynx, Inc. | CONFIDENTIAL — CONTROLLED DOCUMENT | All rights reserved.

LabLynx, Inc. | www.elabeln.com | support@lablynx.com Page

LabLynx, Inc. | www.elabeln.com | support@lablynx.com Page

Documentation Set · Living Framework

LabLynx One FDS Roadmap

A twelve-module laboratory operations suite proposed for LabLynx One — using the native Team construct, renamed Experiments and Resources, and custom API-integrated plugin apps. Template catalogs and module scope are designed to evolve as each Team is configured.

Roadmap Disclaimer

This section describes a proposed future architecture for LabLynx One. It is a living planning document, not a specification of currently shipped functionality — nothing here should be read as available today.

Part I

The LabLynx One Concept

Before profiling each of the twelve modules, this section establishes the architectural pattern all twelve share: a single LabLynx One platform, the compliant hosting layer it runs on, one Team per module, a consistent approach to renaming Experiments and Resources, and a plugin app framework that fills native gaps with purpose-built UI/UX.

Chapter 1

What Is LabLynx One?

LabLynx One is not a new product built from scratch. It is a solution profile — a deliberate configuration of LabLynx's proven platform into twelve functionally distinct, purpose-built modules, each operating as its own Team, extended where necessary with custom plugin apps.

Why One Platform Instead of Twelve Separate Products

Most laboratories assemble their operational stack from separate point solutions: a LIMS from one vendor, an ELN from another, a document management system from a third, a training-tracking spreadsheet, an asset register, and so on. Each integration is a maintenance burden, each vendor is a separate contract and support relationship, and each system has its own login, its own permission model, and its own idea of what a "sample," a "document," or a "user" is.

LabLynx One starts from a different premise: LabLynx One's underlying data model — Experiments, Resources, Teams, templates, custom metadata fields, electronic signatures, and a RESTful API — is general-purpose enough to be reconfigured, renamed, and extended into twelve distinct operational functions without requiring twelve distinct pieces of software. The result is one login, one audit trail, one permissions model, one API, and one unlimited-user license underneath every module a lab runs.

One Platform, Twelve Faces

Every module in this profile is the same LabLynx One instance, configured differently. A user moving from the Quality Management Team to the Instrument & Asset Management Team is still in LabLynx One — but the templates, terminology, permissions, and (where a plugin app is installed) the UI itself are tailored specifically to that function.

The Layered Architecture

Everything in this document sits at one of five layers, each building on the one below it. It's worth seeing the whole stack once, up front, before diving into any single Part:

Compliant hosting platform
sciCloud.net or LabServer, SSO/IAM, encryption, uptime, compliance certifications
LabLynx One platform
The Team model, renamed Experiments/Resources, the RESTful API, the plugin framework
Modules & add-on applications
The twelve modules (Part II) and five add-on applications (Part III)
Solution template libraries
Thirteen pre-assembled, industry-specific bundles (Part IV)
Your lab's configured solution
What every layer below exists to produce

The Twelve Modules at a Glance

Module 1
Dashboard
Module 2
LIMS
Module 3
LIS
Module 4
LES
Module 5
ELN
Module 6
Logbooks
Module 7
Training Tracking
Module 8
Document Management
Module 9
Quality Management
Module 10
Instrument & Asset Management
Module 11
Inventory Management
Module 12
Lab Portal

Who This Profile Is For

This document serves two audiences at once: it is a sales and positioning asset explaining what LabLynx One is and why a lab would want it, and it is a working functional design specification — a build reference for how each module's LabLynx One Team should actually be configured, what its Experiment and Resource templates should look like, and where a plugin app is required to close a gap the native platform doesn't cover. Expect the FDS chapters (Part II) to read more like a build document than marketing copy.

Chapter 2

Compliant Hosting Platform

Every Team, every module, and every plugin app described in this profile runs on top of a hosting layer built specifically for regulated laboratory environments. LabLynx offers exactly two deployment options — sciCloud.net, the standard managed cloud, and LabServer, the on-premises appliance for labs that can't or won't put their data in the cloud. Both run the identical LabLynx One software stack.

sciCloud.net — The Standard Deployment

sciCloud.net is LabLynx's purpose-built laboratory informatics hosting platform — not a generic cloud host repurposed for lab data, but infrastructure designed from the ground up around FAIR data principles (Findable, Accessible, Interoperable, Reusable), regulatory compliance at the infrastructure level, and the identity and access control requirements of multi-application laboratory environments. It is the standard hosting solution for every LabLynx One deployment, not an option reserved for a subset of clients.

Infrastructure CharacteristicSpecification
Cloud ProviderAmazon Web Services (AWS) — US East and West regions
Tenant ArchitectureDedicated tenant per organization — no shared database infrastructure between clients
Uptime SLA99.8% availability, with real-time monitoring from multiple global locations
Backup ScheduleHourly incremental backups; daily full backups with geographically distributed secondary storage
Disaster RecoveryDocumented RTO/RPO with tested failover procedures
Encryption at RestAES-256 via AWS Key Management Service (KMS)
Encryption in TransitTLS 1.2 or higher for all browser-to-server and API communications
AuthenticationSAML 2.0 SSO via OpenSocial; MFA configurable and enforceable system-wide; LDAP integration supported
Access ControlRole-based access control at user, group, project, and site levels; semi-annual access reviews
Infrastructure CertificationAWS SSAE 18 SOC 2-certified data centers; AWS SOC 3 public attestation available
Annual Security AuditIndependent third-party audit against all 20 NIST SP 800-53 control families, and Virginia SEC530

sciCloud.studio — The Dev/Sec/Ops Layer Behind It

Underneath the hosting environment itself sits sciCloud.studio — the development, security, and operations framework that governs every application running on sciCloud.net. Because sciCloud.net is the standard hosting solution for the entire client base rather than a subset, sciCloud.studio's controlled release process applies uniformly across every LabLynx One deployment.

  • Controlled release management — every update is tested, documented, and released through formal change management before it reaches a client environment
  • Security testing integration — automated security scanning and penetration testing are built into the development pipeline, not bolted on after release
  • Configuration management — complete configuration records for every client environment, supporting IQ/OQ/PQ validation documentation and change-impact assessment
  • Quality assurance — every deliverable, from software releases to validation documents to training materials, passes quality review before release

LabServer — On-Premises Deployment

LabServer is the on-premises alternative: a pre-configured hardware/software appliance running the identical LabLynx One software stack within a laboratory's own network, data center, or air-gapped environment. It exists specifically for the minority of labs where cloud hosting isn't viable, not as a lesser-featured fallback — the software, the API, and the validation documentation are the same either way.

Government & Defense
Air-Gapped Environments

Government, defense, and intelligence-community labs handling classified or controlled unclassified information can run LabServer entirely on the local network — no data ever leaves the facility.

Data Sovereignty
Strict Residency Requirements

Organizations subject to regulations prohibiting cloud storage of specific data types can deploy LabServer within a facility they own and operate, maintaining full control over physical data location.

Enterprise IT Governance
Self-Managed Infrastructure

Large enterprises with existing IT management frameworks and a preference for capital-expenditure deployment can bring LabLynx One under their own monitoring and backup infrastructure.

Regulatory Approval
Cloud Pending or Restricted

Labs awaiting cloud-system regulatory approval can deploy LabServer to operate immediately while cloud authorization is pursued in parallel.

LabServer Technical Specifications

CharacteristicSpecification
HardwarePre-configured compact server appliance, shipped ready for rack or desktop installation; standard Ethernet networking; serial and USB ports for instrument connectivity
Software StackIdentical to the sciCloud.net hosted edition — same applications, same REST API endpoints, same authentication, same validation documentation
Backup OptionsCustomer-managed local backup to NAS/SAN, or LabLynx-managed cloud backup where internet connectivity is available
Deployment TimelineTypically 2–4 weeks, dependent on the customer's IT environment complexity (vs. under 1 week for standard sciCloud.net onboarding)
Updates & PatchingManaged by LabLynx on customer schedule, or by customer IT staff via offline update packages for air-gapped deployments
Dual Role as LabVia Hub

When LabServer is deployed, it also serves as the LabVia Hub (Chapter 19) — the on-site hardware component for instrument connectivity. One appliance runs the platform and manages direct instrument connections, eliminating the need for separate hardware and separate IT procurement and qualification cycles.

Choosing Between Them

The overwhelming majority of LabLynx One deployments use sciCloud.net — it deploys faster, carries no IT infrastructure burden, and is operationally superior for most laboratories. LabServer exists specifically for the air-gapped, data-sovereignty, and IT-governance cases above, not as a general-purpose alternative. Either way, the choice of hosting layer is independent of which of the twelve modules or five add-on applications a lab activates — it's a decision about where the platform runs, not what it runs.

Chapter 3

The Teams-as-Modules Architecture

LabLynx One's native Team construct is the single mechanism that makes LabLynx One possible. Each of the twelve modules is configured as its own Team, with its own membership, its own permission boundaries, and its own template library — while remaining part of one unified instance.

What a Team Natively Provides

In stock LabLynx One, a Team is a workspace boundary: it scopes which Experiments, Resources, templates, and tags a group of users can see and act on, and it supports its own administrators, its own category/status lists, and its own permission rules layered on top of the platform-wide role hierarchy (Admin / Team Leader / User). This is ordinarily used to separate research groups or departments. LabLynx One repurposes the same mechanism to separate functions instead of departments.

Data Isolation by Function
A calibration record in the Instrument & Asset Management Team is invisible to a user in the Inventory Management Team unless explicitly shared or cross-linked — preventing functional data from bleeding across modules that shouldn't share it by default.
Independent Template Libraries
Each Team maintains its own set of Experiment and Resource templates, so the "template picker" a Quality Management user sees is entirely different from the one a Logbooks user sees, even though both are the same underlying LabLynx One feature.
Team-Scoped Permissions
Team Leaders can be assigned per-module rather than per-department, allowing a Quality Manager to administer the Quality Management Team without gaining any administrative rights over Inventory Management or Document Management.
Shared Identity, Shared Audit Trail
A single user account, a single login, and a single platform-wide audit trail span every Team a person belongs to — so a lab technician working across LIMS, LIS, ELN, and Logbooks Teams has one identity, not four.

Cross-Team Membership Is the Norm, Not the Exception

Most lab staff will belong to more than one Team. A bench analyst is likely a member of the LIMS, ELN, and Logbooks Teams; a quality manager is likely a member of Quality Management, Document Management, and Training Tracking; a lab director may hold Team Leader rights across several. LabLynx One's multi-Team membership model supports this natively — the architecture decision is simply which Teams exist and what each one is configured to do.

One Team is the exception to that architecture decision: the Dashboard Team (Chapter 6) has no selective membership at all. Every user is added to it automatically the moment their account is created, precisely because its entire purpose is to reflect back whichever other Teams that person happens to belong to — it has to be universal to do that job.

Design Consistency Across the Twelve Teams

To keep twelve independently configured Teams from drifting into twelve inconsistent experiences, every module in this profile follows the same underlying conventions: a common naming pattern for renamed Experiments/Resources (Chapter 4), a common approach to when and how a plugin app is introduced (Chapter 5), and a common FDS structure (Part II) covering configuration, templates, roles, compliance, integration, and KPIs. This consistency is what keeps LabLynx One feeling like one coherent product rather than twelve unrelated configurations of the same software.

Chapter 4

Renaming the Core Objects

Every LabLynx One Team is built from the same two core object types — Experiments and Resources — plus their categories, statuses, and tags. LabLynx One's design pattern renames these objects per module so that each Team's terminology matches the function it performs, without altering the underlying data model.

The General Renaming Pattern

In LabLynx One, an Experiment is a dated, signable, templated record with a body, custom metadata fields, linked items, and a status — the platform's event/activity object. A Resource is a persistent, categorized, non-dated record — the platform's registry/inventory object. Every module in this profile maps its core function onto one or both of these objects and renames them accordingly in that Team's configuration (category labels, template names, and — where a plugin app is installed — the UI chrome itself).

Native LabLynx One ObjectGeneral RoleTypical Rename Pattern
ExperimentDated, signable, workflow-driven recordTest Order, Notebook Entry, Log Entry, Course Completion, Controlled Doc Revision, Deviation/CAPA, Work Order, Transaction, Portal Request
ResourcePersistent, categorized registry itemSample/Specimen, Protocol, Logbook, Course/Curriculum, Controlled Document, Quality Record Type, Instrument/Asset, Inventory Item, Portal Widget
CategoryGrouping/classification layerTest Panel, Experiment Type, Log Type, Course Category, Document Type, Quality Record Class, Asset Class, Item Class, Portal Section
StatusWorkflow stateModule-specific lifecycle (e.g., Received → In Testing → Reviewed → Reported for LIMS; Draft → Review → Approved → Locked for Document Management)
TagFree-form cross-cutting labelGenerally retained as-is across modules for cross-Team searchability
Why Rename Rather Than Rebuild

Renaming preserves every native LabLynx One capability — templating, custom metadata fields, e-signatures, audit trail, versioning, linking, the API — while presenting each Team with terminology that matches how its users actually think and talk. A calibration technician should see "Instrument," not "Resource"; a document controller should see "Controlled Document," not "Resource." The data model doesn't change; the label does.

Where the Detail Lives

The full, module-by-module renaming map — every Experiment and Resource label, per Team — is documented in each module's FDS chapter (Part II, "Object Renaming Map") and consolidated for quick reference in Appendix A.

Chapter 5

The Plugin App Framework

Renaming closes the terminology gap. It does not close every functional gap. Where a module's requirements exceed what native templates, fields, and workflows can reasonably deliver, this profile calls for a custom plugin app — a purpose-built UI/UX layer that talks to LabLynx One entirely through its existing RESTful API.

When a Plugin App Is Warranted

Specialized Visualization
A function needs a purpose-built visual the native rich-text/table editor can't reasonably produce — a Levey-Jennings chart, an interactive floor-plan asset map, a kanban board.
Structured Multi-Step Workflow
A process needs guided, gated, multi-screen data entry beyond what an Experiment template's linear body supports — e.g., a CAPA workflow with branching review steps.
Non-Technical End-User Experience
The audience is not a lab scientist and shouldn't need to understand Experiments/Resources at all — e.g., an external client submitting a Lab Portal request.
Cross-Team Aggregation
A function needs a single view spanning multiple Teams' data at once — e.g., a Lab Portal dashboard, or an Instrument & Asset Management calendar pulling from Inventory.

How a Plugin App Talks to LabLynx One

Every plugin app in this profile is architected as a thin client against LabLynx One's native RESTful API — it authenticates as a service account or on-behalf-of a logged-in user, reads and writes Experiments/Resources/metadata/tags/uploads through documented endpoints, and never bypasses LabLynx One's own permission, audit-trail, or e-signature logic. The plugin supplies the UI; LabLynx One remains the single system of record. This is detailed further in Chapter 38.

Plugins Extend the UI. They Don't Fork the Data.

A hard architectural rule for this profile: no plugin app maintains its own independent database of record. Every plugin reads from and writes back to LabLynx One via API. This keeps the audit trail, e-signature chain, and reporting layer unified across all twelve modules even when three or four of them have custom front-ends.

Plugin Apps Proposed in This Profile

Each module's FDS chapter (Part II) specifies its own plugin app under "Plugin App Specification," including its purpose, its proposed UI/UX, and the API endpoints/webhooks it depends on. As a preview, plugin apps are proposed for Dashboard (the universal home screen and module launcher every user lands on), LIMS (sample intake & chain-of-custody console), LIS (patient order & result console with critical-value workflow), LES (a coordinated suite spanning guided step-by-step execution, live calculation, in-process control checking, and real-time deviation capture), Quality Management (CAPA/nonconformance workflow board), Instrument & Asset Management (calibration/maintenance calendar and asset map), Inventory Management (reorder dashboard and barcode receiving console), and the Lab Portal (external client-facing request and results portal). The remaining modules (ELN, Logbooks, Training Tracking, Document Management) are assessed as sufficiently served by native LabLynx One with lighter-weight UI accents rather than a full plugin build — a determination each chapter explains under "Functional Gaps Identified."

Cross-Cutting Platform Plugin Apps

The plugin apps above are each scoped to a single module's specific job. A second category of plugin app cuts across every Team instead — general-purpose capability that any module can draw on, built once against the API and reused everywhere rather than rebuilt per Team. These are proposed as shared, platform-wide plugin apps available to whichever Teams need them.

Report Designer
A drag-and-drop report builder letting any authorized user construct, save, and schedule reports against any Team's data — exportable to PDF, Excel, or HTML — without waiting on a custom development request.
Forms Designer
A visual form builder for creating new Experiment/Resource templates and their custom metadata fields through a drag-and-drop interface, rather than requiring engineering involvement every time a Team needs a new template.
AI Chatbot
A conversational assistant, available from any screen, that answers natural-language questions against the data the asking user already has permission to see — "what samples are overdue in my queue," "when does my next qualification expire" — without needing to know which Team or template holds the answer.
User-Customized Dashboards
A general-purpose, drag-and-drop widget canvas available to any user or Team Leader — distinct from the Dashboard module's own fixed "My Work Summary" widgets — for building bespoke visual layouts against any data the builder is permitted to query.
Barcode & Label Designer
A visual editor for designing custom label and barcode formats for samples, specimens, assets, and inventory items, reused across LIMS, LIS, Instrument & Asset Management, and Inventory Management rather than hard-coded per Team.
Global Search / Command Palette
A single, keyboard-driven search available from anywhere in the platform that jumps directly to a sample, case, document, or asset regardless of which Team owns it — complementing the Dashboard's work summary with an on-demand "find anything" capability.
Notification & Escalation Rules Engine
A configurable rules builder for defining custom alert and escalation logic — "if X is overdue by Y days, notify Z" — generalizing the ad hoc alerting already built into individual modules (expiring qualifications, overdue calibrations, low stock) into one reusable, cross-Team engine.
Data Import & Migration Wizard
A guided tool for bulk-importing legacy data — spreadsheets, CSV exports, records from a prior LIMS or ELN — directly into the correct renamed templates during onboarding, rather than months of manual re-entry.
Workflow & Approval Chain Builder
A visual tool letting a Team Leader configure custom multi-step approval and routing chains for any Experiment type — who reviews, in what order, with what escalation on delay — without an engineering request for every new workflow variant.
Audit-Ready Evidence Package Generator
A purpose-built assembly tool, distinct from the general Report Designer, that compiles a cross-Team evidence bundle for a specific accreditation body or inspection — signed records, CAPAs, calibration certificates, and training transcripts — into one exportable package ahead of an audit.
Same Architecture, Same Rule

Cross-cutting plugin apps follow the identical architectural pattern established earlier in this chapter: they talk to LabLynx One entirely through the RESTful API, authenticate on-behalf-of the requesting user so they never expose more than that person's existing permissions already allow, and never maintain an independent database of record. Being reusable across Teams doesn't change the rule that LabLynx One remains the single system of record.

Part II

The Twelve Modules — Functional Design Specifications

Each chapter that follows profiles one module as its own LabLynx One Team. Every chapter follows the same eleven-part structure so the twelve modules stay directly comparable: overview, Team configuration, object renaming, native capabilities, functional gaps, plugin app specification, template catalog, roles, compliance, integration points, and KPIs.

Chapter 6 · Module FDS

Dashboard

The Dashboard Team is the one Team every single user in LabLynx One belongs to. Where every other module is scoped to a function some staff perform, the Dashboard module is scoped to a person — it is the home screen a user lands on at login, showing which modules they can reach and what their work looks like across every Team they're actually a member of.

Module Overview & Positioning

Every other Team in this profile answers "what work happens here." The Dashboard Team answers a different question: "what does my day look like across all of the Teams I belong to?" It is the first thing a user sees when they log in, and it is deliberately built almost entirely as a plugin app rather than as native LabLynx One screens — because its entire job is to reach across Team boundaries and pull together a single, personalized view, something the native per-Team UI was never designed to do.

Positioned this way, Dashboard is the internal counterpart to the Lab Portal (Chapter 17): the Lab Portal is the unified front door for people outside the lab, and the Dashboard is the unified front door for people inside it. Both are aggregation layers built primarily as plugin apps over the same underlying Teams; they differ in audience, in what they're allowed to see, and in how they authenticate against the API (detailed in Chapter 20).

The One Team With Universal Membership

Every other Team in this profile has deliberate, functional membership — a person joins the Quality Management Team because their job touches quality records. The Dashboard Team breaks that pattern on purpose: membership is automatic and universal. Every user account, at the moment it's created, is added to the Dashboard Team with no action required by an administrator. This is what guarantees nobody ever logs in to a blank screen.

Team Configuration

  • Team name: Dashboard. Unlike the other twelve Teams, this one has no sub-groupings by department or discipline — everyone is a Member of the same single Team.
  • Permission model: Member (automatic for every user — views their own personalized dashboard only), Dashboard Content Admin (publishes lab-wide announcements and manages default widget layouts per role), Team Leader (full configuration).
  • Status workflow: this Team's own native records are lightweight — primarily Announcements, which follow Draft → Published → Expired. The "work" a user sees on their dashboard isn't native to this Team at all; it's pulled live, in real time, from whatever other Teams that specific user belongs to.

Object Renaming Map

Native ObjectRenamed AsNotes
ExperimentAnnouncement / NoticeA dated, lab-wide broadcast item (e.g., "Instrument down for maintenance," "New SOP published")
ResourceSaved View / Widget ConfigurationA user's or role's personalized dashboard layout
ResourceRole-Based Default LayoutThe out-of-the-box widget set shown to a new user based on their role
Experiment CategoryAnnouncement TypeMaintenance, policy, training, general

Native LabLynx One Capabilities Leveraged

Universal Team Membership
The single native mechanism that makes a guaranteed landing page possible — every account belongs here from creation, with no configuration required.
RESTful API
Almost everything displayed on the Dashboard is a live read from other Teams' Experiment and Resource endpoints — this module leans on the API more than any other.
Custom Metadata Fields
Announcement priority, audience targeting, and expiration date captured as structured fields.
Tagging
Announcements tagged by category so users can filter what they see.

Functional Gaps Identified

  • No native cross-Team aggregation or summary view — LabLynx One's UI is built around one Team at a time, not a rollup across several.
  • No native module launcher that reflects which Teams a specific logged-in user actually belongs to.
  • No native "my open items" queue spanning multiple Teams (e.g., open test orders, pending quality cases, and expiring qualifications shown together).
  • No native lab-wide announcement/notice surfaced automatically at login.
  • No native personalization — pinning, reordering, or hiding widgets on a per-user basis.

Plugin App Specification

The Dashboard Plugin App is presented as the main menu / home screen of the entire LabLynx One experience — the first screen after login, and the one persistent "home" link available from anywhere in the system. Unlike the module-specific plugins in Part II (which sit alongside their native Team), Dashboard's plugin largely is the module — the native Team underneath mainly exists to hold Announcements and layout preferences.

Module Launcher
  • → One tile per Team the logged-in user belongs to
  • → Generated dynamically from actual membership — never shows a locked tile for a Team the user can't access
  • → One click opens that Team's native LabLynx One view or its plugin app
My Work Summary
  • → Open test orders assigned to me (LIMS/LIS)
  • → Pending quality cases assigned to me (Quality Management)
  • → Qualifications expiring soon (Training Tracking)
  • → Documents awaiting my review (Document Management)
  • → Calibrations/maintenance due on assets I own (Instrument & Asset Mgmt)
  • → Low-stock items I manage (Inventory Management)
Lab-Wide Announcements
  • → Published Announcements shown by priority/audience
  • → Read/acknowledgment tracking for policy-critical notices
Personalization
  • → Pin, reorder, or hide individual widgets
  • → Role-based default layout on first login
Aggregation On-Behalf-Of the User, Not Around Them

This is the single most important architectural rule for this module: every "My Work Summary" query the Dashboard plugin runs must authenticate as the logged-in user, not as an elevated service account, so a person only ever sees exactly what they'd see by visiting each Team directly — never more. This is a different pattern than the Lab Portal's aggregation (which authenticates as a scoped service account to assemble one external client's cross-Team view). The two module's plugins share an architecture but not a permission model, and the distinction matters for security: Dashboard must never become a backdoor to data a user couldn't otherwise reach.

Experiment & Resource Template Catalog

This module's own template catalog is intentionally small — its value comes from what it reads from the other twelve Teams, not from records it originates itself.

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Lab-Wide AnnouncementExperimentAnnouncement TypeBroadcasts a dated notice to all or targeted usersPriority, audience/role targeting, expiration dateDraft → Published → Expired—
Personal Widget ConfigurationResourceSaved ViewStores one user's pinned/reordered widget layoutWidget list, order, visibilityActive—
Role-Based Default LayoutResourceRole-Based Default LayoutDefines the out-of-the-box widget set for a given roleRole, default widget listActive → Retired—

Roles & Permissions

RoleView Own DashboardPublish AnnouncementsManage Default LayoutsConfigure Team
Member (every user, automatic)✓———
Dashboard Content Admin✓✓✓—
Team Leader✓✓✓✓

Compliance & Standards Touchpoints

Least-Privilege Access Control 21 CFR Part 11 (announcement audit trail)

This module's primary compliance concern isn't a regulatory framework specific to lab testing — it's the security discipline described above: a cross-Team aggregation view must never expose more than the user's own existing permissions already allow. Published Announcements still carry a full audit trail of authorship and edit history like any other Experiment.

Integration Points with Other Modules

Dashboard reads — but does not write to — every other Team a given user belongs to: LIMS and LIS open orders, Quality Management assigned cases, Training Tracking expiring qualifications, Document Management pending reviews, Instrument & Asset Management due calibrations, Inventory Management low-stock alerts, and more, as a lab's specific Team configuration warrants. It is the one module whose "Integration Points" section is, by design, every other module in this profile.

Success Metrics / KPIs

  • Percentage of user sessions that begin at the Dashboard rather than a bookmarked deep link
  • Average time from login to reaching the needed task (time-to-task)
  • Announcement read/acknowledgment rate
  • Widget personalization adoption rate
Chapter 7 · Module FDS

LIMS

The LIMS Team turns LabLynx One's Experiment/Resource model into a sample-centric laboratory information management system — accessioning, chain of custody, test ordering, results, and reporting — for labs that need core LIMS functionality without a second platform.

Module Overview & Positioning

The LIMS module positions LabLynx One as the sample-of-record system: every physical sample entering the lab is accessioned as a renamed Resource, every test performed against it as a renamed Experiment, with pass/fail comparison against renamed specification Resources. This is the module most dependent on a plugin app, since native LabLynx One's Experiment/Resource pairing was not originally built around high-volume, barcode-driven sample accessioning.

LabLynx One's LIMS is scoped for small-to-mid-volume labs needing core accessioning, chain-of-custody, worklist, and reporting functionality — not for high-throughput clinical or pharmaceutical operations requiring deep instrument autoverification and complex reflex-testing logic, which remain better served by LabLynx's dedicated ELabLiMS product.

Team Configuration

  • Team name: LIMS, with sub-groupings by department where a lab runs multiple test disciplines (e.g., Chemistry, Microbiology).
  • Permission model: Accessioning Staff (create/edit samples), Analysts (enter results, cannot release), Reviewers/Approvers (e-sign and release), Team Leader (full configuration rights).
  • Status workflow: Received → Accessioned → In Testing → Pending Review → Reviewed → Reported → Archived.

Object Renaming Map

Native ObjectRenamed AsNotes
ResourceSample / SpecimenOne Resource record per accessioned sample; category = sample type
ResourceSpecification / Limits SetReference Resource holding pass/fail criteria per test/product
ExperimentTest Order / Result RecordOne Experiment per test performed against a Sample
Experiment CategoryTest PanelGroups related tests ordered together
Resource CategorySample Matrix / Sample TypeWater, soil, blood, product, etc.

Native LabLynx One Capabilities Leveraged

Custom Metadata Fields
Sample attributes (matrix, client, collection date/site) captured as structured, searchable fields on each Sample Resource.
Templates
Pre-built Test Order templates standardize how each test type is documented and what fields are required.
E-Signatures
Result entry and result review/release each carry a distinct signature level, closing the loop between analyst and reviewer.
Experiment-to-Resource Linking
Every Test Order links back to its Sample and forward to any Resource representing a specification, preserving traceability.
Audit Trail
Full ALCOA+-aligned history of every status change, result edit, and signature on every sample.
RESTful API
Underpins the plugin app described below and any instrument or client-portal integration.

Functional Gaps Identified

  • No native barcode-driven accessioning console — sample intake would otherwise mean manually creating a Resource per sample.
  • No native automated pass/fail comparison against a specification Resource — this comparison must be presented and computed for the user rather than relying on manual lookup.
  • No native chain-of-custody transfer log purpose-built for multi-handler sign-off chains.
  • No native worklist/batch view grouping samples by instrument, method, or due date.

Plugin App Specification

A Sample Accessioning & Chain-of-Custody Console is proposed: a purpose-built UI presented to Accessioning Staff and Analysts, reading/writing to LabLynx One's Resource and Experiment endpoints, that overlays barcode scanning, automatic specification comparison, and a worklist view on top of the native Team.

Accessioning Screen
  • → Barcode/label scan to create Sample
  • → Auto-populated metadata from pre-registration
  • → Receipt variance check against order
  • → Print label on save
Worklist View
  • → Group by instrument, method, or due date
  • → Batch status roll-up
  • → One-click export to instrument
Result & Spec Comparison
  • → Auto pass/fail against linked spec Resource
  • → Flag out-of-spec for review routing
  • → Qualifier support (<, >, ±)
Chain-of-Custody Log
  • → Sequential handler sign-off
  • → Timestamp per transfer
  • → External transfer certification capture

Experiment & Resource Template Catalog

The following is a starter catalog for the LIMS Team — sufficient to launch, expected to grow as new sample types and test panels are onboarded. Each row follows the standard schema: name, type, category, purpose, key metadata, workflow states, and linked modules.

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Standard Sample AccessionResourceSample IntakeGeneral-purpose sample registrationClient, matrix, collection date/site, container typeReceived → AccessionedInventory (containers)
Environmental Water SampleResourceSample IntakeWater-specific accessioningSite code, sampler, temperature at receipt, preservativeReceived → AccessionedLab Portal
Composite/Bulk SampleResourceSample IntakeMulti-source composite accessioningSource list, compositing methodReceived → Accessioned—
General Chemistry Test OrderExperimentTest PanelRoutine chemistry test recordingMethod, instrument, analyst, dilution factorOrdered → In Testing → Reviewed → ReportedInstrument & Asset Mgmt
Microbiology Test OrderExperimentTest PanelPlate/culture-based test recordingMedia lot, incubation time/temp, colony countOrdered → In Testing → Reviewed → ReportedInventory (media lots)
Specification/Limits Set — ProductResourceReferencePass/fail criteria per productLimit values, units, effective date rangeDraft → Approved → SupersededQuality Management
Specification/Limits Set — RegulatoryResourceReferencePass/fail criteria per regulationRegulation citation, limit values, jurisdictionDraft → Approved → SupersededQuality Management
Chain-of-Custody Transfer LogExperimentCustodyRecords each custody handoffFrom/to handler, timestamp, condition at transferOpen → Closed—
Retest/Resample RequestExperimentExceptionDocuments justification for retestingOriginal result reference, reason codeRequested → Approved → CompletedQuality Management
Certificate of Analysis (COA)ExperimentReportingFinal client-facing report generationSample list, result summary, release signatureDraft → Approved → ReleasedLab Portal, Document Mgmt
Sample Disposal/Retention RecordExperimentRetentionTracks retention period and disposalRetention date, disposal method, authorizerActive → Eligible → Disposed—
Recurring/Scheduled Sampling ProgramResourceProgramDefines a repeating sampling scheduleFrequency, site list, test panelActive → Suspended → RetiredLab Portal

Roles & Permissions

RoleCreate/Edit SamplesEnter ResultsApprove/ReleaseConfigure Team
Accessioning Staff✓———
Analyst✓✓——
Reviewer/Approver✓✓✓—
Team Leader✓✓✓✓

Compliance & Standards Touchpoints

21 CFR Part 11 ISO 17025 ALCOA+ Chain-of-Custody

Electronic signatures at result-entry and result-release satisfy Part 11 intent; the linked specification model and full audit trail support ISO 17025 traceability expectations for accredited testing labs.

Integration Points with Other Modules

Feeds Certificates of Analysis to Document Management; routes out-of-spec results to Quality Management for CAPA; consumes calibration status from Instrument & Asset Management to gate instrument selection; consumes reagent/media lot data from Inventory Management; surfaces order status to the Lab Portal for client-facing visibility.

Success Metrics / KPIs

  • Average turnaround time from accession to report
  • Percentage of results auto-compared to specification without manual lookup
  • Chain-of-custody exceptions per 1,000 samples
  • Retest/resample rate
Chapter 8 · Module FDS

LIS

The LIS Team configures LabLynx One as a patient-testing laboratory information system — physician/EHR order intake, patient and specimen identity, clinical result reporting, and critical-value notification — for labs whose testing is performed on human patients rather than industrial, environmental, or research samples.

Module Overview & Positioning

Where the LIMS module (Chapter 7) is built around industrial, environmental, and general testing samples, the LIS module is built around the specific workflow of clinical/patient testing: an order originates from a physician or an EHR rather than a client submission, the "sample" is a patient specimen tied to a positively identified individual, and the output is a clinical result that may trigger critical-value callback obligations rather than a standard Certificate of Analysis. This module is scoped for labs running routine clinical testing — hospital-affiliated, reference, or independent clinical labs — and is designed to interoperate with LabLynx's broader platform for labs that also run non-clinical testing through the LIMS module side by side.

Because patient identity, order provenance, and result reporting carry legal and clinical-safety weight beyond general LIMS testing, this module places heavier emphasis on positive patient identification, order/result interfacing with external systems (EHRs, physician portals), and time-sensitive critical-value notification — all areas where a dedicated plugin app is warranted.

Team Configuration

  • Team name: LIS, with sub-groupings by discipline where a lab runs multiple clinical testing sections (e.g., Chemistry, Hematology, Microbiology, Molecular).
  • Permission model: Accessioning/Registration Staff (register patients and specimens), Clinical Analysts (enter results, cannot release), Pathologist/Clinical Reviewer (e-sign and release results, including critical values), Team Leader (full configuration rights).
  • Status workflow: Ordered → Specimen Collected → Received/Accessioned → In Testing → Pending Review → Reviewed/Released → Reported → Amended (if applicable).

Object Renaming Map

Native ObjectRenamed AsNotes
ResourcePatient SpecimenOne Resource per accessioned patient specimen; category = specimen type
ResourcePatient Record (Demographic Reference)Reference Resource holding patient identity and demographic data
ResourceReference Range / Clinical Limits SetAge/sex-adjusted normal ranges and critical-value thresholds per analyte
ExperimentClinical Test Order / Result RecordOne Experiment per test performed against a Patient Specimen
ExperimentPhysician OrderCaptures the originating order, ordering provider, and clinical indication
Experiment CategoryTest Panel / Clinical DisciplineChemistry, Hematology, Microbiology, Molecular, etc.
Resource CategorySpecimen TypeBlood, urine, tissue, swab, etc.

Native LabLynx One Capabilities Leveraged

Custom Metadata Fields
Patient demographics, ordering provider, specimen collection details, and clinical indication captured as structured, searchable fields.
Templates
Pre-built Clinical Test Order templates standardize documentation and required fields per discipline.
E-Signatures
Result entry and pathologist/clinical review-release each carry a distinct signature level.
Experiment-to-Resource Linking
Every Clinical Test Order links back to its Patient Specimen, the originating Physician Order, and the applicable Reference Range Resource.
Audit Trail
Full ALCOA+-aligned history of every status change, result edit, amendment, and signature on every patient result.
RESTful API
Underpins the plugin app described below and any EHR/HL7 interface engine integration.

Functional Gaps Identified

  • No native positive patient identification (two-identifier match) console for specimen registration.
  • No native HL7/EHR order-intake and result-transmission interface — orders and results must otherwise be entered and delivered manually.
  • No native automated critical-value flagging against age/sex-adjusted reference ranges, or callback/notification workflow with required read-back documentation.
  • No native cumulative patient result report (multiple dates/tests for one patient in a single trended view).

Plugin App Specification

A Patient Order & Result Console is proposed: a purpose-built UI for Accessioning/Registration Staff and Clinical Analysts that overlays positive patient identification, HL7-based order intake and result transmission, automated critical-value detection with callback documentation, and cumulative reporting on top of the native LIS Team — reading and writing to LabLynx One's Resource and Experiment endpoints throughout.

Patient Registration & ID Match
  • → Two-identifier positive ID check at specimen collection
  • → Auto-populated demographics from HL7 ADT feed
  • → Specimen label printing on save
HL7 Order & Result Interface
  • → Inbound ORM order intake from EHR
  • → Outbound ORU result transmission
  • → Order/result reconciliation queue
Critical Value Workflow
  • → Auto-flag against reference range Resource
  • → Required callback documentation (who, when, read-back confirmation)
  • → Escalation timer if not acknowledged
Cumulative Patient Report
  • → Trended multi-date result view per patient
  • → Flag out-of-range values across visits

Experiment & Resource Template Catalog

The following is a starter catalog for the LIS Team — sufficient to launch, expected to grow as new specimen types and clinical test panels are onboarded.

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Standard Patient Specimen AccessionResourceSpecimen TypeGeneral-purpose patient specimen registrationPatient ID, two-identifier match, collection date/time, specimen typeOrdered → Collected → AccessionedLab Portal
Blood/Serum SpecimenResourceSpecimen TypeBlood draw-specific accessioningDraw site, tube type, fasting statusCollected → Accessioned—
Microbiology Culture SpecimenResourceSpecimen TypeCulture/swab specimen accessioningCollection site, transport mediumCollected → AccessionedInventory Management
Physician OrderExperimentOrderCaptures the originating clinical orderOrdering provider, clinical indication, priority (STAT/routine)Received → AcknowledgedLab Portal
Clinical Chemistry Test OrderExperimentTest Panel: ChemistryRoutine clinical chemistry result recordingMethod, instrument, analyst, reference range appliedOrdered → In Testing → Reviewed → ReportedInstrument & Asset Mgmt
Hematology Test OrderExperimentTest Panel: HematologyCBC/differential and related result recordingInstrument, flagged parametersOrdered → In Testing → Reviewed → ReportedInstrument & Asset Mgmt
Microbiology Culture & Sensitivity OrderExperimentTest Panel: MicrobiologyCulture identification and susceptibility result recordingOrganism identified, sensitivity panel resultsOrdered → In Testing → Reviewed → ReportedInventory Management
Reference Range / Clinical Limits SetResourceReferenceAge/sex-adjusted normal and critical-value thresholdsAnalyte, low/high normal, critical low/highDraft → Approved → SupersededQuality Management
Critical Value Callback RecordExperimentCritical ValueDocuments notification of a critical resultNotified party, time of call, read-back confirmationFlagged → Notified → ClosedQuality Management
Result Amendment/CorrectionExperimentAmendmentDocuments a correction to a previously reported resultOriginal result reference, reason, notified partiesRequested → Approved → AmendedQuality Management
Patient Report (Cumulative)ExperimentReportingFinal clinical report generation, single or cumulativeResult summary, release signature, recipientDraft → Approved → ReleasedLab Portal, Document Mgmt
Specimen Rejection RecordExperimentExceptionDocuments rejection of an unsuitable specimenRejection reason, notified providerRejected → Recollection RequestedQuality Management

Roles & Permissions

RoleRegister Patients/SpecimensEnter ResultsApprove/ReleaseConfigure Team
Accessioning/Registration Staff✓———
Clinical Analyst✓✓——
Pathologist/Clinical Reviewer✓✓✓—
Team Leader✓✓✓✓

Compliance & Standards Touchpoints

CLIA CAP 21 CFR Part 11 HIPAA ALCOA+

Positive patient identification, critical-value notification with documented read-back, and result amendment procedures are named, specific requirements under CLIA and CAP clinical laboratory accreditation; patient demographic data throughout this module falls under HIPAA's data-privacy and access-control obligations.

Integration Points with Other Modules

Feeds Patient Reports to Document Management for retention and to the Lab Portal for referring-physician/patient access where applicable; routes specimen rejections and critical-value escalations to Quality Management; consumes calibration status from Instrument & Asset Management to gate instrument selection; consumes reagent/media lot data from Inventory Management; verifies analyst competency via Training Tracking before allowing result entry on regulated assays.

Success Metrics / KPIs

  • Average turnaround time from order to result release, by priority (STAT vs. routine)
  • Critical-value notification time from flag to documented callback
  • Specimen rejection rate
  • Result amendment rate
Chapter 9 · Module FDS

LES

The LES Team turns an approved procedure into a live, gated execution engine — walking an analyst through a method step by step, in real time, and refusing to let them proceed until each step's requirements are actually satisfied. Where Document Management owns the approved text of a procedure and LIMS/LIS own the final result, LES owns the moment-by-moment act of performing it correctly.

Module Overview & Positioning

LES sits deliberately between three modules it's often confused with. Document Management (Chapter 12) stores the approved SOP as static, versioned text — a person could still deviate from it and nothing in the document itself would stop them. ELN (Chapter 10) is narrative and retrospective — a scientist writes up what they did after, or while, doing it, but nothing forces the write-up to match a prescribed sequence. LIMS and LIS (Chapters 6–7) own the sample, the order, and the final result, but neither was built to gate the in-between steps of producing that result. LES is the module that closes that gap: it takes an approved method, converts it into a structured, machine-enforceable sequence, and will not let an analyst advance from step 3 to step 4 until step 3's requirements are genuinely met.

This is the module in the profile with the strongest data-integrity and regulatory case behind it — real-time, contemporaneous, system-enforced execution is precisely what 21 CFR Part 11 and ALCOA+ data-integrity expectations are reaching for, and it's difficult to demonstrate convincingly with only a static SOP and a narrative ELN entry after the fact.

Team Configuration

  • Team name: LES, typically sub-grouped by method discipline where a lab's execution needs vary widely by department (e.g., Chemistry Execution, Microbiology Execution).
  • Permission model: Analysts (execute runs), Method Authors (build and maintain the structured executable version of a method), QA/Method Approvers (approve a method version before it becomes usable in live execution, and review completed runs), Team Leader (full configuration).
  • Status workflow — per run: Not Started → In Progress → On Hold (deviation raised) → Completed → Reviewed → Approved. Separately, per method version: Draft → Approved → Active → Retired — a method must reach Active before any analyst can start a run against it.

Object Renaming Map

Native ObjectRenamed AsNotes
ResourceExecutable Method / Method VersionThe structured, step-gated translation of an approved Document Management SOP
ExperimentMethod Execution RunOne Experiment per instance of a method being performed start to finish; step-level data accumulates within it as the run progresses
ExperimentIn-Process DeviationRaised automatically when a gated check fails mid-run
Experiment CategoryMethod Type / DisciplineChemistry, microbiology, molecular, physical testing, etc.
Resource CategoryMethod FamilyGroups related method versions (e.g., all versions of one titration method over time)

Native LabLynx One Capabilities Leveraged

Templates
Each Executable Method version is built from a template defining its overall run structure and required fields.
Custom Metadata Fields
Step-level data, calculated values, and in-process check results are captured as structured fields on the Run as execution proceeds.
Electronic Signature
Final run sign-off closes out the Method Execution Run; step-level witness/second-check attestation is layered on by the plugin (below).
Experiment-to-Resource Linking
Every Run links to its Executable Method version, the Sample/Specimen it was performed against (LIMS/LIS), the instrument used, and the reagent lot consumed.
Audit Trail
Full ALCOA+-aligned, timestamped history of every step's data entry — the core evidentiary asset this module produces.
RESTful API
The backbone underneath every plugin component described below — none of them are possible without it.

Functional Gaps Identified

  • No native gated, sequential step-by-step execution UI — LabLynx One's Experiment body is one continuous document, not an enforced sequence.
  • No native live calculation engine tied to in-progress step data entry.
  • No native in-process control/interlock checking against conditions in other Teams (calibration status, reagent expiration, analyst qualification) before allowing a step to unlock.
  • No native step-level signature or witness prompting mid-run — only whole-Experiment signing.
  • No native real-time deviation-to-Quality-Management handoff at the moment a check fails.
  • No native way to translate a static, approved SOP into a structured, machine-enforceable step sequence.
  • No native mandatory wait-timer enforcement tied to step completion.
  • No native direct instrument-to-field data capture.

Plugin App Specification

LES is built as a coordinated suite of plugin components rather than one single app, because "guided execution" genuinely spans several distinct capabilities. The first three are non-negotiable — together they're what actually makes this an LES rather than a nicer-looking ELN. The rest layer in supporting capability around that core.

1 · Guided Execution Console
  • → Renders one step at a time
  • → Blocks advancing until required fields/checks are met
  • → No skipping ahead without a documented reason
2 · Live Calculation Engine
  • → Evaluates embedded formulas the instant data is entered
  • → Pulls reference values from LIMS/LIS in real time
  • → Immediate pass/fail judgment at the step, not after the fact
3 · In-Process Control / Interlock Checker
  • → Checks reagent lot date (Inventory Management)
  • → Checks instrument calibration status (Instrument & Asset Mgmt)
  • → Checks analyst qualification (Training Tracking)
  • → Step stays locked if any check fails
4 · Step-Level E-Signature Prompts
  • → Witness/second-check sign-off injected mid-run
  • → Doesn't wait for whole-run completion
5 · Real-Time Deviation Capture
  • → Webhook opens a Quality Management case the instant a check fails
  • → Pre-populated with run/step context
6 · Method Authoring / Executable-Script Builder
  • → Translates an approved Document Management SOP into structured steps
  • → Defines tolerances, required fields, formulas per step
  • → The bridge between "approved" and "enforced"
7 · Timer / Wait-State Enforcement
  • → Mandatory incubation/reaction/settling countdowns
  • → Step cannot be marked complete until timer elapses
8 · Instrument Data Bridge (Phase 2)
  • → Direct feed from balances/meters into step fields
  • → Reduces manual-transcription error
  • → Heavier integration lift — recommended as a later addition
The Long Pole Is Usually #6, Not #1

Teams tend to assume the execution console itself is the hard part. In practice, the Method Authoring / Executable-Script Builder is what most implementations underestimate — every method a lab wants gated has to be manually re-expressed as a structured sequence of steps, tolerances, and formulas before the console has anything to enforce. Budget for this component accordingly.

Experiment & Resource Template Catalog

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Executable Method — ChemistryResourceMethod Type: ChemistryStructured, step-gated chemistry method versionStep sequence, tolerances, formulasDraft → Approved → Active → RetiredDocument Management
Executable Method — MicrobiologyResourceMethod Type: MicrobiologyStructured, step-gated microbiology method versionStep sequence, incubation timersDraft → Approved → Active → RetiredDocument Management
Method Execution Run — GeneralExperimentRunRecords one full execution of a methodLinked sample, linked method version, step data arrayNot Started → In Progress → Completed → ReviewedLIMS, LIS
In-Process Control Check DefinitionResourceInterlockDefines a specific gating condition and its sourceCheck type, source Team/endpoint, pass/fail logicActive → RetiredInstrument & Asset Mgmt, Inventory Mgmt, Training Tracking
In-Process DeviationExperimentDeviationAuto-created when a gated check fails mid-runRun/step reference, failed check, analyst responseOpened → Routed → ClosedQuality Management
Step-Level Witness SignatureExperimentSignatureRecords a mid-run witness/second-check eventWitness identity, step reference, timestampRequested → Signed—
Method Authoring DraftExperimentAuthoringWorking record of translating an SOP into executable stepsSource SOP reference, step-by-step mappingDrafting → Submitted for ApprovalDocument Management
Instrument Data Bridge ConfigurationResourceIntegrationDefines a direct instrument-to-field data mappingInstrument ID, field mapping, data formatActive → RetiredInstrument & Asset Mgmt

Roles & Permissions

RoleExecute RunsAuthor MethodsApprove Methods/RunsConfigure Team
Analyst✓———
Method Author✓✓——
QA/Method Approver✓✓✓—
Team Leader✓✓✓✓

Compliance & Standards Touchpoints

21 CFR Part 11 ALCOA+ Data Integrity ISO 17025 GxP Good Documentation Practice

This module makes the strongest data-integrity case in the entire profile: contemporaneous, system-enforced, step-gated execution with a full audit trail is precisely what regulators mean by "build integrity in, don't inspect it in afterward." A static SOP plus a retrospective ELN entry can describe the correct procedure; only a gated execution engine can demonstrate it was actually followed, in real time, every time.

Integration Points with Other Modules

Consumes approved procedures from Document Management as the source for method authoring; links every run to its LIMS or LIS sample/specimen and feeds the final result back; checks live status against Instrument & Asset Management (calibration) and Inventory Management (reagent/lot expiration) before unlocking gated steps; verifies analyst qualification via Training Tracking; opens real-time cases in Quality Management the instant an in-process check fails.

Success Metrics / KPIs

  • Percentage of runs completed with zero manual overrides
  • In-process control failure rate, by check type
  • Average run completion time vs. standard method time
  • Deviation rate per 100 runs
Chapter 10 · Module FDS

ELN

The ELN Team is the closest to LabLynx One's native, unmodified purpose — rich-text, templated, signable experiment documentation for bench scientists whose work is not sample-centric in the LIMS sense.

Module Overview & Positioning

Where the LIMS Team is sample-centric, the ELN Team is narrative- and protocol-centric: research notebook entries, method development, and general experimental documentation that doesn't necessarily begin with a physical sample being accessioned. This module requires the least renaming and the least plugin support of all twelve, since it is essentially LabLynx One's core ELN functionality used directly.

Team Configuration

  • Team name: ELN, optionally sub-grouped by research program or bench.
  • Permission model: Authors (create/edit own entries), Peer Reviewers (comment/co-sign), Team Leader (template governance).
  • Status workflow: Draft → Signed → Countersigned (optional) → Locked.

Object Renaming Map

Native ObjectRenamed AsNotes
ExperimentNotebook EntryKept close to native terminology by design
ResourceProtocol / Reagent ReferenceReusable methods and reference material entries
Experiment CategoryResearch Program / ProjectGroups related notebook entries
Resource CategoryProtocol TypeAssay, synthesis, characterization, etc.

Native LabLynx One Capabilities Leveraged

Rich-Text Documentation
Full narrative documentation with headings, tables, and inline figures — the module's primary interface.
Template Library
Protocol-specific entry templates standardize repeated experiment types across the research group.
Version/Revision History
Every edit preserved, comparable side-by-side — the backbone of the entry's evidentiary value.
Electronic Signature
Author and reviewer signature levels distinguish authorship from countersignature.
Experiment-to-Resource Linking
Notebook entries link directly to the Protocol and reagent Resources they consumed.
Tagging & Full-Text Search
Cross-entry search across the accumulating research record.

Functional Gaps Identified

No dedicated plugin app is proposed for the ELN Team. Native capabilities cover the core use case well; any gaps (e.g., structure drawing for chemistry-heavy groups, LaTeX rendering for mathematically intensive research) are addressed as optional, lab-specific configuration rather than a standard part of this profile, and can be added later without architectural change.

Plugin App Specification

Not required for baseline LabLynx One deployment. If a lab's research emphasis warrants it, a lightweight chemistry structure-drawing accent can be layered in later using the same API-based plugin pattern established elsewhere in this profile (see Chapter 5), without disrupting the ELN Team's core configuration.

Experiment & Resource Template Catalog

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
General Notebook EntryExperimentResearch ProgramFree-form dated research documentationProject, hypothesis, dateDraft → Signed—
Method Development EntryExperimentResearch ProgramIterative method design documentationParent method version, objectiveDraft → SignedQuality Management
Assay ProtocolResourceProtocol TypeReusable structured assay procedureReagents, steps, controlsDraft → Approved → SupersededInventory Management
Synthesis ProtocolResourceProtocol TypeReusable chemical synthesis procedureReactants, conditions, yield targetDraft → Approved → SupersededInventory Management
Reagent ReferenceResourceReferenceReagent property/handling referenceHazard class, storage conditionActive → RetiredInventory Management
Peer Review / Countersignature EntryExperimentReviewDocuments supervisor countersignatureReviewer, review date, commentsPending → Countersigned—
Literature Reference NoteExperimentReferenceLinks published literature to researchCitation, relevance noteDraft → SignedDocument Management

Roles & Permissions

RoleCreate/Edit Own EntriesCountersign OthersManage TemplatesConfigure Team
Author✓———
Peer Reviewer✓✓——
Team Leader✓✓✓✓

Compliance & Standards Touchpoints

21 CFR Part 11 ALCOA+ IP / Patent Priority

Version history and e-signature timestamps give research entries defensible evidentiary weight for both regulatory and intellectual-property purposes.

Integration Points with Other Modules

Protocols developed here feed LIMS test methods and Quality Management method-validation records; reagent references link to Inventory Management stock; finalized protocols can be published to Document Management as controlled SOPs.

Success Metrics / KPIs

  • Entries signed within target time of experiment completion
  • Percentage of entries using a governed template (vs. free-form)
  • Countersignature turnaround time
Chapter 11 · Module FDS

Logbooks

The Logbooks Team digitizes the paper logbook — equipment-use logs, cleaning logs, temperature logs, and access logs — as short, repeatable, timestamped entries rather than long-form narrative documentation.

Module Overview & Positioning

Logbooks differs from the ELN Team primarily in entry shape: where an ELN entry is a long-form narrative record, a logbook entry is short, frequent, and highly structured — a single line confirming a cleaning was performed, a temperature was checked, or a piece of equipment was used, by whom, and when. This module leans heavily on structured metadata fields and lightly on rich-text narrative.

Team Configuration

  • Team name: Logbooks, with Resources representing each physical or logical logbook (e.g., "Freezer 3 Temperature Log," "Balance Room Cleaning Log").
  • Permission model: Loggers (any authorized staff member creates entries), Logbook Owner (manages templates/categories for their logbook), Team Leader (full configuration).
  • Status workflow: typically single-state (Logged), since most logbook entries are complete on creation; exceptions route to Quality Management.

Object Renaming Map

Native ObjectRenamed AsNotes
ResourceLogbookOne Resource per physical/logical logbook
ExperimentLog EntryOne Experiment per individual log line
Experiment CategoryLog TypeCleaning, temperature, usage, access, calibration-check
Resource CategoryLogbook ClassEquipment log, room log, safety log

Native LabLynx One Capabilities Leveraged

Structured Metadata Fields
Each Log Entry template captures exactly the fields a given logbook needs — value, units, pass/fail, initials.
Templates
One template per logbook type keeps entries consistent across every logger and every shift.
Timestamped Execution
Every Log Entry is automatically timestamped at creation, satisfying "who/when" requirements natively.
Experiment-to-Resource Linking
Log Entries link to the equipment or room Resource they concern, and — where relevant — to the Instrument & Asset Management Team's asset record.

Functional Gaps Identified

  • No native rapid-entry "quick log" interface — creating a full Experiment record per entry is heavier than a one-line paper logbook entry.
  • No native automated out-of-range flagging for numeric log values (e.g., a temperature reading outside acceptable range).
  • No native recurring reminder/missed-entry alerting (e.g., "no cleaning log entry recorded for Room 4 today").

Plugin App Specification

A lightweight Quick-Log Entry Widget is proposed: a simplified, mobile-friendly form presenting only the fields relevant to a specific logbook, writing directly to the corresponding Experiment template via API, with automatic range-checking and missed-entry alerting.

Quick-Log Form
  • → Single-screen entry, minimal fields
  • → Auto-fill logger identity and timestamp
  • → Mobile-first layout for bench-side use
Range Checking & Alerts
  • → Configurable acceptable range per logbook
  • → Immediate flag on out-of-range entry
  • → Missed-entry reminder scheduling

Experiment & Resource Template Catalog

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Equipment Usage Log EntryExperimentLog Type: UsageRecords who used a piece of equipment and whenEquipment ID, start/end time, purposeLoggedInstrument & Asset Mgmt
Cleaning Log EntryExperimentLog Type: CleaningRecords cleaning/sanitization eventsMethod used, agent, verifier initialsLoggedQuality Management
Temperature/Environmental Log EntryExperimentLog Type: TemperatureRecords periodic temperature/humidity checksReading, unit, acceptable range flagLoggedInstrument & Asset Mgmt
Room/Area Access Log EntryExperimentLog Type: AccessRecords entry/exit from a controlled areaPerson, purpose, time in/outLoggedQuality Management
Calibration Check Log EntryExperimentLog Type: Calibration-CheckQuick daily/pre-use verification checkCheck result, standard usedLoggedInstrument & Asset Mgmt
Master Logbook RegistryResourceLogbook ClassOne entry per active logbook in the labOwner, location, retention periodActive → RetiredDocument Management

Roles & Permissions

RoleCreate EntriesManage Logbook TemplatesConfigure Team
Logger (any authorized staff)✓——
Logbook Owner✓✓—
Team Leader✓✓✓

Compliance & Standards Touchpoints

21 CFR Part 11 ISO 17025 GMP Environmental Monitoring

Timestamped, attributable entries satisfy the "contemporaneous" requirement of ALCOA+ and provide the documented environmental/equipment history auditors specifically request.

Integration Points with Other Modules

Feeds equipment usage history to Instrument & Asset Management; out-of-range entries route to Quality Management as potential deviations; logbook registry is cross-referenced in Document Management for retention scheduling.

Success Metrics / KPIs

  • On-time logging rate (percentage of scheduled entries completed on time)
  • Out-of-range entries flagged and resolved
  • Missed-entry alerts triggered per logbook per month
Chapter 12 · Module FDS

Training Tracking

The Training Tracking Team manages staff competency records — courses, qualifications, and periodic re-certifications — as a structured registry that other modules can query to confirm a person is currently qualified to perform a given task.

Module Overview & Positioning

This module answers a question every other module eventually asks: is this specific person currently qualified to do this specific thing? Rather than a full learning-management system with content authoring and grading, LabLynx One's Training Tracking module focuses on the compliance side — recording completion, expiration, and current qualification status — and is designed to interoperate with LabLynx's dedicated LabCourses product where full course delivery is required.

Team Configuration

  • Team name: Training Tracking, with Resources representing each course/curriculum and Experiments representing each individual completion event.
  • Permission model: Trainees (view own record), Trainers/Assessors (record completions), Training Coordinator (manage curriculum, run expiration reports), Team Leader (full configuration).
  • Status workflow: Assigned → In Progress → Completed → Expiring Soon → Expired/Renewed.

Object Renaming Map

Native ObjectRenamed AsNotes
ResourceCourse / CurriculumOne Resource per course or qualification type
ExperimentTraining Completion RecordOne Experiment per person per completion event
Experiment CategoryQualification TypeMethod-specific, safety, SOP-specific, role-based
Resource CategoryCurriculum TrackNew-hire onboarding, annual refresher, role-specific

Native LabLynx One Capabilities Leveraged

Templates
Per-course completion templates capture assessment method, score, and assessor.
Electronic Signature
Trainee and assessor both sign the completion record, giving it defensible evidentiary weight.
Custom Metadata Fields
Expiration date, recertification interval, and score captured as structured, reportable fields.
Tagging & Search
Quickly find every person qualified — or overdue — for a specific method or SOP.

Functional Gaps Identified

  • No native expiration dashboard surfacing who is expiring soon or already expired, at a glance, across the whole lab.
  • No native automatic blocking of task assignment (in other Teams) for an unqualified or expired person.
  • No native course-content delivery (quizzes, e-learning modules) — by design, deferred to LabCourses where full course delivery is needed.

Plugin App Specification

A Qualification Status Dashboard is proposed: a cross-Resource view surfacing every person's current qualification status by course, with expiration alerts, and an API-exposed qualification-check endpoint other modules' plugin apps (e.g., Instrument & Asset Management's calibration console) can call before allowing a task assignment to proceed.

Expiration Dashboard
  • → Traffic-light status per person per course
  • → Filter by department, role, or course
  • → Automated reminder emails at 30/14/7 days
Qualification-Check API
  • → Callable by other modules' plugins
  • → Returns current/expired/not-qualified
  • → Used to gate task or instrument assignment

Experiment & Resource Template Catalog

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Method-Specific QualificationResourceQualification TypeDefines a test-method qualification requirementMethod reference, recert intervalActive → RetiredLIMS
Safety/Biosafety TrainingResourceQualification TypeGeneral lab safety course definitionRegulation reference, recert intervalActive → RetiredQuality Management
SOP-Specific TrainingResourceQualification TypeTraining tied to a specific controlled SOPLinked SOP ID/versionActive → RetiredDocument Management
Equipment-Specific QualificationResourceQualification TypeQualification to operate a specific instrumentLinked asset IDActive → RetiredInstrument & Asset Mgmt
New-Hire Onboarding CurriculumResourceCurriculum TrackBundled course list for new staffCourse list, target completion windowActive → Retired—
Training Completion RecordExperimentCompletionRecords one person's completion of one courseScore, assessor, expiration dateAssigned → Completed—
Competency Re-AssessmentExperimentCompletionPeriodic re-verification of ongoing competencyObservation notes, pass/failScheduled → CompletedQuality Management

Roles & Permissions

RoleView Own RecordRecord CompletionsManage CurriculumConfigure Team
Trainee✓———
Trainer/Assessor✓✓——
Training Coordinator✓✓✓—
Team Leader✓✓✓✓

Compliance & Standards Touchpoints

ISO 17025 CLIA Personnel Requirements CAP

Documented, signed competency records are a named, specific requirement under most accreditation frameworks and are frequently the first records an auditor requests.

Integration Points with Other Modules

Qualification status gates task and instrument assignment in LIMS and Instrument & Asset Management; safety training links to Quality Management incident investigations; SOP-specific training links to Document Management revision-driven retraining triggers.

Success Metrics / KPIs

  • Percentage of staff currently in-date on required qualifications
  • Average days to renew an expiring qualification
  • Unqualified-assignment attempts blocked
Chapter 13 · Module FDS

Document Management

The Document Management Team governs controlled documents — SOPs, policies, forms, and specifications — through their full lifecycle: draft, review, approval, publication, periodic revision, and retirement.

Module Overview & Positioning

Where LabDrive is LabLynx's dedicated, full-featured scientific document management product, the Document Management module delivers core controlled-document lifecycle management natively within LabLynx One for labs that don't yet need LabDrive's deeper co-authoring and external-sharing feature set, while remaining a natural upgrade path to LabDrive as document volume and collaboration needs grow.

Team Configuration

  • Team name: Document Management, with Resources representing each controlled document and Experiments representing each revision/approval cycle.
  • Permission model: Readers (view published documents), Authors (draft/edit), Reviewers (comment), Approvers (e-sign to publish), Document Controller (manages the master list), Team Leader (full configuration).
  • Status workflow: Draft → In Review → Approved → Published → Superseded/Retired.

Object Renaming Map

Native ObjectRenamed AsNotes
ResourceControlled DocumentOne Resource per document, all versions attached
ExperimentDocument Revision / Approval CycleOne Experiment per revision's review-approval process
Experiment CategoryDocument TypeSOP, policy, form, work instruction, specification
Resource CategoryDocument DomainQuality, safety, technical, administrative

Native LabLynx One Capabilities Leveraged

File Attachment & Versioning
Every document revision stored with full file-level version history, distinct from body-text revision history.
Electronic Signature
Author, reviewer, and approver signatures create a defensible, multi-tier approval chain per revision.
Templates
Standard SOP/policy/form templates enforce consistent structure across every controlled document.
Tagging & Full-Text Search
Rapid retrieval of the current, correct version of any document across a growing library.

Functional Gaps Identified

  • No native master document list/register view showing every controlled document, its current version, and its next review date at a glance.
  • No native periodic-review scheduling and reminder automation.
  • No native distinction between "published, uncontrolled copy" and "current controlled copy" for printed/exported documents.

Plugin App Specification

A Master Document Register is proposed: a single dashboard view listing every Controlled Document Resource, its current version, approval status, and next scheduled review date, with automated reminders to Document Controllers ahead of review due dates.

Master Register View
  • → Sortable by type, domain, review date
  • → Status badges (current, in review, overdue)
  • → One-click access to current published version
Review Scheduling
  • → Configurable review interval per document type
  • → Automated reminders to owner/controller
  • → Auto-generates next revision Experiment on due date

Experiment & Resource Template Catalog

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Standard Operating Procedure (SOP)ResourceDocument Type: SOPCore controlled procedure documentOwner, review interval, linked trainingDraft → Approved → Published → SupersededTraining Tracking
Policy DocumentResourceDocument Type: PolicyOrganizational policy statementOwner, effective dateDraft → Approved → PublishedQuality Management
Blank Form TemplateResourceDocument Type: FormControlled fillable formForm ID, revisionDraft → Approved → Published—
Work InstructionResourceDocument Type: Work InstructionStep-level supplement to an SOPParent SOP referenceDraft → Approved → PublishedLogbooks
Document Revision/Approval CycleExperimentApproval CycleRecords one revision's review/approvalChange summary, reviewers, approversDraft → In Review → Approved—
Periodic Review RecordExperimentApproval CycleDocuments a scheduled no-change reviewReviewer, outcome (no change/revise)Scheduled → Completed—
Document Retirement RecordExperimentRetirementFormal retirement/withdrawal of a documentReason, replacement referenceRequested → RetiredQuality Management

Roles & Permissions

RoleView PublishedDraft/EditApprove/PublishManage Register
Reader✓———
Author✓✓——
Approver✓✓✓—
Document Controller✓✓✓✓

Compliance & Standards Touchpoints

21 CFR Part 11 ISO 17025 / ISO 15189 GMP Document Control

Multi-tier approval and version control satisfy the document-control expectations common across nearly every laboratory accreditation and regulatory framework.

Integration Points with Other Modules

Publishes controlled SOPs referenced by Training Tracking; stores CAPA-driven document revisions from Quality Management; archives Certificates of Analysis from LIMS; hosts client-facing published documents surfaced through the Lab Portal.

Success Metrics / KPIs

  • Percentage of documents reviewed on schedule
  • Average approval-cycle turnaround time
  • Number of documents past due for review
Chapter 14 · Module FDS

Quality Management

The Quality Management Team is the lab's nonconformance, deviation, and CAPA engine — the module every other Team routes an exception to, and the one most reliant on a dedicated workflow-board plugin app.

Module Overview & Positioning

Quality Management is architecturally the hub of LabLynx One: an out-of-spec result in LIMS, a missed logbook entry, an expired qualification in Training Tracking, or an overdue instrument calibration can all generate a record here. The module's job is to capture the deviation, drive a structured investigation and corrective/preventive action (CAPA) workflow, and close the loop back to whichever module triggered it.

Team Configuration

  • Team name: Quality Management, with Resources representing quality record types and Experiments representing individual nonconformance/CAPA cases.
  • Permission model: Reporters (any staff member can open a nonconformance), Investigators (assigned to investigate), QA Reviewers (review/close), Quality Manager (Team Leader, full configuration).
  • Status workflow: Opened → Investigating → Root Cause Identified → CAPA Assigned → CAPA Implemented → Effectiveness Check → Closed.

Object Renaming Map

Native ObjectRenamed AsNotes
ExperimentNonconformance / Deviation / CAPA RecordOne Experiment per case, from open through closure
ResourceQuality Record TypeDefines a class of quality record (internal audit finding, client complaint, OOS, deviation)
Experiment CategoryCase TypeOOS, deviation, complaint, audit finding, near-miss
Resource CategoryQuality Program AreaSample/testing, equipment, documentation, personnel

Native LabLynx One Capabilities Leveraged

Rich-Text Documentation
Narrative root-cause analysis and investigation notes captured directly in the case record.
Electronic Signature
Investigator, QA reviewer, and closure signatures create a defensible multi-step approval chain.
Experiment-to-Resource/Experiment Linking
Every case links back to the triggering sample, document, instrument, or training record in the originating Team.
Custom Metadata Fields
Structured root-cause category, severity, and CAPA due-date fields support trend reporting.

Functional Gaps Identified

  • No native kanban/board visualization of open cases by workflow stage — critical for a QA manager triaging active workload.
  • No native cross-Team automatic case creation when another Team's data crosses a defined threshold (e.g., an out-of-spec LIMS result).
  • No native CAPA effectiveness-check scheduling and reminder automation.

Plugin App Specification

A CAPA/Nonconformance Workflow Board is proposed: a kanban-style visualization of every open case by stage, with drag-and-drop status transitions (writing back through the API), automatic case creation triggered by webhook from other Teams, and effectiveness-check scheduling.

Kanban Case Board
  • → Columns per workflow stage
  • → Drag-and-drop status transition
  • → Filter by case type, severity, owner
Cross-Team Auto-Intake
  • → Webhook-triggered case creation from LIMS/Logbooks/Instrument & Asset Mgmt
  • → Pre-populated with triggering record link
CAPA Effectiveness Tracker
  • → Scheduled effectiveness-check reminders
  • → Trend view of recurring root causes

Experiment & Resource Template Catalog

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Out-of-Specification (OOS) InvestigationExperimentCase Type: OOSInvestigates a failed test resultLinked sample/result, root cause, retest decisionOpened → Investigating → ClosedLIMS
Equipment DeviationExperimentCase Type: DeviationInvestigates an equipment-related deviationLinked asset, downtime, impact assessmentOpened → Investigating → ClosedInstrument & Asset Mgmt
Client ComplaintExperimentCase Type: ComplaintTracks and resolves external client complaintsClient, complaint summary, resolutionOpened → Investigating → ClosedLab Portal
Internal Audit FindingExperimentCase Type: Audit FindingTracks findings from internal quality auditsAudit reference, finding severityOpened → CAPA Assigned → ClosedDocument Management
Near-Miss / Safety ObservationExperimentCase Type: Near-MissRecords a safety near-miss for trendingLocation, potential severityOpened → Reviewed → ClosedLogbooks
CAPA Action PlanExperimentCAPADefines corrective/preventive actions and ownersAction items, owners, due datesAssigned → Implemented → VerifiedTraining Tracking
Quality Record Type RegistryResourceQuality Program AreaMaster list of defined case typesDefinition, applicable regulationActive → Retired—

Roles & Permissions

RoleOpen CaseInvestigateReview/CloseConfigure Team
Reporter (any staff)✓———
Investigator✓✓——
QA Reviewer✓✓✓—
Quality Manager (Team Leader)✓✓✓✓

Compliance & Standards Touchpoints

21 CFR Part 11 ISO 17025 / ISO 15189 GMP CAPA CAP

A documented, closed-loop CAPA process with independent QA review is a named, specific requirement across virtually every laboratory accreditation and regulatory framework represented in this profile.

Integration Points with Other Modules

Receives auto-intake cases from LIMS, Logbooks, and Instrument & Asset Management; triggers retraining assignments in Training Tracking; drives document revisions in Document Management; surfaces resolved complaint status to the Lab Portal.

Success Metrics / KPIs

  • Average case closure time by case type
  • CAPA on-time completion rate
  • Repeat/recurring root-cause rate
Chapter 15 · Module FDS

Instrument & Asset Management

The Instrument & Asset Management Team is the registry and calendar for every calibrated, maintained, or otherwise tracked piece of lab equipment — and the gatekeeper that can prevent an out-of-calibration instrument from being selected for use elsewhere in the suite.

Module Overview & Positioning

Every instrument and significant asset in the lab is registered here once, as a persistent Resource, with its calibration and maintenance history recorded as linked Experiments over time. Because instrument qualification status has to be checked by other modules (LIMS test-order selection, Logbooks usage entries), this module exposes its qualification status through the same API pattern the Training Tracking module uses for personnel.

Team Configuration

  • Team name: Instrument & Asset Management, with Resources representing each instrument/asset and Experiments representing each calibration, maintenance, or qualification event.
  • Permission model: Operators (view status, log usage), Calibration Technicians (record calibration/maintenance events), Metrology Lead (approve calibration records, manage schedules), Team Leader (full configuration).
  • Status workflow (per asset): In Service → Due Soon → Overdue/Out of Service → Under Investigation → Returned to Service.

Object Renaming Map

Native ObjectRenamed AsNotes
ResourceInstrument / AssetOne Resource per physical instrument or significant asset
ExperimentCalibration / Maintenance EventOne Experiment per calibration, PM, or repair event
Experiment CategoryEvent TypeCalibration, preventive maintenance, repair, qualification (IQ/OQ/PQ)
Resource CategoryAsset ClassAnalytical instrument, general lab equipment, facility asset

Native LabLynx One Capabilities Leveraged

Custom Metadata Fields
Calibration due date, interval, reference standard, and qualification status captured as structured fields.
Templates
Standard calibration/PM event templates per asset class ensure consistent, complete documentation.
Electronic Signature
Technician and metrology-lead signatures on every calibration event.
Experiment-to-Resource Linking
Every calibration event links to its asset and to the reference standard Resource used.

Functional Gaps Identified

  • No native calendar view of upcoming/overdue calibration and maintenance across the full asset fleet.
  • No native automatic blocking of an out-of-calibration instrument from being selected in the LIMS Team.
  • No native visual asset/floor-plan map for larger labs with equipment spread across multiple rooms.

Plugin App Specification

A Calibration & Maintenance Calendar with Asset Map is proposed: a calendar view of every scheduled and overdue event across the fleet, plus an optional floor-plan visualization, exposing a qualification-check API endpoint that the LIMS plugin app calls before allowing instrument selection on a Test Order.

Calibration Calendar
  • → Month/week view of due/overdue events
  • → Color-coded by asset class
  • → One-click event creation from calendar
Asset Status API
  • → Returns in-service/due/overdue status
  • → Called by LIMS plugin before instrument selection
Floor-Plan Asset Map
  • → Visual room-by-room asset layout
  • → Click-through to asset record

Experiment & Resource Template Catalog

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Analytical Instrument RegistrationResourceAsset Class: AnalyticalRegisters a calibrated analytical instrumentMake/model/serial, calibration intervalIn Service → RetiredLIMS
General Lab Equipment RegistrationResourceAsset Class: GeneralRegisters non-analytical equipment (centrifuges, ovens)Make/model/serial, maintenance intervalIn Service → RetiredLogbooks
Calibration EventExperimentEvent Type: CalibrationRecords a calibration performed against a standardReference standard, as-found/as-left valuesScheduled → Completed → ApprovedInventory Management
Preventive Maintenance EventExperimentEvent Type: PMRecords scheduled preventive maintenanceChecklist completed, parts replacedScheduled → CompletedInventory Management
Repair/Corrective Maintenance EventExperimentEvent Type: RepairRecords unscheduled repair workFault description, resolutionOpened → CompletedQuality Management
IQ/OQ/PQ Qualification RecordExperimentEvent Type: QualificationDocuments installation/operational/performance qualificationQualification protocol reference, resultsPlanned → Executed → ApprovedQuality Management
Reference Standard RegistrationResourceAsset Class: StandardRegisters a certified reference/measurement standardCertificate number, traceability chainActive → ExpiredInventory Management

Roles & Permissions

RoleView StatusLog UsageRecord Calibration/PMApprove RecordsConfigure Team
Operator✓✓———
Calibration Technician✓✓✓——
Metrology Lead✓✓✓✓—
Team Leader✓✓✓✓✓

Compliance & Standards Touchpoints

ISO 17025 ISO 15189 GMP Equipment Qualification

Metrological traceability to certified reference standards, and system-enforced blocking of out-of-calibration instrument selection, are both explicit ISO 17025 expectations this module is designed to satisfy.

Integration Points with Other Modules

Gates instrument selection in LIMS; supplies asset context to Logbooks usage entries; opens equipment deviation cases in Quality Management; consumes calibration-standard stock from Inventory Management; verifies operator qualification via Training Tracking.

Success Metrics / KPIs

  • Percentage of fleet currently in-calibration
  • Average calibration overdue duration before resolution
  • Unscheduled repair events per asset per year
Chapter 16 · Module FDS

Inventory Management

The Inventory Management Team tracks reagents, consumables, and standards — quantities on hand, lot/expiration status, storage location, and reorder triggers — and supplies lot-level traceability back to every module that consumes inventory.

Module Overview & Positioning

Inventory Management is the supply-side counterpart to almost every other module: LIMS test orders consume reagents, ELN experiments consume reagents, Instrument & Asset Management calibration events consume reference standards. This module's core job is maintaining accurate stock levels and lot/expiration status so that consumption anywhere else in the suite reflects reality and expired or unapproved material can't silently be used.

Team Configuration

  • Team name: Inventory Management, with Resources representing each stocked item/lot and Experiments representing receiving, consumption, and adjustment transactions.
  • Permission model: Requesters (any staff can request/consume), Receiving Staff (log incoming shipments), Inventory Manager (approve vendors, set reorder points, Team Leader).
  • Status workflow (per lot): Quarantined → Approved/In Stock → Low Stock → Expired/Depleted → Disposed.

Object Renaming Map

Native ObjectRenamed AsNotes
ResourceInventory Item / LotOne Resource per distinct item lot
ExperimentInventory TransactionOne Experiment per receiving, consumption, or adjustment event
Experiment CategoryTransaction TypeReceiving, consumption, adjustment, disposal
Resource CategoryItem ClassReagent, consumable, standard, hazardous material

Native LabLynx One Capabilities Leveraged

Custom Metadata Fields
Lot number, expiration date, storage location, and quantity on hand captured as structured fields.
Templates
Standard receiving and consumption templates per item class keep transaction records consistent.
Experiment-to-Resource Linking
Every transaction links back to the specific lot Resource it affects, preserving full consumption history.
Tagging & Search
Immediately locate every experiment or sample that consumed a specific lot, for recall purposes.

Functional Gaps Identified

  • No native barcode-based receiving console for rapid intake of shipments.
  • No native automated reorder-point alerting or purchase-request generation.
  • No native at-a-glance stock-level dashboard across item classes and storage locations.

Plugin App Specification

A Reorder Dashboard & Barcode Receiving Console is proposed: a stock-level dashboard with configurable reorder thresholds and automated purchase-request generation, plus a barcode-scanning receiving workflow that creates the corresponding lot Resource and quarantine-to-approved transition automatically.

Stock Dashboard
  • → Current quantity by item/lot/location
  • → Low-stock and expiring-soon flags
  • → Filter by item class
Reorder Automation
  • → Configurable reorder threshold per item
  • → Auto-generated purchase request
  • → Vendor approval-status check before ordering
Barcode Receiving Console
  • → Scan-to-receive with lot/expiration capture
  • → Quarantine-pending-QC status by default

Experiment & Resource Template Catalog

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Reagent LotResourceItem Class: ReagentRegisters a distinct reagent lotLot number, expiration, storage locationQuarantined → In Stock → DepletedLIMS, ELN
Consumable Stock ItemResourceItem Class: ConsumableRegisters general consumable stock (tips, tubes)Quantity, reorder thresholdIn Stock → Low Stock → DepletedLIMS
Certified Reference StandardResourceItem Class: StandardRegisters a certified calibration standardCertificate number, expirationIn Stock → ExpiredInstrument & Asset Mgmt
Hazardous Material Stock ItemResourceItem Class: HazardousRegisters a hazard-classified materialHazard class, SDS referenceIn Stock → DisposedQuality Management
Receiving TransactionExperimentTransaction Type: ReceivingRecords an incoming shipmentVendor, PO reference, quantity receivedReceived → Quarantined → Approved—
Consumption TransactionExperimentTransaction Type: ConsumptionRecords use of an item against an experiment/sampleQuantity used, linked experiment/sampleLoggedLIMS, ELN
Inventory AdjustmentExperimentTransaction Type: AdjustmentRecords a manual count correctionReason, quantity deltaLogged → Approved—

Roles & Permissions

RoleRequest/ConsumeLog ReceivingApprove VendorsConfigure Team
Requester (any staff)✓———
Receiving Staff✓✓——
Inventory Manager (Team Leader)✓✓✓✓

Compliance & Standards Touchpoints

ISO 17025 GMP Material Control OSHA Hazard Communication

Lot-level traceability and quarantine-pending-approval status directly support both material-control expectations under GMP and recall-readiness for any material later found defective.

Integration Points with Other Modules

Supplies reagent/media lot data to LIMS and ELN; supplies reference standard stock to Instrument & Asset Management; hazardous material handling links to Quality Management safety programs; vendor approval status shared with Document Management-controlled vendor qualification records.

Success Metrics / KPIs

  • Stockout incidents per month
  • Percentage of inventory value nearing expiration
  • Average time from reorder trigger to received stock
Chapter 17 · Module FDS

Lab Portal

The Lab Portal Team is the external-facing front door of LabLynx One — the module non-lab users (clients, patients, referring physicians) touch — and the module most fully delivered through a plugin app rather than LabLynx One's native scientist-facing UI.

Module Overview & Positioning

Every other module in this profile is built for people who work inside the laboratory. The Lab Portal is built for people who don't: clients submitting sample requests, checking order status, and downloading reports, without ever needing to understand what a Team, Experiment, or Resource is. Architecturally, this module is almost entirely plugin app, with LabLynx One's native Experiment/Resource model working quietly underneath as the aggregation and data source layer.

Team Configuration

  • Team name: Lab Portal, with Resources representing each external client/account and Experiments representing each portal-submitted request.
  • Permission model: this Team is unusual in that most "users" are external clients interacting only through the plugin app, never logging into LabLynx One's native UI directly; internal Portal Administrators manage account provisioning and content.
  • Status workflow: Submitted → Acknowledged → In Progress (mirrors linked LIMS/Quality Management status) → Completed → Delivered.

Object Renaming Map

Native ObjectRenamed AsNotes
ResourceClient Account / Portal WidgetOne Resource per external client account or dashboard widget config
ExperimentPortal RequestOne Experiment per client-submitted request (sample submission, report request, complaint)
Experiment CategoryRequest TypeSample submission, status inquiry, report download, complaint
Resource CategoryAccount TierStandard client, contract/CRO client, internal department

Native LabLynx One Capabilities Leveraged

RESTful API
The entire client-facing experience is built against this API — it is the sole point of contact between the plugin app and the platform.
Custom Metadata Fields
Client account details, contract terms, and request attributes captured as structured, queryable fields.
File Attachment Support
Final reports and COAs generated in LIMS/Document Management are attached and made available for portal download.
Webhook-Based Event Notification
Status changes elsewhere in the suite push real-time updates to the client-facing portal without polling.

Functional Gaps Identified

  • No native client-facing UI at all — LabLynx One's scientist-oriented interface is not appropriate to expose to external clients.
  • No native self-service sample submission form tailored to non-technical external users.
  • No native client-specific branding/white-labeling of the request/status experience.

Plugin App Specification

A full Client-Facing Portal is proposed: a self-service web application for account holders to submit sample requests, track status in real time, download reports, and file complaints — entirely decoupled from LabLynx One's native UI, reading and writing exclusively through the API and webhook layer described in Chapter 38.

Self-Service Submission
  • → Guided sample-submission form
  • → Pre-registration flowing into LIMS accessioning
  • → Printable pre-populated labels
Status & Results Dashboard
  • → Real-time order status (webhook-driven)
  • → Report/COA download
  • → Historical order search
Complaint & Inquiry Intake
  • → Structured complaint form
  • → Auto-creates Quality Management case via webhook
Branding Layer
  • → Client-specific theming for CRO/contract accounts
  • → Configurable per Client Account Resource

Experiment & Resource Template Catalog

TemplateTypeCategoryPurposeKey Metadata FieldsWorkflow StatesLinked Module(s)
Client Account ProfileResourceAccount TierMaster record for an external client accountContract terms, billing contact, branding configActive → Suspended → Closed—
Sample Submission RequestExperimentRequest Type: SubmissionClient-initiated sample pre-registrationRequested tests, site, expected volumeSubmitted → Acknowledged → ReceivedLIMS
Report/COA Download RequestExperimentRequest Type: ReportTracks client access to a finalized reportReport reference, download timestampRequested → DeliveredLIMS, Document Management
Status InquiryExperimentRequest Type: InquiryClient question about an in-progress orderOrder reference, question textSubmitted → AnsweredLIMS
Client ComplaintExperimentRequest Type: ComplaintClient-submitted complaint intakeOrder reference, complaint summarySubmitted → Routed → ResolvedQuality Management
Portal Dashboard Widget ConfigResourcePortal WidgetDefines a configurable dashboard element per accountWidget type, data source, refresh intervalActive → Retired—

Roles & Permissions

RoleSubmit RequestsView Own Account OnlyManage Accounts/BrandingConfigure Team
External Client User✓✓——
Portal Administrator✓All accounts✓—
Team Leader✓All accounts✓✓

Compliance & Standards Touchpoints

Data Privacy / Access Control 21 CFR Part 11 (report integrity)

Strict account-level data segregation is the primary compliance concern for this module — one client account must never be able to view another's samples, results, or complaints, enforced both at the LabLynx One Team-permission layer and again at the plugin app layer.

Integration Points with Other Modules

Reads live status from LIMS; downloads finalized reports from Document Management; routes complaints into Quality Management; is the single aggregation point referenced throughout Chapter 37 as the suite's unified front door.

Success Metrics / KPIs

  • Percentage of orders submitted via self-service vs. staff-entered
  • Average time from result finalization to client notification
  • Client complaint resolution time (portal-to-close)
Part III

Add-on Applications

The twelve modules in Part II are Teams built entirely on the LabLynx One data model. The five applications in this section are different in kind: they are separately licensed, independently developed LabLynx products that install alongside LabLynx One and extend it into capabilities the core platform doesn't attempt to cover natively — file collaboration, instrument integration, governance/risk/compliance, formal learning management, and client relationship management. Because these are standalone products rather than configured Teams, each chapter here follows a lighter structure than Part II's FDS template: product overview, core capabilities, how it integrates with LabLynx One, licensing, and compliance touchpoints.

Chapter 18 · Add-on Application

LabDrive

LabDrive is LabLynx's cloud-based Scientific Data Management System (SDMS) — a secure, collaborative environment for managing scientific files, documents, and data across departments, projects, and locations, with the version control, e-signatures, and audit trail regulated labs require.

Product Overview & Positioning

Where LabLynx One's own Document Management module (Chapter 13) covers core controlled-document lifecycle management natively, LabDrive is the deeper, dedicated file-collaboration and SDMS product for labs that need more: real-time co-authoring, file locking, task/project management, and large-scale file synchronization across devices and sites. It's the natural upgrade path once a lab's document volume or collaboration needs outgrow the native Document Management module.

Core Capabilities

Version Control & File Locking
Full version history and change control on every file, with locking to prevent unauthorized concurrent edits on controlled documents.
Real-Time Collaboration
Secure, traceable co-authoring within teams or with external collaborators, governed by permission controls.
Synchronized Access Across Devices
Consistent, up-to-date file access anywhere, on any device.
Task Management
Kanban-style card tracking drives visibility and efficiency across projects and document workflows.
Encrypted Storage & Audit Trail
Fully encrypted file storage with audit trails, version history, and change control aligned to regulatory requirements.
Flexible Deployment
Supports both cloud-hosted and on-premises deployment, scaling from a single startup lab to a multi-site enterprise.

Integration with LabLynx One

LabDrive is the natural expansion point for the Document Management module — labs that start with native controlled-document management can move deeper collaboration, large file volumes, and co-authoring workflows into LabDrive without disrupting their document control chain of custody. LabCourses also draws on LabDrive as its source library for embedded training documents and SOP references, keeping training content synchronized with the current approved procedure version.

Licensing & Availability

LabDrive is an optional add-on to LabLynx One, licensed on an annual subscription that includes unlimited users, consistent with LabLynx's platform-wide licensing model. Support includes implementation assistance, custom onboarding and training, and continuous feature updates.

Compliance & Standards Touchpoints

GDPR 21 CFR Part 11 GxP / CLIA / CAP Document Control

Encrypted communications, configurable SSO/LDAP authentication, and full version/audit history give LabDrive the same data-integrity posture regulated labs expect from every LabLynx product.

Chapter 19 · Add-on Application

LabVia

LabVia is LabLynx's laboratory integration and automation platform — the connectivity layer that lets instruments, software, and edge devices across the lab speak a common language and route their data to the right destination in real time.

Product Overview & Positioning

Several modules in this profile — LIMS, LIS, LES, and Instrument & Asset Management chief among them — assume instruments and external systems are feeding data in reliably. LabVia is what actually makes that assumption true at scale: rather than every module building its own bespoke instrument connections, LabVia centralizes protocol translation, data normalization, and orchestration across the entire instrument fleet.

Core Capabilities

LabVia Hub
An on-premises hardware/software hybrid acting as the local nerve center — communicating directly with instruments, software, and edge devices, handling protocol translation and data normalization on-site.
400+ Instrument Profiles
Pre-configured integration profiles spanning pharmaceutical, biotech, environmental, forensic, and clinical instrumentation, with custom profiles available for unusual equipment.
LabVia Cloud
Hosted on sciCloud.net, providing scalable, real-time integration management and orchestration, remote access, centralized updates, and system-wide visibility.
AI-Powered Intelligence
Taps into sciCloud.net's built-in AI-powered laboratory intelligence for anomaly detection, predictive analytics, and intelligent scheduling.
Visual Flow Builder
Integration workflows defined as visual, node-based flows — file watchers, parsers, transformers, validators, and API writers — without hand-written integration code.
Data Validation at the Source
Validates instrument outputs against defined ranges and formats before transmission, catching anomalies before they reach the platform.

Integration with LabLynx One

LabVia is the connective tissue behind several modules' plugin apps: it's what feeds live instrument data into LES's Instrument Data Bridge component, what supplies real-time calibration and usage signals to Instrument & Asset Management, and what routes instrument results into LIMS and LIS test orders without manual transcription. When LabServer is deployed as the on-premises appliance, it also serves as the LabVia Hub — no separate hardware required.

Licensing & Availability

LabVia is an optional add-on to LabLynx One, licensed on an annual subscription with maintenance, support, and warranty included. LabVia Hub deployment includes guided setup with remote or on-site assistance from LabLynx professionals.

Compliance & Standards Touchpoints

21 CFR Part 11 ISO 17025 Metrological Traceability

Source-level data validation and a documented, protocol-translated chain from instrument to platform support the same data-integrity expectations covered elsewhere in this profile.

Chapter 20 · Add-on Application

LabGRC

LabGRC is LabLynx's dedicated Governance, Risk, and Compliance platform — built on the proven Eramba GRC framework and pre-configured for laboratory regulatory environments — providing the strategic compliance layer that sits above day-to-day quality operations.

Product Overview & Positioning

The Quality Management module (Chapter 14) manages quality operations — CAPAs, nonconformances, audits. LabGRC manages a different, complementary layer: which regulatory standards apply, what controls are required, whether those controls are actually in place and effective, and where residual risk remains. Together, LabLynx One's Quality Management module and LabGRC provide both the operational and the strategic layers of a complete laboratory compliance program.

Core Capabilities

Regulatory Framework Library
Pre-built templates for CLIA, HIPAA, 21 CFR Part 11, GLP, GMP, ISO 9001, ISO 17025, ISO 15189, ISO 13485, CAP, and more — each mapping clauses to required controls and evidence.
Risk Register
Formal risk register aligned to ISO 31000, capturing likelihood/impact scoring, controls in place, residual risk, ownership, and treatment plans.
CAPA Workflow
Structured Nonconformance → Root Cause → Corrective Action → Effectiveness Check → Closure workflow, with premature closure blocked until effectiveness is verified.
Internal Audit Management
Full audit cycle support — scheduling, framework-driven checklists, finding categorization, and remediation tracking through to verified closure.
Policy & Compliance Lifecycle
Policy creation, acknowledgment tracking, and gap analysis against active regulatory frameworks.
GRC ↔ LMS Linkage
Automatically identifies personnel-related control requirements and assigns the corresponding course in LabCourses — closing the loop between compliance obligation and verified competency.

Integration with LabLynx One

LabGRC's CAPA records cross-link directly to Quality Management nonconformance cases; its risk register draws on operational quality events across every module; its personnel-related control requirements auto-assign training in LabCourses; and policies it governs are stored and version-controlled in LabDrive. This is the profile's clearest example of an add-on application acting as connective tissue across both the core modules and the other add-ons.

Licensing & Availability

LabGRC is an optional add-on, selected by regulated laboratories, accredited testing facilities, and quality-system-driven organizations requiring formal GRC framework management, CAPA, risk registers, and internal audit workflows.

Compliance & Standards Touchpoints

ISO 9001 / ISO 15189 / ISO 13485 ISO 17025 / ISO 17020 CLIA / CAP / ANAB / NELAC-TNI 21 CFR Part 11

LabGRC's regulatory template library is purpose-built to give laboratories a structured, evidence-backed way to demonstrate compliance across whichever of these frameworks apply to their operations, simultaneously.

Chapter 21 · Add-on Application

LabCourses

LabCourses is LabLynx's full-featured laboratory learning management system (LMS) — going well beyond the completion-tracking native to the Training Tracking module by adding course authoring, competency assessment, role-based learning pathways, and verified, tamper-resistant training transcripts.

Product Overview & Positioning

The Training Tracking module (Chapter 12) records that a qualification was completed and tracks its expiration. LabCourses answers a stricter question ISO 17025, ISO 15189, CAP, CLIA, and ANAB all actually ask: not just that someone attended training, but that they demonstrated a defined, tested level of competency. Labs that need to generate that evidence — rather than just a completion date — are the natural LabCourses buyer.

Core Capabilities

Course Authoring
Browser-based authoring with rich text, embedded LabDrive documents, video, and interactive modules — no external authoring software required.
Role-Based Learning Pathways
Assigning a role (e.g., "QC Analyst") automatically enrolls the person in every course required for that role — no manual course-by-course assignment.
SCORM / xAPI Support
Imports third-party training content from any SCORM- or xAPI-compliant source, including commercial safety and compliance libraries.
Examination & Assessment Engine
Randomized question banks, multiple question formats, configurable pass/fail thresholds, timed exams, and controlled attempt limits.
Deadline Tracking & Renewal
Automated reminders and re-enrollment when training with a defined renewal period comes due (annual HIPAA, biannual competency checks).
Tamper-Resistant Transcripts
Every training activity generates a permanent record — course, version, completion date, score, attempts, and outcome — exportable for accreditation evidence.

Integration with LabLynx One

LabCourses is the natural upgrade path from the Training Tracking module once a lab needs assessed competency evidence rather than completion tracking alone. It receives auto-assigned training requirements from LabGRC whenever a personnel-related control gap is identified, and reports completions back as compliance evidence — closing the loop without manual data entry. Course content draws on LabDrive for embedded, version-synchronized SOP references.

Licensing & Availability

LabCourses is an optional add-on, selected by accredited laboratories, regulated facilities, and organizations with formal personnel competency requirements. It's most commonly deployed alongside LabGRC to link compliance training requirements directly to verified personnel competency records.

Compliance & Standards Touchpoints

ISO 17025 / ISO 15189 CAP / CLIA / ANAB

LabCourses is built specifically to generate the assessed — not merely attended — competency evidence these accreditation bodies require.

Chapter 22 · Add-on Application

LabCRM

LabCRM is LabLynx's client relationship management add-on — extending LabLynx One's operational modules with the sales, quoting, contract, and renewal management layer a commercial or contract laboratory needs to run the business side of client relationships, not just the testing side.

Product Overview & Positioning

The Lab Portal module (Chapter 17) gives an existing client a place to submit samples, track orders, and download reports. LabCRM covers what happens before and around that relationship: lead tracking, quoting, contract and pricing management, account renewal pipelines, and the sales-side visibility a lab's business development team needs — information the operational modules were never meant to hold.

A Newer Addition to the Add-on Lineup

Unlike LabDrive, LabVia, LabGRC, and LabCourses — each with an established, detailed product datasheet — LabCRM is a newer addition to this lineup, and its capabilities below are scoped at the positioning level pending a full product specification. Treat this chapter as a placeholder for that detail rather than a finalized feature list.

Core Capabilities (Scoped)

Account & Contact Management
Centralized record of client organizations, contacts, and relationship history, distinct from the operational Client Account data the Lab Portal module manages.
Quoting & Contract Management
Structured quote generation, pricing/contract terms, and renewal tracking tied to each account.
Sales Pipeline Visibility
Lead-to-close tracking for new business development, separate from existing client operational activity.
Renewal & Retention Alerts
Surfaces upcoming contract renewals and at-risk accounts ahead of expiration.

Integration with LabLynx One

LabCRM is expected to read order volume, turnaround time, and complaint history from the Lab Portal and LIMS/LIS modules to inform account health and renewal conversations, while keeping sales-side data (quotes, pricing negotiations, pipeline stage) separate from the operational client account record — the same separation of concerns already established between LabGRC and Quality Management.

Licensing & Availability

LabCRM is positioned as an optional add-on for commercial and contract laboratories with a dedicated business development function. Final licensing terms should be confirmed with LabLynx sales, consistent with the other add-ons in this Part.

Part IV

Solution Template Libraries

The twelve modules (Part II) are building blocks. The five add-on applications (Part III) are extended building blocks. This Part is where those pieces get pre-assembled into ready-to-deploy starting configurations for thirteen specific laboratory verticals — each one curating a subset of modules, add-ons, roles, compliance mappings, and Dashboard KPIs into a single named bundle, so an implementer starts from an industry-tuned baseline rather than a blank platform. Each chapter here is deliberately thin: it references templates and roles already defined in Parts II and III rather than redefining them, and can be thought of as a manifest — what's activated, what's included, and what's recommended alongside it — rather than a full specification in its own right.

Compliant hosting platform
LabLynx One platform
Modules & add-on applications
Solution template libraries — you are here
Your lab's configured solution
Chapter 23 · Solution Template

Academic/Research

Bundles a lightweight, FAIR-data-principled configuration for academic and university research labs — narrative documentation, minimal compliance overhead, and reagent tracking sized for a research group rather than a regulated production environment.

Activated Modules & Add-ons

DashboardELNLogbooksInventory ManagementDocument Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
ELNGeneral Notebook Entry, Assay Protocol, Synthesis Protocol, Literature Reference Note
LogbooksEquipment Usage Log Entry
Inventory ManagementReagent Lot, Consumable Stock Item

Role & Permission Presets

Author (graduate student/researcher), Peer Reviewer, Principal Investigator (Team Leader)

Compliance Framework Mapping

Institutional IRB/IACUC (where applicable)FAIR Data PrinciplesGrant-Funder Data Management Requirements

Dashboard KPI Presets

Entries signed within target time; percentage of data meeting FAIR retrievability standards

Recommended Add-on Applications

LabDrive (collaboration across multi-institution research teams)

Chapter 24 · Solution Template

Agriculture Testing

Bundles the matrix- and commodity-based testing configuration agricultural labs need out of the box. This solution spans a wide range of agricultural testing disciplines: feed, seed, fertilizer, cannabis/hemp, fuel, dairy, animal health, horticulture, soil, microbiology, and genetics. Each discipline brings its own sample types, test panels, and certifying bodies, but shares the same underlying LIMS-driven pattern — commodity-specific accessioning, specification/limit comparison, and certificate-of-analysis reporting back to growers, producers, or regulators.

Activated Modules & Add-ons

DashboardLIMSQuality ManagementInstrument & Asset ManagementInventory ManagementDocument Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LIMSStandard Sample Accession, Composite/Bulk Sample, General Chemistry Test Order, Microbiology Test Order, Specification/Limits Set — Regulatory, Certificate of Analysis (COA), Recurring/Scheduled Sampling Program
Quality ManagementOut-of-Specification (OOS) Investigation, Retest/Resample Request
Inventory ManagementReagent Lot, Certified Reference Standard

Role & Permission Presets

Accessioning Staff, Analyst, Reviewer/Approver, Program Coordinator (manages recurring sampling and certification programs)

Compliance Framework Mapping

AAFCO (Feed)AOSA/AOSCA (Seed)State Fertilizer & Ag Regulatory ProgramsState Cannabis/Hemp Regulatory ProgramsASTM/ASTM D-Series (Fuel)Grade A Pasteurized Milk Ordinance (Dairy)USDA-APHIS (Animal Health)ISO 17025

Dashboard KPI Presets

Turnaround time by commodity/discipline; certification/regulatory deadline compliance rate; retest rate by matrix type

Recommended Add-on Applications

LabGRC (multi-jurisdiction and multi-discipline regulatory framework mapping, since requirements vary widely by commodity and state)

Chapter 25 · Solution Template

Biobanking

Bundles the long-term specimen storage and chain-of-custody configuration biobanks and biorepositories need — inventory-centric tracking of stored specimens over years or decades, distinct from the throughput-oriented accessioning pattern most other solutions use.

Activated Modules & Add-ons

DashboardInventory ManagementLIMSQuality ManagementDocument Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
Inventory ManagementReagent Lot pattern adapted for specimen lots, Hazardous Material Stock Item, Inventory Adjustment
LIMSStandard Sample Accession, Sample Disposal/Retention Record
Quality ManagementEquipment Deviation (freezer/storage excursions)

Role & Permission Presets

Specimen Custodian, Inventory Manager, Repository Director

Compliance Framework Mapping

ISBER Best PracticesCAP Biorepository AccreditationHIPAA (where linked to patient identity)

Dashboard KPI Presets

Storage excursion incidents per year; specimen retrieval accuracy; retention-schedule compliance rate

Recommended Add-on Applications

LabVia (continuous freezer/storage-condition monitoring integration)

Chapter 26 · Solution Template

Clinical/Diagnostic Testing

Bundles patient-testing configuration for hospital-affiliated, reference, and independent clinical labs — positive patient identification, critical-value callback workflow, and CLIA/CAP-aligned reference range handling, centered on the LIS module.

Activated Modules & Add-ons

DashboardLISQuality ManagementTraining TrackingInstrument & Asset ManagementInventory Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LISStandard Patient Specimen Accession, Blood/Serum Specimen, Physician Order, Clinical Chemistry Test Order, Hematology Test Order, Reference Range/Clinical Limits Set, Critical Value Callback Record, Result Amendment/Correction, Patient Report (Cumulative), Specimen Rejection Record
Quality ManagementOut-of-Specification (OOS) Investigation, Near-Miss/Safety Observation
Training TrackingMethod-Specific Qualification, Equipment-Specific Qualification

Role & Permission Presets

Accessioning/Registration Staff, Clinical Analyst, Pathologist/Clinical Reviewer, Quality Manager

Compliance Framework Mapping

CLIACAP21 CFR Part 11HIPAAALCOA+

Dashboard KPI Presets

Turnaround time by priority (STAT vs. routine); critical-value notification time; specimen rejection rate

Recommended Add-on Applications

LabGRC (CLIA/CAP framework templates), LabCourses (assessed competency evidence for personnel requirements)

Chapter 27 · Solution Template

CRO/CDMO

Bundles the multi-client, contract-driven configuration contract research and development/manufacturing organizations need — account-segregated reporting, quoting/contract visibility through LabCRM, and client-facing status transparency through the Lab Portal.

Activated Modules & Add-ons

DashboardLIMSLESLab PortalQuality ManagementDocument Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LIMSStandard Sample Accession, General Chemistry Test Order, Certificate of Analysis (COA)
Lab PortalClient Account Profile, Sample Submission Request, Report/COA Download Request, Status Inquiry
Quality ManagementClient Complaint

Role & Permission Presets

Accessioning Staff, Analyst, Reviewer/Approver, Portal Administrator, Account/Contract Manager

Compliance Framework Mapping

21 CFR Part 11GMP (where manufacturing-adjacent)Client-Specific Contractual Requirements

Dashboard KPI Presets

Percentage of orders submitted via self-service portal; contract renewal rate; per-client turnaround time variance

Recommended Add-on Applications

LabCRM (quoting, contract, and account renewal management — the defining add-on for this solution), LabDrive (client-facing document sharing)

Chapter 28 · Solution Template

Environmental Testing

Bundles the site-, matrix-, and program-based testing configuration environmental labs need out of the box. This solution spans several distinct environmental testing disciplines: environmental monitoring & remediation, environmental health & safety, municipal water/wastewater, industrial pretreatment, commercial environmental testing, and air quality monitoring. Each shares the same underlying LIMS-driven pattern — accessioning by matrix and site, specification/limit comparison against a regulatory reference, and recurring sampling-program scheduling — even though the samples, methods, and regulatory bodies involved differ considerably from one discipline to the next.

Activated Modules & Add-ons

DashboardLIMSQuality ManagementInstrument & Asset ManagementInventory ManagementDocument Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LIMSStandard Sample Accession, Environmental Water Sample, Composite/Bulk Sample, Specification/Limits Set — Regulatory, Chain-of-Custody Transfer Log, Recurring/Scheduled Sampling Program
Quality ManagementOut-of-Specification (OOS) Investigation, Internal Audit Finding
Instrument & Asset ManagementCalibration Event, Reference Standard Registration

Role & Permission Presets

Field Sampler (site collection, chain-of-custody sign-off), Accessioning Staff, Analyst, Reviewer/Approver, Program Coordinator (manages recurring sampling schedules)

Compliance Framework Mapping

EPA MethodsNELAC-TNIISO 17025Clean Water Act / NPDES (Municipal & Industrial Pretreatment)State Environmental Regulatory Programs

Dashboard KPI Presets

Percentage of recurring program samples collected on schedule; average turnaround by matrix type and discipline; regulatory limit exceedance rate

Recommended Add-on Applications

LabGRC (multi-jurisdiction regulatory mapping across whichever environmental discipline applies), LabVia (field sensor and instrument integration — particularly relevant for continuous air quality monitoring)

Chapter 29 · Solution Template

Food & Beverage Safety Testing

Bundles the FDA/USDA/HACCP-aligned configuration for food and beverage safety labs — pathogen and contaminant test panels, batch/lot traceability, and quality-case handling tuned to recall-readiness rather than general nonconformance tracking.

Activated Modules & Add-ons

DashboardLIMSQuality ManagementInventory ManagementDocument Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LIMSStandard Sample Accession, Microbiology Test Order, Specification/Limits Set — Regulatory, Certificate of Analysis (COA)
Quality ManagementOut-of-Specification (OOS) Investigation, Internal Audit Finding, CAPA Action Plan
Inventory ManagementReagent Lot, Consumption Transaction

Role & Permission Presets

Accessioning Staff, Analyst, Reviewer/Approver, HACCP/Food Safety Coordinator

Compliance Framework Mapping

FDA Food Safety Modernization Act (FSMA)USDA/FSISHACCPISO 17025

Dashboard KPI Presets

Pathogen detection turnaround time; recall-readiness evidence assembly time; batch traceability completeness

Recommended Add-on Applications

LabGRC (HACCP/FSMA framework mapping and recall-readiness evidence packages)

Chapter 30 · Solution Template

Forensic Case & Evidence Management

Bundles the case- and evidence-centered configuration forensic and evidentiary labs need — organizing evidence intake, examination, and case-level tracking from submission through report or testimony. Case and evidence management is the actual purpose of the work performed in this solution; chain-of-custody logging is the compliance and data-integrity backbone that runs underneath it, ensuring every transfer and examination is defensible, not the primary framing of the solution itself.

Activated Modules & Add-ons

DashboardLIMSLogbooksQuality ManagementDocument ManagementTraining Tracking

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LIMSStandard Sample Accession (evidence intake), Chain-of-Custody Transfer Log, Retest/Resample Request, Sample Disposal/Retention Record
LogbooksRoom/Area Access Log Entry, Master Logbook Registry
Quality ManagementInternal Audit Finding, CAPA Action Plan

Role & Permission Presets

Case Manager (oversees case lifecycle from intake through report/testimony), Evidence Custodian (custody-chain sign-off authority), Accessioning Staff, Analyst, Reviewer/Approver, Legal/Records Liaison

Compliance Framework Mapping

ISO 17025ANAB Forensic AccreditationASCLD/LAB Legacy Requirements21 CFR Part 11

Dashboard KPI Presets

Case turnaround time (submission to report); chain-of-custody exceptions per 1,000 items; retention/disposal compliance rate

Recommended Add-on Applications

LabDrive (long-term evidentiary document retention), LabGRC (accreditation audit management)

Chapter 31 · Solution Template

GMP Manufacturing QC

Bundles the regulated production QC configuration any GMP-governed manufacturing site needs — gated, step-enforced test execution, tight equipment/material qualification gating, and CAPA-driven deviation management, centered on the LES module. This solution spans pharmaceutical, cosmetics, nutraceutical/dietary supplement, and medical device manufacturers, and other GMP-regulated producers — industries that share the same underlying discipline (validated methods, equipment qualification, batch release, documented deviation handling) even though the specific regulation governing each differs.

Activated Modules & Add-ons

DashboardLESLIMSQuality ManagementInstrument & Asset ManagementInventory ManagementTraining Tracking

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LESExecutable Method — Chemistry, Method Execution Run — General, In-Process Control Check Definition, In-Process Deviation, Step-Level Witness Signature
LIMSGeneral Chemistry Test Order, Specification/Limits Set — Product
Quality ManagementOut-of-Specification (OOS) Investigation, CAPA Action Plan
Instrument & Asset ManagementCalibration Event, IQ/OQ/PQ Qualification Record

Role & Permission Presets

Analyst, Method Author, QA/Method Approver, Quality Manager, Metrology Lead

Compliance Framework Mapping

21 CFR Part 11GMP CAPA & Equipment QualificationALCOA+ Data IntegrityISO 13485 (Medical Device)21 CFR Part 111 (Dietary Supplements)ISO 22716 (Cosmetics GMP)

Dashboard KPI Presets

Percentage of runs completed with zero manual overrides; in-process control failure rate; CAPA on-time completion rate

Recommended Add-on Applications

LabGRC (formal risk register and GMP framework mapping across whichever of these regulations applies — pharma, device, supplement, or cosmetic), LabCourses (assessed operator competency)

Chapter 32 · Solution Template

Manufacturing QC

Bundles a general-purpose, in-house product and process quality-control configuration for manufacturers across industries — electronics, plastics, consumer goods, automotive and aerospace components, industrial equipment — where consistent product testing, specification compliance, and nonconformance handling matter, but the deep GMP-specific rigor of the GMP Manufacturing QC solution (Chapter 28) isn't required. This is the broader, industry-agnostic counterpart to that GMP-regulated solution.

Activated Modules & Add-ons

DashboardLIMSInstrument & Asset ManagementInventory ManagementQuality ManagementDocument Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LIMSStandard Sample Accession, General Chemistry Test Order, Specification/Limits Set — Product, Certificate of Analysis (COA)
Instrument & Asset ManagementAnalytical Instrument Registration, General Lab Equipment Registration, Calibration Event
Quality ManagementOut-of-Specification (OOS) Investigation, CAPA Action Plan, Internal Audit Finding
Document ManagementStandard Operating Procedure (SOP), Work Instruction

Role & Permission Presets

Accessioning Staff, Analyst, Reviewer/Approver, Quality Manager, Production/Process QC Coordinator

Compliance Framework Mapping

ISO 9001IATF 16949 (Automotive)AS9100 (Aerospace)

Dashboard KPI Presets

First-pass inspection yield; nonconformance rate per production run; CAPA closure time

Recommended Add-on Applications

LabGRC (multi-standard framework mapping across ISO 9001, IATF 16949, and AS9100), LabDrive (SOP and work-instruction document control at scale)

Chapter 33 · Solution Template

Pharmaceutical & Biotech R&D

Bundles the research-and-discovery configuration for pharmaceutical and biotech R&D groups — protocol-driven experimentation, method development documentation, and reagent tracking, centered on the ELN module rather than sample-throughput modules.

Activated Modules & Add-ons

DashboardELNLESDocument ManagementInventory Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
ELNGeneral Notebook Entry, Method Development Entry, Assay Protocol, Synthesis Protocol, Reagent Reference, Peer Review/Countersignature Entry
LESMethod Authoring Draft, Executable Method — Chemistry
Inventory ManagementReagent Lot, Consumable Stock Item

Role & Permission Presets

Author (bench scientist), Peer Reviewer, Principal Investigator/Team Leader

Compliance Framework Mapping

21 CFR Part 11ALCOA+IP/Patent Priority Documentation

Dashboard KPI Presets

Entries signed within target time of experiment completion; percentage of entries using a governed template

Recommended Add-on Applications

LabDrive (deeper collaboration and co-authoring as research groups scale)

Chapter 34 · Solution Template

Point-of-Care Testing

Bundles a decentralized, minimal-footprint configuration for point-of-care and near-patient testing settings — fast patient/specimen registration and streamlined result entry, deliberately light on the heavier LIS workflow for high-volume central labs.

Activated Modules & Add-ons

DashboardLISTraining TrackingInstrument & Asset Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LISStandard Patient Specimen Accession, Clinical Chemistry Test Order, Critical Value Callback Record
Training TrackingMethod-Specific Qualification, Equipment-Specific Qualification
Instrument & Asset ManagementCalibration Check Log Entry via Logbooks module (cross-referenced)

Role & Permission Presets

Point-of-Care Operator, Clinical Reviewer, POC Coordinator (oversees decentralized site compliance)

Compliance Framework Mapping

CLIA Waived/PPM Testing RequirementsCAP POC Accreditation

Dashboard KPI Presets

Percentage of operators current on required qualification; result turnaround at point of care; QC failure rate

Recommended Add-on Applications

LabVia (device connectivity across many small, distributed instruments)

Chapter 35 · Solution Template

Used-Oil/Asset Health

Bundles the fleet-adjacent, asset-health monitoring configuration echoing LubeDx's positioning — instrument- and asset-centric tracking with calibration and maintenance history as the primary data product, for labs performing used-oil and wear-metal analysis on behalf of equipment owners.

Activated Modules & Add-ons

DashboardLIMSInstrument & Asset ManagementInventory ManagementQuality Management

Referenced Template Subset

Source ModuleTemplates Included (see Part II for full definitions)
LIMSStandard Sample Accession, Certificate of Analysis (COA), Recurring/Scheduled Sampling Program
Instrument & Asset ManagementAnalytical Instrument Registration, Calibration Event, Preventive Maintenance Event, Repair/Corrective Maintenance Event
Inventory ManagementReagent Lot, Certified Reference Standard

Role & Permission Presets

Accessioning Staff, Analyst, Reviewer/Approver, Fleet Account Liaison

Compliance Framework Mapping

ASTM Used-Oil Analysis MethodsISO 17025

Dashboard KPI Presets

Average turnaround from sample receipt to fleet-operator report; trend-alert accuracy on wear-metal thresholds

Recommended Add-on Applications

LabVia (instrument data bridge for high-volume wear-metal analyzers)

Part V

Cross-Module Architecture

With the twelve modules (Part II), the five add-on applications (Part III), and the thirteen solution template libraries (Part IV) all specified, this section addresses how everything on those layers functions as one system: shared taxonomy, the Lab Portal's role as aggregation layer, the API/plugin architecture underlying every custom app and add-on, and how security and compliance hold together across the entire platform — not just the twelve core Teams.

Chapter 36

Cross-Team Data Flow & Shared Taxonomy

Twelve independently configured Teams only function as one coherent suite if certain things are held in common across all of them: how a person is identified, how a physical item is referenced across modules, and how tags and categories don't collide.

Shared Identity Across Teams

Every user is a single LabLynx One account regardless of how many Teams they belong to. This is what allows a qualification check in Training Tracking, a permission check in LIMS, and a signature in Quality Management to all resolve to the same, single identity — critical for any audit trail that needs to reconstruct who did what across module boundaries.

Cross-Referencing Physical and Logical Items

Several items exist conceptually in more than one Team — an instrument is registered in Instrument & Asset Management but referenced by Logbooks usage entries and gated against in LIMS; a reagent lot is registered in Inventory Management but consumed in LIMS and ELN. LabLynx One's convention is that the owning Team holds the canonical Resource record, and every other Team links to it via LabLynx One's native Experiment-to-Resource linking rather than duplicating the record.

Shared EntityOwning TeamReferenced By
Person / Qualification StatusTraining TrackingLIMS, LIS, Instrument & Asset Mgmt, Quality Management
Patient / Physician OrderLISLab Portal, Quality Management, Document Management
Executable MethodLESLIMS, LIS, ELN, Document Management, Quality Management
Instrument / AssetInstrument & Asset ManagementLIMS, LIS, Logbooks, Quality Management
Reagent / Standard LotInventory ManagementLIMS, LIS, ELN, Instrument & Asset Mgmt
Controlled DocumentDocument ManagementTraining Tracking, Quality Management, LIMS, LIS
Client AccountLab PortalLIMS, LIS, Quality Management

Tag and Category Governance

Tags are intentionally left global across Teams to support cross-Team search, while Categories are Team-scoped by design (per Chapter 4's renaming pattern) to keep each module's classification structure meaningful to its own users. A shared tag vocabulary — client names, project codes, regulatory citations — is maintained as a lightweight governance practice rather than a technical constraint.

Chapter 37

Lab Portal as the Unified Front Door

While eleven of the twelve modules serve internal lab staff, the Lab Portal is the one place external stakeholders touch LabLynx One — and its plugin app is built to aggregate, not just relay, data from across the other eleven Teams.

Aggregation, Not Just Pass-Through

A client checking order status isn't just viewing one LIMS record — they may be viewing a combined view spanning an in-progress Test Order (LIMS), a linked complaint case (Quality Management), and a downloadable Certificate of Analysis (Document Management). The Lab Portal plugin app's job is to assemble that composite view from multiple Teams' API responses into one coherent client-facing screen.

Consistency With Internal Workflows

Nothing the Lab Portal displays should ever be out of sync with what internal staff see in the native LabLynx One UI, since both draw from the same underlying records. Real-time consistency is maintained through the webhook pattern described in Chapter 38 — a status change in LIMS pushes an event the Portal plugin subscribes to, rather than the Portal polling for changes on a delay.

Chapter 38

API & Plugin Architecture

Every plugin app described in Part II shares one architecture: a thin client authenticating against LabLynx One's RESTful API, reading and writing Experiments/Resources/metadata, and subscribing to webhook events for real-time updates — with LabLynx One remaining the single system of record throughout.

Authentication

Plugin apps authenticate either as a scoped service account (for cross-Team aggregation views like the Lab Portal and the Training Tracking qualification-check endpoint) or on-behalf-of the logged-in user (for Team-specific consoles like the LIMS accessioning screen, and — critically — for the Dashboard's cross-Team "My Work Summary," which must always run as the viewing user rather than an elevated account so it can never surface more than that person already has permission to see), so that LabLynx One's native permission model is always the final authority on what a given request is allowed to do.

Core Endpoint Categories Used Across This Profile

Experiments (CRUD)
Resources (CRUD)
Custom Metadata Fields
File Uploads
Tags
Teams & Permissions
Users
Experiment-to-Resource Links
Status/Category Lists
Signatures

Webhook-Driven Cross-Team Events

Where a plugin app needs to react to an event happening in another Team — Quality Management's auto-intake from LIMS, the Lab Portal's real-time status updates, the Training Tracking qualification-check consumed by other modules — the profile relies on webhook-based event notification rather than polling, consistent with the pattern introduced in Chapter 5.

No Plugin Maintains Its Own Database of Record

Repeating the rule established in Chapter 5 because it governs every technical decision in this chapter: plugin apps may cache for performance, but the authoritative record — and the audit trail behind it — always lives in LabLynx One.

Chapter 39

Security, Audit Trail & Compliance Across the Platform

Twelve Teams, several plugin apps, and one shared regulatory posture: this chapter consolidates what auditors will expect to see regardless of which module they're examining.

One Audit Trail, Twelve Teams

Because every module is the same LabLynx One instance, the platform-wide audit trail spans all twelve Teams natively — a genuine advantage over a twelve-vendor stack, where reconstructing a cross-system event timeline means correlating logs from separate systems with separate clocks and separate identity models.

Consolidated Standards Coverage

21 CFR Part 11
E-signatures & audit trail — all twelve modules
ISO 17025
LIMS, Instrument & Asset Mgmt, Inventory Mgmt
ISO 15189
LIMS, Document Management, Quality Management
GMP (CAPA, Document Control, Equipment)
Quality Management, Document Management, Instrument & Asset Mgmt
ALCOA+ Data Integrity
All twelve modules

Plugin App Boundary Doesn't Weaken Compliance

Because every plugin app writes back through LabLynx One's own API rather than maintaining a parallel data store, no module's compliance posture is weakened by having a custom front end — the e-signature chain, audit trail, and version history behind a LIMS accessioning console or a Lab Portal request are identical in rigor to a record entered directly through LabLynx One's native UI.

Part VI

Delivering the Solution

With the twelve modules, the five add-on applications, the thirteen solution template libraries, and the cross-module architecture all specified, this section addresses how LabLynx One is actually licensed, implemented, and positioned against alternative approaches.

Chapter 40

Licensing & Deployment Model

LabLynx One inherits its underlying platform's unlimited-user licensing model — a single server-based subscription rather than per-seat pricing — which is what makes a twelve-Team, cross-functional deployment economically sensible in the first place.

Why Unlimited Users Matters Specifically Here

A per-seat LIMS, a per-seat document management system, and a per-seat training tracker each charge for every named user independently. Under LabLynx One's model, every person touching any of the twelve Teams — from a bench analyst to an occasional Logbooks user — is the same unlimited-user license, since all twelve modules are Teams within one LabLynx One instance.

Deployment Options

LabLynx One can be deployed through any of LabLynx's existing sciCloud.net deployment paths — fully hosted cloud, or on-premises LabServer — with the choice driven by the same data-residency and connectivity considerations that apply to any deployment of this kind, not by anything specific to the twelve-module configuration itself.

Chapter 41

Implementation Methodology & Rollout Sequencing

Twelve modules should not be configured simultaneously on day one. This chapter proposes a phased rollout sequence prioritizing the modules with the fastest time-to-value and the least cross-Team dependency.

Dashboard Isn't Part of the Sequence — It's Always On

Because every user is a member of the Dashboard Team from day one (Chapter 6), it doesn't get a rollout phase of its own. It's active from the very first login and simply reflects whichever Teams have gone live so far — a lab in Phase 1 sees a Dashboard with two module tiles; by Phase 4, it shows all twelve. There's nothing to "roll out" beyond enabling the plugin app itself alongside the very first module.

1
Foundation Teams
Weeks 1–4
Document Management and Training Tracking stand up first — every other module references controlled documents and qualification status, so these two have no upstream dependency and the most downstream value.
2
Core Operational Teams
Weeks 5–10
Instrument & Asset Management and Inventory Management stand up next, since LIMS and ELN both depend on asset and lot data being available to link against.
3
Sample & Research Teams
Weeks 11–16
LIMS, LIS, ELN, Logbooks, and LES go live together, since bench and clinical staff will move fluidly between all five in daily use — though LES's Method Authoring component (translating approved SOPs into executable steps) should start earlier in this phase, since it typically takes longer than standing up the other four.
4
Quality Closure & External Front Door
Weeks 17–22
Quality Management goes live once there is operational data across the other Teams to route exceptions from; the Lab Portal goes live last, once internal workflows are stable enough to expose externally.
Sequencing Is a Starting Recommendation, Not a Rule

A lab with an urgent, specific pain point — say, an accreditation audit citing calibration-tracking gaps — should reorder this sequence to address that module first. The value of LabLynx One's architecture is that any subset of the twelve Teams can be stood up independently and in any order.

Chapter 42

LabLynx One vs. Point Solutions

The alternative to LabLynx One is not "no software" — it is twelve separate point solutions from twelve separate vendors. This chapter compares the two approaches directly.

DimensionTwelve Point SolutionsLabLynx One
Vendor relationshipsUp to twelve separate contracts and support linesOne vendor, one contract
User identitySeparate login per systemSingle LabLynx One identity across all twelve Teams
Audit trailFragmented across systems, manually correlatedSingle, unified, platform-wide audit trail
LicensingPer-seat across multiple productsUnlimited users under one server license
Cross-module workflowManual hand-off or costly custom integrationNative linking + API/webhook pattern built in
Rollout flexibilityConstrained by each vendor's own onboardingAny subset of twelve Teams, any sequence

This comparison isn't a claim that LabLynx One always outperforms best-of-breed point solutions on depth in any single function — a lab with extremely deep, high-volume LIMS needs may still be better served by ELabLiMS specifically, and a lab with heavy document co-authoring needs may outgrow this module into full LabDrive. LabLynx One's case is architectural: for a lab that needs all twelve functions at a reasonable depth, one platform beats twelve.

Chapter 43

Get Started with LabLynx One

The fastest way to evaluate LabLynx One is to pick the one or two modules causing the most immediate operational pain and configure those Teams first — not to attempt all twelve at once.

  • Identify which of the twelve modules addresses your lab's most urgent gap today.
  • Review that module's FDS chapter in Part II as a build reference for your own configuration.
  • Use Appendix B's blank FDS template to scope any additional module not yet detailed here.
  • Treat the template catalogs in Part II and Appendix C as a living starting point — expect to add templates as real use cases surface.
Appendix

Reference Material

Consolidated, at-a-glance reference tables pulling together the renaming conventions and template catalogs detailed throughout Part II, a blank FDS template for scoping any future module, and an index of every solution template library from Part IV.

Appendix A

Master Object-Renaming Glossary

Every module's Experiment and Resource rename, in one table, for quick cross-reference.

ModuleResource Renamed AsExperiment Renamed As
DashboardSaved View/Widget Configuration; Role-Based Default LayoutAnnouncement/Notice
LIMSSample/Specimen; Specification/Limits SetTest Order/Result Record
LISPatient Specimen; Patient Record; Reference Range/Clinical Limits SetClinical Test Order/Result Record; Physician Order
LESExecutable Method/Method VersionMethod Execution Run; In-Process Deviation
ELNProtocol/Reagent ReferenceNotebook Entry
LogbooksLogbookLog Entry
Training TrackingCourse/CurriculumTraining Completion Record
Document ManagementControlled DocumentDocument Revision/Approval Cycle
Quality ManagementQuality Record TypeNonconformance/Deviation/CAPA Record
Instrument & Asset ManagementInstrument/AssetCalibration/Maintenance Event
Inventory ManagementInventory Item/LotInventory Transaction
Lab PortalClient Account/Portal WidgetPortal Request
Appendix B

FDS Template (Blank)

The reusable eleven-part structure used for every module chapter in Part II — for scoping any future module added to this profile.

#SectionWhat It Covers
1Module Overview & PositioningWhat the module does, how it differs from adjacent modules, and any related dedicated LabLynx product it complements or upgrades to
2Team ConfigurationTeam name, permission model, status workflow
3Object Renaming MapTable of native LabLynx One objects and their module-specific renames
4Native LabLynx One Capabilities LeveragedWhich built-in LabLynx One features carry the module's core function
5Functional Gaps IdentifiedWhat native LabLynx One cannot reasonably deliver for this module
6Plugin App SpecificationWhether a plugin is warranted, its purpose, and its proposed UI/UX
7Experiment & Resource Template CatalogStarter set of templates: name, type, category, purpose, key metadata, workflow states, linked modules
8Roles & PermissionsRole-by-role permission matrix for the Team
9Compliance & Standards TouchpointsRelevant regulatory/accreditation frameworks
10Integration Points with Other ModulesWhat this module sends to, and receives from, the other eleven
11Success Metrics / KPIsHow the module's effectiveness is measured
Appendix C

Master Template Catalog

Every Experiment and Resource template proposed across all twelve modules, consolidated into one reference list. This is explicitly a starting catalog — expect dozens more templates to be added per Team as real use cases surface during configuration and rollout.

ModuleTemplate Count (This Profile)Representative Templates
Dashboard3Lab-Wide Announcement, Personal Widget Configuration, Role-Based Default Layout
LIMS12Standard Sample Accession, General Chemistry Test Order, Specification/Limits Set, Chain-of-Custody Transfer Log, COA
LIS12Standard Patient Specimen Accession, Physician Order, Clinical Chemistry Test Order, Reference Range/Clinical Limits Set, Critical Value Callback Record
LES8Executable Method (Chemistry/Microbiology), Method Execution Run, In-Process Control Check Definition, In-Process Deviation, Method Authoring Draft
ELN7General Notebook Entry, Assay Protocol, Synthesis Protocol, Peer Review/Countersignature Entry
Logbooks6Equipment Usage Log Entry, Cleaning Log Entry, Temperature/Environmental Log Entry, Master Logbook Registry
Training Tracking7Method-Specific Qualification, SOP-Specific Training, Training Completion Record, Competency Re-Assessment
Document Management7SOP, Policy Document, Blank Form Template, Document Revision/Approval Cycle
Quality Management7OOS Investigation, Equipment Deviation, Client Complaint, CAPA Action Plan
Instrument & Asset Management7Analytical Instrument Registration, Calibration Event, IQ/OQ/PQ Qualification Record
Inventory Management7Reagent Lot, Certified Reference Standard, Receiving Transaction, Consumption Transaction
Lab Portal6Client Account Profile, Sample Submission Request, Client Complaint, Portal Dashboard Widget Config

Total starter templates across LabLynx One: 89. Full field-level definitions for each template are documented in the corresponding module's FDS chapter in Part II.

Appendix D

Solution Template Library Index

All thirteen solution template libraries from Part IV, consolidated into one at-a-glance index of activated modules and recommended add-ons — consistent with how Appendix C consolidates Part II without duplicating it.

Solution TemplateModules ActivatedAdd-ons Recommended
Academic/ResearchDashboard, ELN, Logbooks, Inventory Mgmt, Document MgmtLabDrive
Agriculture TestingDashboard, LIMS, Quality Management, Instrument & Asset Mgmt, Inventory Mgmt, Document MgmtLabGRC
BiobankingDashboard, Inventory Mgmt, LIMS, Quality Management, Document MgmtLabVia
Clinical/Diagnostic TestingDashboard, LIS, Quality Management, Training Tracking, Instrument & Asset Mgmt, Inventory MgmtLabGRC, LabCourses
CRO/CDMODashboard, LIMS, LES, Lab Portal, Quality Management, Document MgmtLabCRM, LabDrive
Environmental TestingDashboard, LIMS, Quality Management, Instrument & Asset Mgmt, Inventory Mgmt, Document MgmtLabGRC, LabVia
Food & Beverage Safety TestingDashboard, LIMS, Quality Management, Inventory Mgmt, Document MgmtLabGRC
Forensic Case & Evidence ManagementDashboard, LIMS, Logbooks, Quality Management, Document Mgmt, Training TrackingLabDrive, LabGRC
GMP Manufacturing QCDashboard, LES, LIMS, Quality Management, Instrument & Asset Mgmt, Inventory Mgmt, Training TrackingLabGRC, LabCourses
Manufacturing QCDashboard, LIMS, Instrument & Asset Mgmt, Quality Management, Document MgmtLabGRC, LabDrive
Pharmaceutical & Biotech R&DDashboard, ELN, LES, Document Mgmt, Inventory MgmtLabDrive
Point-of-Care TestingDashboard, LIS, Training Tracking, Instrument & Asset MgmtLabVia
Used-Oil/Asset HealthDashboard, LIMS, Instrument & Asset Mgmt, Inventory Mgmt, Quality ManagementLabVia

Every module referenced here is documented in full in Part II; every add-on is documented in full in Part III. This index exists purely for fast cross-reference when scoping a new solution or comparing two verticals' footprints.