Dependencies

Dependencies track relationships between items and external systems that must be resolved for project completion. The platform supports both internal dependencies (between items) and external dependencies (third-party systems, vendors).

Overview

Dependencies help you:

  • Track Blocking Relationships: Identify what items depend on others or external systems
  • Manage Risk: Categorize dependencies by risk level and set SLA dates
  • Coordinate Externally: Track vendor dependencies and escalation workflows
  • Prevent Circular Dependencies: Ensure logical project flow
  • Monitor Progress: Visualize how dependencies impact project timelines

Dependency Types

Internal Dependencies

Relationships between items within your project:

  • Source Item: The item that has the dependency
  • Target Item: The item that must be completed first
  • Relationship Types:
    • depends_on: Source item needs target item to be completed
    • blocks: Source item prevents target item from starting
    • related_to: Items are related but not strictly blocking
    • prerequisite: Target item must be done before source item
    • successor: Source item comes after target item

External Dependencies

Relationships with systems, vendors, or teams outside your project:

  • Source Item: The item that needs external input
  • External Target: Name of the external system/service/vendor
  • External Owner: Contact person responsible
  • Additional Fields: Contact email, vendor name, SLA dates

The Dependency Model

  • Name
    id
    Type
    string
    Description

    Unique identifier for the dependency.

  • Name
    sourceItemId
    Type
    string
    Description

    ID of the item that has the dependency.

  • Name
    targetItemId
    Type
    string
    Description

    ID of the target item (null for external dependencies).

  • Name
    dependencyType
    Type
    string
    Description

    Type: "depends_on", "blocks", "related_to", "prerequisite", "successor".

  • Name
    riskLevel
    Type
    string
    Description

    Risk level: "low", "medium", "high", "critical".

  • Name
    status
    Type
    string
    Description

    Status: "active", "resolved", "cancelled", "blocked".

  • Name
    externalTarget
    Type
    string
    Description

    Name of external system/vendor (for external dependencies).

  • Name
    externalOwner
    Type
    string
    Description

    Contact person for external dependency.

  • Name
    contactEmail
    Type
    string
    Description

    Email for external contact.

  • Name
    vendor
    Type
    string
    Description

    Vendor or organization name.

  • Name
    slaDate
    Type
    date
    Description

    Service level agreement date.

  • Name
    escalationDate
    Type
    date
    Description

    Date to escalate if not resolved.

  • Name
    notes
    Type
    string
    Description

    Additional notes about the dependency.

  • Name
    createdAt
    Type
    timestamp
    Description

    When the dependency was created.

  • Name
    createdByUserId
    Type
    string
    Description

    User who created the dependency.

Creating Dependencies

Via the UI

  1. Navigate to an item in your SOW
  2. Click on the "Dependencies" tab or section
  3. Click "Add Dependency"
  4. Choose dependency type:
    • Internal: Select another item from your project
    • External: Enter external system details
  5. Configure the dependency:
    • Dependency relationship type
    • Risk level
    • SLA and escalation dates
    • Notes
  6. Click "Create Dependency"

Via the API

// Create an internal dependency
const internalDep = await apiClient.dependencies.create({
  sourceItemId: "item_123",
  targetItemId: "item_456", 
  dependencyType: "depends_on",
  riskLevel: "medium",
  slaDate: "2024-12-31",
  notes: "Requires authentication system to be completed first"
});

// Create an external dependency
const externalDep = await apiClient.dependencies.create({
  sourceItemId: "item_123",
  isExternal: true,
  externalTarget: "Stripe Payment Gateway",
  externalOwner: "John Smith",
  contactEmail: "john@stripe.com", 
  dependencyType: "depends_on",
  riskLevel: "high",
  vendor: "Stripe Inc",
  slaDate: "2024-11-15",
  escalationDate: "2024-11-10",
  notes: "Need API access and webhooks configured"
});

Risk Management

Risk Levels

  • Low: Minor impact if delayed, easy workarounds available
  • Medium: Moderate impact, some workarounds possible
  • High: Significant impact on timeline or deliverables
  • Critical: Project-blocking, no viable workarounds

SLA and Escalation

  • SLA Date: When the dependency should be resolved
  • Escalation Date: When to escalate if not resolved (typically before SLA date)
  • Automatic Alerts: System can notify when dependencies are overdue or approaching escalation

Dependency Views

Item Dependencies

View all dependencies for a specific item:

  • Outgoing: What this item depends on
  • Incoming: What depends on this item

SOW Dependencies

Project-wide dependency views:

  • All Dependencies: Complete list of project dependencies
  • Critical Dependencies: High and critical risk dependencies
  • Overdue Dependencies: Dependencies past their SLA date
  • External Dependencies: All vendor/third-party dependencies

Circular Dependency Prevention

The system automatically prevents circular dependencies:

❌ Invalid: A → B → C → A (circular)
✅ Valid: A → B → C (linear)
✅ Valid: A → B, A → C (branching)

If you try to create a dependency that would cause a circular relationship, the system will reject it with an error message.

Best Practices

Internal Dependencies

  • Be Specific: Clearly define what aspect of the target item is needed
  • Minimize Dependencies: Only create dependencies that truly block progress
  • Document Reasoning: Use notes to explain why the dependency exists
  • Regular Reviews: Periodically review if dependencies are still needed

External Dependencies

  • Early Identification: Identify external dependencies as early as possible
  • Clear Ownership: Always specify an external contact person
  • Realistic SLAs: Set achievable dates based on vendor capabilities
  • Escalation Plans: Define clear escalation paths and dates
  • Regular Communication: Maintain ongoing contact with external owners

Risk Management

  • Conservative Risk Assessment: When in doubt, assign higher risk levels
  • Proactive Escalation: Set escalation dates well before SLA dates
  • Contingency Planning: Have backup plans for critical dependencies
  • Status Updates: Keep dependency status current as situations change

API Reference

EndpointMethodDescription
/api/dependenciesPOSTCreate a new dependency
/api/dependencies/{dependencyId}GETGet dependency details
/api/dependencies/{dependencyId}PUTUpdate a dependency
/api/dependencies/{dependencyId}DELETEDelete a dependency
/api/dependencies?itemId={itemId}GETGet dependencies for an item
/api/dependencies?sowId={sowId}GETGet all dependencies for a SOW
/api/dependencies?sowId={sowId}&type=criticalGETGet critical dependencies
/api/dependencies?sowId={sowId}&type=overdueGETGet overdue dependencies

Request Examples

// Get all dependencies for an item
const deps = await apiClient.get('/api/dependencies?itemId=item_123');

// Get critical dependencies for a SOW  
const critical = await apiClient.get('/api/dependencies?sowId=sow_456&type=critical');

// Update dependency status
await apiClient.put('/api/dependencies/dep_789', {
  status: 'resolved',
  notes: 'Vendor completed API integration'
});

For complete API details, refer to the API Reference.

Was this page helpful?