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 completedblocks
: Source item prevents target item from startingrelated_to
: Items are related but not strictly blockingprerequisite
: Target item must be done before source itemsuccessor
: 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
- Navigate to an item in your SOW
- Click on the "Dependencies" tab or section
- Click "Add Dependency"
- Choose dependency type:
- Internal: Select another item from your project
- External: Enter external system details
- Configure the dependency:
- Dependency relationship type
- Risk level
- SLA and escalation dates
- Notes
- 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
Endpoint | Method | Description |
---|---|---|
/api/dependencies | POST | Create a new dependency |
/api/dependencies/{dependencyId} | GET | Get dependency details |
/api/dependencies/{dependencyId} | PUT | Update a dependency |
/api/dependencies/{dependencyId} | DELETE | Delete a dependency |
/api/dependencies?itemId={itemId} | GET | Get dependencies for an item |
/api/dependencies?sowId={sowId} | GET | Get all dependencies for a SOW |
/api/dependencies?sowId={sowId}&type=critical | GET | Get critical dependencies |
/api/dependencies?sowId={sowId}&type=overdue | GET | Get 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.