# Schedule Mgmt. (Advanced) (cf.cplace.projectPlanning.app.advanced.advancedScheduleManagement)

## Overview

Enables schedule management for complex use cases, including collaboration features such as subscriptions and cross-schedule links. This app extends the basic schedule management capabilities with advanced features for multi-schedule collaboration.

**Icon:** `cf cf-gantt-square-o`

## Dependencies

Installing this app automatically installs the following dependencies:

| App | Qualified Name | Description |
|-----|----------------|-------------|
| cplace Basis | `cf.cplace.platform` | Base platform (always installed) |
| Schedule Mgmt. (Basic) | `cf.cplace.projectPlanning.app.basic.basicScheduleManagement` | Provides the core Schedule, Task, and Milestone types |
| New Gantt | `cf.cplace.projectPlanning.app.gantt2.gantt2` | Provides the "New Gantt" widget for visualization |
| Load Multiple Schedules | `cf.cplace.projectPlanning.app.configureRootNodes.configureGantt2Roots` | Enables loading multiple schedules into the New Gantt widget |

## Types Provided

The types are provided by the dependency **Schedule Mgmt. (Basic)** (`cf.cplace.projectPlanning.app.basic.basicScheduleManagement`), but the Advanced app adds the `allowSubscription` attribute to enable cross-schedule collaboration.

### cf.schedule (Schedule)

The root planning container that holds tasks and milestones.

| Attribute | Internal Name | Type | Required | Description |
|-----------|---------------|------|----------|-------------|
| Start | `startDate` | Date | No | The schedule starts in the morning of the specified day |
| Finish | `endDate` | Date | No | The schedule finishes in the evening of the specified day |
| Duration | `duration` | Number | Yes | Total duration of the schedule |
| Duration Unit | `durationUnit` | Enumeration | Yes | Unit for duration (days, weeks, etc.) |
| % Completed | `percentComplete` | Number | Yes | Progress percentage (0-100) |
| Calendar Week Start | `startDateCalendarWeek` | Text | No | Calendar week of start date |
| Calendar Week Finish | `endDateCalendarWeek` | Text | No | Calendar week of finish date |
| Calendar ID | `calendarId` | Text | Yes | Reference to working calendar |
| Gantt Version | `cf.cplace.gantt.ganttVersion` | Text | No | If "2.0", uses New Gantt widget |
| Task Class | `activityClass` | Reference | No | Default visual styling for tasks |
| Allow Subscribing | `allowSubscription` | Boolean | Yes | **Advanced feature:** Enable cross-schedule subscriptions |
| Last Calculation | `lastCalculation` | Number | No | Timestamp of last schedule recalculation |

### cf.activity (Task)

Work items with duration that can be nested hierarchically within a schedule.

| Attribute | Internal Name | Type | Required | Description |
|-----------|---------------|------|----------|-------------|
| Parent object | `parent` | Reference | Yes | Parent task or schedule |
| Schedule | `containingSchedule` | Reference | No | The schedule this task belongs to |
| Start | `startDate` | Date | No | Task starts in the morning of this day |
| Finish | `endDate` | Date | No | Task finishes in the evening of this day |
| Duration | `duration` | Number | Yes | Task duration |
| Duration Unit | `durationUnit` | Enumeration | Yes | Unit for duration |
| % Completed | `percentComplete` | Number | Yes | Progress percentage |
| Automatically scheduled | `automaticScheduling` | Boolean | No | Auto-reschedule when predecessors change |
| Calendar Week Start | `startDateCalendarWeek` | Text | No | Calendar week of start date |
| Calendar Week Finish | `endDateCalendarWeek` | Text | No | Calendar week of finish date |
| Calendar ID | `calendarId` | Text | Yes | Working calendar reference |
| Task Class | `activityClass` | Reference | No | Visual styling reference |

### cf.milestone (Milestone)

Point-in-time events marking significant dates in the schedule.

| Attribute | Internal Name | Type | Required | Description |
|-----------|---------------|------|----------|-------------|
| Parent object | `parent` | Reference | Yes | Parent task or schedule |
| Schedule | `containingSchedule` | Reference | No | The schedule this milestone belongs to |
| Date | `date` | Date | No | The milestone date |
| % Completed | `percentComplete` | Number | Yes | Completion status (0 or 100) |
| Automatically scheduled | `automaticScheduling` | Boolean | No | Auto-reschedule when predecessors change |
| Calendar Week Date | `dateCalendarWeek` | Text | No | Calendar week of the date |
| Calendar ID | `calendarId` | Text | Yes | Working calendar reference |
| Task Class | `activityClass` | Reference | No | Visual styling reference |

## Widgets Provided

The **Advanced Schedule Management** app itself does not provide widgets directly, but brings in powerful widgets through its dependencies:

### From New Gantt (`cf.cplace.projectPlanning.app.gantt2.gantt2`)

| Widget | Kind | Description |
|--------|------|-------------|
| New Gantt | `cf.projektplanung.gantt` | Interactive Gantt chart for visualization and editing of planning elements. Built on Bryntum Gantt framework with drag-and-drop scheduling, dependency management, and hierarchical task structures. |

### Platform Widgets (Always Available)

Standard table, attribute, and chart widgets from `cf.cplace.platform` can be used to display schedule data.

## Advanced Features

### Subscriptions (Cross-Schedule Links)

The key differentiator of the Advanced app is the **subscription** capability:

- **What it does:** Allows planning elements (tasks, milestones) in one schedule to "subscribe" to elements in another schedule
- **Use case:** Cross-project dependencies, portfolio-level milestone tracking
- **Configuration:** Enable via `allowSubscription` attribute on the Schedule

### Multi-Schedule Loading

Through the `configureGantt2Roots` dependency:
- Load and visualize multiple schedules simultaneously in the New Gantt widget
- Useful for program-level views and cross-project analysis

## Usage Notes

### When to Use This App

- **Complex project portfolios** with cross-project dependencies
- **Program management** requiring visibility across multiple schedules
- **Collaborative planning** where different teams need to reference each other's milestones
- **Enterprise scheduling** with subscription-based dependency tracking

### When Basic Is Sufficient

Use **Schedule Mgmt. (Basic)** instead if you only need:
- Single-schedule project planning
- Standard Gantt visualization
- No cross-schedule dependencies

### Related Apps to Consider

| App | Purpose |
|-----|---------|
| Project Planning (Basic) | Adds the original Gantt widget and structured table for schedules |
| Project Planning (Extended) | Adds the Subscriptions widget for viewing cross-schedule references |
| Task Classes | Visual categorization of tasks/milestones with colors and shapes |
| Project Structure | Hierarchical organization of projects and schedules |
| Building Blocks | Reusable schedule templates |

## Type Hierarchy

```
Schedule (cf.schedule)
├── Task (cf.activity) [can nest]
│   ├── Task (cf.activity)
│   ├── Milestone (cf.milestone)
│   └── ...
└── Milestone (cf.milestone)
```

Tasks can be nested to create work breakdown structures. Both tasks and milestones reference their containing schedule via `containingSchedule`.

## Investigation Details

- **Investigation Date:** 2026-02-02
- **Workspace ID:** syar11emvu1nb0iqfh9vmw8sm
- **Workspace Name:** [App Investigation] cf.cplace.projectPlanning.app.advanced.advancedScheduleManagement
