### getStart() Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/TimephasedDataType.html Gets the value of the start property. ```APIDOC ## getStart() ### Description Gets the value of the start property. ### Method `public LocalDateTime getStart()` ### Returns `LocalDateTime` - The value of the start property. ``` -------------------------------- ### getStart Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Tasks.Task.Baseline.html Gets the value of the start property for the project baseline. ```APIDOC ## getStart ### Description Gets the value of the start property. ### Method GET ### Endpoint N/A (Java Method) ### Parameters None ### Response #### Success Response - **start** (LocalDateTime) - The start date/time of the baseline. ### Response Example ```json { "start": "2023-10-27T10:00:00" } ``` ``` -------------------------------- ### getStart Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Resources.Resource.html Gets the value of the start property. Returns a LocalDateTime. ```APIDOC ## getStart ### Description Gets the value of the start property. ### Method GET ### Endpoint /resources/{resourceId}/start ### Parameters #### Path Parameters - **resourceId** (string) - Required - The ID of the resource. ### Response #### Success Response (200) - **start** (LocalDateTime) - The start time of the resource. ``` -------------------------------- ### Project Start Date Management Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/planner/schema/Project.html Provides methods to get and set the project start date. ```APIDOC ## getProjectStart ### Description Gets the value of the projectStart property. ### Method GET ### Endpoint /project/{id}/start-date ### Response #### Success Response (200) - **projectStart** (String) - The project start date. ### Response Example ```json { "projectStart": "2023-10-27" } ``` ## setProjectStart ### Description Sets the value of the projectStart property. ### Method PUT ### Endpoint /project/{id}/start-date ### Parameters #### Request Body - **projectStart** (String) - Required - The project start date to set. ### Request Example ```json { "projectStart": "2024-01-01" } ``` ``` -------------------------------- ### Java Example for Microsoft Authentication Source: https://github.com/joniles/mpxj/blob/master/docs/howto-read-pwa/index.html This sample code demonstrates how to retrieve an access token for Project Online authentication using Microsoft Entra. It is intended as a starting point for production use, where a dedicated MSAL library is recommended. ```java package org.mpxj.howto.use.microsoft; import com.microsoft.aad.msal4j.IAuthenticationResult; import com.microsoft.aad.msal4j.PublicClientApplication; import com.microsoft.aad.msal4j.IAccount; import java.util.Set; import java.util.HashSet; import java.util.Collections; import java.util.concurrent.ExecutionException; public class DesktopMicrosoftAuthenticator { // Replace with your actual values private static final String CLIENT_ID = "YOUR_APPLICATION_CLIENT_ID"; private static final String AUTHORITY = "https://login.microsoftonline.com/YOUR_TENANT_ID/"; private static final String SCOPES = "https://your-sharepoint-url.com/.default"; public static void main(String[] args) { try { // PublicClientApplication is used for desktop applications PublicClientApplication pca = PublicClientApplication.builder(CLIENT_ID) .authority(AUTHORITY) .build(); Set accounts = pca.getAccounts().get(); // If there are no accounts, acquire token interactively IAuthenticationResult result; if (accounts.isEmpty()) { // Acquire token interactively, prompting the user for credentials result = pca.acquireTokenInteractive(Collections.singleton(SCOPES)) .withPrompt("select_account") .execute() .get(); } else { // If accounts exist, try to acquire token silently result = pca.acquireTokenSilent(Collections.singleton(SCOPES), accounts.iterator().next()) .execute() .get(); } System.out.println("Access Token: " + result.accessToken()); System.out.println("Expires On: " + result.expiresOn()); } catch (ExecutionException | InterruptedException e) { System.err.println("Error acquiring token: " + e.getMessage()); e.printStackTrace(); } } } ``` -------------------------------- ### Get Start Hour Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ShiftPeriodType.html Gets the value of the startHour property. ```APIDOC ## getStartHour ### Description Gets the value of the startHour property. ### Method public Integer getStartHour() ### Parameters None ### Request Example None ### Response #### Success Response (200) - **return** (Integer) - The value of the startHour property. ``` -------------------------------- ### Create and Schedule a Sample Project Source: https://github.com/joniles/mpxj/blob/master/mkdocs/docs/howto-use-cpm.md Demonstrates creating a project file, adding a default calendar, defining WBS entries, creating activities with dependencies and lag, and then scheduling the project. ```java ProjectFile file = new ProjectFile(); ProjectCalendar calendar = file.addDefaultBaseCalendar(); file.setDefaultCalendar(calendar); Task summary1 = file.addTask(); summary1.setName("WBS 1"); Task task1 = createActivity(summary1, ActivityType.TASK_DEPENDENT, "Activity 1", Duration.getInstance(4, TimeUnit.DAYS)); Task task2 = createActivity(summary1, ActivityType.TASK_DEPENDENT,"Activity 2", Duration.getInstance(2, TimeUnit.DAYS)); Task task3 = createActivity(summary1, ActivityType.TASK_DEPENDENT,"Activity 3", Duration.getInstance(5, TimeUnit.DAYS)); task3.addPredecessor(new Relation.Builder().predecessorTask(task1)); task3.addPredecessor(new Relation.Builder().predecessorTask(task2)); Task summary2 = file.addTask(); summary2.setName("WBS 2"); Task task4 = createActivity(summary2, ActivityType.TASK_DEPENDENT, "Activity 4", Duration.getInstance(2, TimeUnit.DAYS)); Task task5 = createActivity(summary2, ActivityType.TASK_DEPENDENT,"Activity 5", Duration.getInstance(2, TimeUnit.DAYS)); Task task6 = createActivity(summary2, ActivityType.TASK_DEPENDENT,"Activity 6", Duration.getInstance(2, TimeUnit.DAYS)); task6.addPredecessor(new Relation.Builder().predecessorTask(task4)); task6.addPredecessor(new Relation.Builder().predecessorTask(task5).lag(Duration.getInstance(1, TimeUnit.DAYS))); Task milestone1 = createActivity(file, ActivityType.FINISH_MILESTONE,"Milestone 1", Duration.getInstance(0, TimeUnit.DAYS)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task3)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task6)); ``` ```java new PrimaveraScheduler().schedule(file, LocalDateTime.of(2025, 4, 11, 8, 0)); ``` ```java new UniversalProjectWriter(FileFormat.PMXML).write(file, "scheduled.xml"); ``` -------------------------------- ### Project Setup with Tasks and Dependencies Source: https://github.com/joniles/mpxj/blob/master/docs/howto-use-cpm/index.html This code demonstrates creating a new project file, adding a default calendar, creating summary tasks, individual tasks with durations, and establishing predecessor relationships, including one with lag. ```java ProjectFile file = new ProjectFile(); ProjectCalendar calendar = file.addDefaultBaseCalendar(); file.setDefaultCalendar(calendar); Task summary1 = file.addTask(); summary1.setName("Summary 1"); Task task1 = createTask(summary1, "Task 1", Duration.getInstance(4, TimeUnit.DAYS)); Task task2 = createTask(summary1, "Task 2", Duration.getInstance(2, TimeUnit.DAYS)); Task task3 = createTask(summary1, "Task 3", Duration.getInstance(5, TimeUnit.DAYS)); task3.addPredecessor(new Relation.Builder().predecessorTask(task1)); task3.addPredecessor(new Relation.Builder().predecessorTask(task2)); Task summary2 = file.addTask(); summary2.setName("Summary 2"); Task task4 = createTask(summary2, "Task 4", Duration.getInstance(2, TimeUnit.DAYS)); Task task5 = createTask(summary2, "Task 5", Duration.getInstance(2, TimeUnit.DAYS)); Task task6 = createTask(summary2, "Task 6", Duration.getInstance(2, TimeUnit.DAYS)); task6.addPredecessor(new Relation.Builder().predecessorTask(task4)); task6.addPredecessor(new Relation.Builder().predecessorTask(task5) .lag(Duration.getInstance(1, TimeUnit.DAYS))); Task milestone1 = createTask(file, "Milestone 1", Duration.getInstance(0, TimeUnit.DAYS)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task3)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task6)); ``` -------------------------------- ### Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/EPSType.html Provides methods to get and set the start date. ```APIDOC ## getStartDate ### Description Gets the value of the startDate property. ### Method GET ### Endpoint N/A (Java method) ### Parameters None ### Response #### Success Response - **startDate** (LocalDateTime) - The value of the startDate property. ## setStartDate ### Description Sets the value of the startDate property. ### Method SET ### Endpoint N/A (Java method) ### Parameters - **value** (LocalDateTime) - The value to set for the startDate property. ``` -------------------------------- ### PrimaveraConvert Command Line Example Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/sample/PrimaveraConvert.html Illustrates how to use the PrimaveraConvert utility from the command line. This example assumes the use of the Microsoft JDBC driver to access a SQL Server database and export a project to an MSPDI file. ```bash PrimaveraConvert "com.microsoft.sqlserver.jdbc.SQLServerDriver" "jdbc:sqlserver://localhost;database=PMDB;user=privuser;password=privuser" 1 "c:\\temp\\project1.xml" ``` -------------------------------- ### GUID Properties Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/DocumentType.html Provides methods to get and set the GUID property. ```APIDOC ## getGUID ### Description Gets the value of the guid property. ### Method public String getGUID() ### Returns possible object is String ``` ```APIDOC ## setGUID ### Description Sets the value of the guid property. ### Method public void setGUID(String value) ### Parameters #### Path Parameters - **value** (String) - allowed object is String ``` -------------------------------- ### Start Property Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/ganttproject/schema/Task.html Provides methods to get and set the start property of a Task. The start property is represented as a LocalDateTime. ```APIDOC ## getStart ### Description Gets the value of the start property. ### Method public LocalDateTime getStart() ### Returns - LocalDateTime: The current value of the start property. ``` ```APIDOC ## setStart ### Description Sets the value of the start property. ### Method public void setStart(LocalDateTime value) ### Parameters #### Path Parameters - value (LocalDateTime) - Description: The new value for the start property. ``` -------------------------------- ### Create a Project with Activities and Dependencies Source: https://github.com/joniles/mpxj/blob/master/docs/howto-use-cpm/index.html This snippet demonstrates creating a new project file, adding a default calendar, and then creating several activities organized into WBS entries. It also sets up predecessor relationships between activities, including one with a lag time. ```java ProjectFile file = new ProjectFile(); ProjectCalendar calendar = file.addDefaultBaseCalendar(); file.setDefaultCalendar(calendar); Task summary1 = file.addTask(); summary1.setName("WBS 1"); Task task1 = createActivity(summary1, ActivityType.TASK_DEPENDENT, "Activity 1", Duration.getInstance(4, TimeUnit.DAYS)); Task task2 = createActivity(summary1, ActivityType.TASK_DEPENDENT,"Activity 2", Duration.getInstance(2, TimeUnit.DAYS)); Task task3 = createActivity(summary1, ActivityType.TASK_DEPENDENT,"Activity 3", Duration.getInstance(5, TimeUnit.DAYS)); task3.addPredecessor(new Relation.Builder().predecessorTask(task1)); task3.addPredecessor(new Relation.Builder().predecessorTask(task2)); Task summary2 = file.addTask(); summary2.setName("WBS 2"); Task task4 = createActivity(summary2, ActivityType.TASK_DEPENDENT, "Activity 4", Duration.getInstance(2, TimeUnit.DAYS)); Task task5 = createActivity(summary2, ActivityType.TASK_DEPENDENT,"Activity 5", Duration.getInstance(2, TimeUnit.DAYS)); Task task6 = createActivity(summary2, ActivityType.TASK_DEPENDENT,"Activity 6", Duration.getInstance(2, TimeUnit.DAYS)); task6.addPredecessor(new Relation.Builder().predecessorTask(task4)); task6.addPredecessor(new Relation.Builder().predecessorTask(task5).lag(Duration.getInstance(1, TimeUnit.DAYS))); Task milestone1 = createActivity(file, ActivityType.FINISH_MILESTONE,"Milestone 1", Duration.getInstance(0, TimeUnit.DAYS)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task3)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task6)); ``` -------------------------------- ### Building a Project with Resource-Dependent Activities Source: https://github.com/joniles/mpxj/blob/master/mkdocs/docs/howto-use-cpm.md Construct a project file, define resources with their calendars, and create resource-dependent tasks. This example demonstrates setting up a project structure for resource allocation and scheduling. ```java ProjectFile file = new ProjectFile(); ProjectCalendar calendar = file.addDefaultBaseCalendar(); file.setDefaultCalendar(calendar); Resource resource1 = file.addResource(); resource1.setName("Resource 1"); ProjectCalendar calendar1 = file.addDefaultDerivedCalendar(); resource1.setCalendar(calendar1); calendar1.setParent(calendar); calendar1.setName("Resource 1"); calendar1.addCalendarException(LocalDate.of(2025, 4, 14)); Resource resource2 = file.addResource(); resource2.setName("Resource 2"); ProjectCalendar calendar2 = file.addDefaultDerivedCalendar(); resource2.setCalendar(calendar2); calendar2.setParent(calendar); calendar2.setName("Resource 2"); Task summary1 = file.addTask(); summary1.setName("WBS 1"); Task task1 = summary1.addTask(); task1.setActivityType(ActivityType.RESOURCE_DEPENDENT); task1.setName("Activity 1"); createResourceAssignment(task1, resource1, Duration.getInstance(32, TimeUnit.HOURS)); Task task2 = summary1.addTask(); task2.setActivityType(ActivityType.RESOURCE_DEPENDENT); task2.setName("Activity 2"); createResourceAssignment(task2, resource2, Duration.getInstance(16, TimeUnit.HOURS)); Task task3 = createActivity(summary1, ActivityType.TASK_DEPENDENT,"Activity 3", Duration.getInstance(5, TimeUnit.DAYS)); task3.addPredecessor(new Relation.Builder().predecessorTask(task1)); task3.addPredecessor(new Relation.Builder().predecessorTask(task2)); Task summary2 = file.addTask(); summary2.setName("WBS 2"); Task task4 = createActivity(summary2, ActivityType.TASK_DEPENDENT,"Activity 4", Duration.getInstance(2, TimeUnit.DAYS)); Task task5 = createActivity(summary2, ActivityType.TASK_DEPENDENT,"Activity 5", Duration.getInstance(2, TimeUnit.DAYS)); Task task6 = createActivity(summary2, ActivityType.TASK_DEPENDENT,"Activity 6", Duration.getInstance(2, TimeUnit.DAYS)); task6.addPredecessor(new Relation.Builder().predecessorTask(task4)); task6.addPredecessor(new Relation.Builder().predecessorTask(task5).lag(Duration.getInstance(1, TimeUnit.DAYS))); Task milestone1 = createActivity(file, ActivityType.FINISH_MILESTONE,"Milestone 1", Duration.getInstance(0, TimeUnit.DAYS)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task3)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task6)); new PrimaveraScheduler().schedule(file, LocalDateTime.of(2025, 4, 11, 8, 0)); ``` -------------------------------- ### Successor Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/RelationshipType.html Methods to get and set the successor start date. ```APIDOC ## getSuccessorStartDate ### Description Gets the value of the successorStartDate property. ### Method GET ### Endpoint /successorStartDate ### Returns - **LocalDateTime** - The successor start date. ``` ```APIDOC ## setSuccessorStartDate ### Description Sets the value of the successorStartDate property. ### Method POST ### Endpoint /successorStartDate ### Parameters #### Request Body - **value** (LocalDateTime) - Required - The successor start date to set. ``` -------------------------------- ### Simple Universal Project Reader Example Source: https://github.com/joniles/mpxj/blob/master/docs/howto-use-universal/index.html Demonstrates the basic usage of UniversalProjectReader to read a project file without specific configuration. ```C# namespace MpxjSamples.HowToUse.Universal; using MPXJ.Net; public class SimpleExample { public void Process() { var reader = new UniversalProjectReader(); var project = reader.Read("example.mpp"); } } ``` -------------------------------- ### Start Text Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Tasks.Task.html Get or set the start text for the task. This property is a String. ```APIDOC ## getStartText ### Description Gets the value of the startText property. ### Method GET ### Endpoint N/A (Java method) ### Returns String - The start text of the task. ## setStartText ### Description Sets the value of the startText property. ### Method SET ### Endpoint N/A (Java method) ### Parameters - **value** (String) - The start text to set. ``` -------------------------------- ### GUID Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/EPSType.html Provides methods to get and set the GUID property of an EPSType object. ```APIDOC ## getGUID ### Description Gets the value of the guid property. ### Method GET ### Endpoint /EPSType/GUID ### Response #### Success Response (200) - **GUID** (String) - The value of the guid property. ## setGUID ### Description Sets the value of the guid property. ### Method POST ### Endpoint /EPSType/GUID ### Parameters #### Request Body - **value** (String) - The new value for the guid property. ``` -------------------------------- ### Project Creation and Task Scheduling Source: https://github.com/joniles/mpxj/blob/master/mkdocs/docs/howto-use-cpm.md Demonstrates creating a project file, adding tasks with dependencies and lag, and scheduling them. ```java ProjectFile file = new ProjectFile(); ProjectCalendar calendar = file.addDefaultBaseCalendar(); file.setDefaultCalendar(calendar); Task summary1 = file.addTask(); summary1.setName("Summary 1"); Task task1 = createTask(summary1, "Task 1", Duration.getInstance(4, TimeUnit.DAYS)); Task task2 = createTask(summary1, "Task 2", Duration.getInstance(2, TimeUnit.DAYS)); Task task3 = createTask(summary1, "Task 3", Duration.getInstance(5, TimeUnit.DAYS)); task3.addPredecessor(new Relation.Builder().predecessorTask(task1)); task3.addPredecessor(new Relation.Builder().predecessorTask(task2)); Task summary2 = file.addTask(); summary2.setName("Summary 2"); Task task4 = createTask(summary2, "Task 4", Duration.getInstance(2, TimeUnit.DAYS)); Task task5 = createTask(summary2, "Task 5", Duration.getInstance(2, TimeUnit.DAYS)); Task task6 = createTask(summary2, "Task 6", Duration.getInstance(2, TimeUnit.DAYS)); task6.addPredecessor(new Relation.Builder().predecessorTask(task4)); task6.addPredecessor(new Relation.Builder().predecessorTask(task5) .lag(Duration.getInstance(1, TimeUnit.DAYS))); Task milestone1 = createTask(file, "Milestone 1", Duration.getInstance(0, TimeUnit.DAYS)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task3)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task6)); ``` -------------------------------- ### Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ResourceAssignmentType.html Provides methods to get and set the start date for a resource assignment. ```APIDOC ## getStartDate ### Description Gets the value of the startDate property. ### Method GET ### Endpoint /resourceAssignmentType/startDate ### Parameters None ### Response #### Success Response (200) - **startDate** (LocalDateTime) - The start date of the resource assignment. ## setStartDate ### Description Sets the value of the startDate property. ### Method POST ### Endpoint /resourceAssignmentType/startDate ### Parameters #### Request Body - **value** (LocalDateTime) - The start date to set for the resource assignment. ### Response #### Success Response (200) - **message** (string) - Confirmation of successful update. ``` -------------------------------- ### Create OpcReader and Get Projects Source: https://github.com/joniles/mpxj/blob/master/docs/howto-read-opc/index.html Instantiate the OpcReader with OPC host, username, and password, then retrieve a list of available projects. ```Java import org.mpxj.opc.OpcProject; import org.mpxj.opc.OpcReader; // ... OpcReader reader = new OpcReader("my-opc-host.oraclecloud.com", "my-username", "my-password"); List opcProjects = reader.getProjects(); ``` -------------------------------- ### Simple Universal Project Reader Example Source: https://github.com/joniles/mpxj/blob/master/docs/howto-use-universal/index.html Demonstrates the basic usage of UniversalProjectReader to read a project file without specific configuration. ```Java package org.mpxj.howto.use.universal; import org.mpxj.ProjectFile; import org.mpxj.reader.ProjectReader; import org.mpxj.reader.UniversalProjectReader; public class SimpleExample { public void process() throws Exception { ProjectReader reader = new UniversalProjectReader(); ProjectFile project = reader.read("example.mpp"); } } ``` -------------------------------- ### Start to Start Lag Calculation Type Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ScheduleOptionsType.html Methods for getting and setting the startToStartLagCalculationType property. ```APIDOC ## isStartToStartLagCalculationType ### Description Gets the value of the startToStartLagCalculationType property. ### Method GET ### Endpoint N/A (Java method) ### Parameters None ### Response #### Success Response - **startToStartLagCalculationType** (Boolean) - The current value of the startToStartLagCalculationType property. ### Response Example ```json { "startToStartLagCalculationType": true } ``` ## setStartToStartLagCalculationType ### Description Sets the value of the startToStartLagCalculationType property. ### Method SET ### Endpoint N/A (Java method) ### Parameters #### Request Body - **value** (Boolean) - The new value for the startToStartLagCalculationType property. ### Request Example ```json { "value": false } ``` ### Response #### Success Response Void ``` -------------------------------- ### Manual Start Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Tasks.Task.html Get or set the manual start time for the task. This property is a LocalDateTime. ```APIDOC ## getManualStart ### Description Gets the value of the manualStart property. ### Method GET ### Endpoint N/A (Java method) ### Returns LocalDateTime - The manual start time of the task. ## setManualStart ### Description Sets the value of the manualStart property. ### Method SET ### Endpoint N/A (Java method) ### Parameters - **value** (LocalDateTime) - The manual start time to set. ``` -------------------------------- ### Read Project Data and Query Tasks/Resources Source: https://github.com/joniles/mpxj/blob/master/src.ruby/mpxj/README.md This example demonstrates how to read a project file using MPXJ::Reader.read and then query the number of tasks and resources, as well as iterate through them to display their names, start/finish dates, and durations. ```ruby project = MPXJ::Reader.read("project1.mpp") puts "There are #{project.all_tasks.size} tasks in this project" puts "There are #{project.all_resources.size} resources in this project" puts "The resources are:" project.all_resources.each do |resource| puts resource.name end puts "The tasks are:" project.all_tasks.each do |task| puts "#{task.name}: starts on #{task.start}, finishes on #{task.finish}, it's duration is #{task.duration}" end ``` -------------------------------- ### Actual Start Time Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Tasks.Task.html Methods to get and set the actual start time of a task. ```APIDOC ## getActualStart ### Description Gets the value of the actualStart property. ### Method public LocalDateTime getActualStart() ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) - **actualStart** (LocalDateTime) - The actual start time of the task. #### Response Example None ``` ```APIDOC ## setActualStart ### Description Sets the value of the actualStart property. ### Method public void setActualStart(LocalDateTime value) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) None #### Response Example None ``` -------------------------------- ### Summary Actual Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/EPSType.html Provides methods to get and set the summaryActualStartDate property. ```APIDOC ## getSummaryActualStartDate ### Description Gets the value of the summaryActualStartDate property. ### Method GET ### Endpoint /EPSType/summaryActualStartDate ### Response #### Success Response (200) - **summaryActualStartDate** (LocalDateTime) - The value of the summaryActualStartDate property. ## setSummaryActualStartDate ### Description Sets the value of the summaryActualStartDate property. ### Method POST ### Endpoint /EPSType/summaryActualStartDate ### Parameters #### Request Body - **value** (LocalDateTime) - The new value for summaryActualStartDate. ``` -------------------------------- ### Task Start Time Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Tasks.Task.html Provides methods to get and set the start time of a task. The start time is represented as a LocalDateTime object. ```APIDOC ## setStart ### Description Sets the value of the start property for a task. ### Method void ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) None #### Response Example None ``` -------------------------------- ### getStart Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/ResourceAssignment.html Returns the start of this resource assignment. ```APIDOC ## getStart ### Description Returns the start of this resource assignment. ### Method GET (conceptual) ### Endpoint N/A (SDK method) ### Returns - **LocalDateTime** - The start date and time of the resource assignment. ``` -------------------------------- ### Rolled Up Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/WBSType.html Provides methods to get and set the rolled-up start date for a project. ```APIDOC ## getRolledUpStartDate ### Description Gets the value of the rolledUpStartDate property. ### Method GET ### Endpoint /projects/{projectId}/rolledUpStartDate ### Parameters #### Path Parameters - **projectId** (Integer) - Required - The ID of the project. ### Response #### Success Response (200) - **rolledUpStartDate** (LocalDateTime) - The rolled-up start date. ## setRolledUpStartDate ### Description Sets the value of the rolledUpStartDate property. ### Method PUT ### Endpoint /projects/{projectId}/rolledUpStartDate ### Parameters #### Path Parameters - **projectId** (Integer) - Required - The ID of the project. #### Request Body - **value** (LocalDateTime) - Required - The new rolled-up start date value. ``` -------------------------------- ### setUpdateStart Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/ResourceAssignmentWorkgroupFields.html Sets the start date and time for an update to the resource assignment workgroup. This is useful for tracking when updates were initiated. ```APIDOC ## setUpdateStart ### Description Sets the Update Start Field. ### Method public void setUpdateStart(LocalDateTime val) ### Parameters #### Path Parameters - **val** (LocalDateTime) - Required - date to set ``` -------------------------------- ### Forecast Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/WBSType.html Provides methods to get and set the forecast start date property. ```APIDOC ## getForecastStartDate ### Description Gets the value of the forecastStartDate property. ### Method GET ### Endpoint /WBSType/forecastStartDate ### Response #### Success Response (200) - **forecastStartDate** (LocalDateTime) - The forecast start date. ``` ```APIDOC ## setForecastStartDate ### Description Sets the value of the forecastStartDate property. ### Method POST ### Endpoint /WBSType/forecastStartDate ### Parameters #### Request Body - **value** (LocalDateTime) - The new value for the forecast start date. ``` -------------------------------- ### Instantiate UniversalProjectWriter with File Format Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/writer/UniversalProjectWriter.html Demonstrates how to create an instance of UniversalProjectWriter specifying the desired file format. ```Java new UniversalProjectWriter(ProjectWriterFileFormat.MPX) ``` -------------------------------- ### Planned Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ActivityType.html Provides methods to get and set the planned start date for an activity. ```APIDOC ## getPlannedStartDate ### Description Gets the value of the plannedStartDate property. ### Method GET ### Endpoint N/A (Java method) ### Parameters None ### Response #### Success Response - **Return Value** (LocalDateTime) - The planned start date. ## setPlannedStartDate ### Description Sets the value of the plannedStartDate property. ### Method SET ### Endpoint N/A (Java method) ### Parameters #### Request Body - **value** (LocalDateTime) - The new planned start date value. ``` -------------------------------- ### Dangling Start Target Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ScheduleCheckOptionType.html Allows setting and getting the dangling start target value, which is an integer. ```APIDOC ## setDanglingStartTarget ### Description Sets the value of the danglingStartTarget property. ### Method public void setDanglingStartTarget(Integer value) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) None #### Response Example None ## getDanglingStartTarget ### Description Gets the value of the danglingStartTarget property. ### Method public Integer getDanglingStartTarget() ### Parameters None ### Request Example None ### Response #### Success Response (200) Returns the value of the danglingStartTarget property, which is an Integer. #### Response Example None ``` -------------------------------- ### Create a Task Instance Source: https://github.com/joniles/mpxj/blob/master/docs/howto-use-fields/index.html Initializes a ProjectFile and adds a new task. This is a prerequisite for demonstrating field manipulation. ```Java ProjectFile file = new ProjectFile(); Task task = file.addTask(); ``` -------------------------------- ### Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ProjectResourceSpreadType.html Provides methods to get and set the start date for a project resource spread. ```APIDOC ## getStartDate ### Description Gets the value of the startDate property. ### Method GET ### Endpoint N/A (Java Method) ### Parameters None ### Response #### Success Response - **startDate** (LocalDateTime) - The start date. ``` ```APIDOC ## setStartDate ### Description Sets the value of the startDate property. ### Method SET ### Endpoint N/A (Java Method) ### Parameters - **value** (LocalDateTime) - Required - The new start date. ### Response None ``` -------------------------------- ### getStart() Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/index-all.html Retrieves the start date or time from various range and object types across different schemas (GanttProject, MSPDI, Planner, and core mpxj classes). ```APIDOC ## getStart() ### Description Retrieves the date or time at the start of a range or property. ### Method GET (assumed, as it's a getter method) ### Endpoint N/A (Java method) ### Parameters None ### Response - **start** (type depends on implementation) - The start date, time, or range start value. ``` -------------------------------- ### Assignment Start Variance Management Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Assignments.Assignment.html Provides methods to get and set the start variance for an assignment. ```APIDOC ## getStartVariance ### Description Gets the value of the startVariance property. ### Method GET ### Endpoint /assignments/{assignmentId}/startVariance ### Response #### Success Response (200) - **startVariance** (BigInteger) - The start variance of the assignment. ### getStartVariance ## setStartVariance ### Description Sets the value of the startVariance property. ### Method PUT ### Endpoint /assignments/{assignmentId}/startVariance ### Parameters #### Request Body - **value** (BigInteger) - The new start variance for the assignment. ``` -------------------------------- ### Start Time Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Assignments.Assignment.html Manages the start time for an assignment. Supports getting and setting the value as a LocalDateTime. ```APIDOC ## getStart ### Description Gets the value of the start property. ### Method ```java public LocalDateTime getStart() ``` ### Parameters None ### Request Example None ### Response #### Success Response (200) - **return value** (LocalDateTime) - The value of the start property. #### Response Example None ## setStart ### Description Sets the value of the start property. ### Method ```java public void setStart(LocalDateTime value) ``` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) None #### Response Example None ``` -------------------------------- ### Read Microsoft Planner Projects (Java) Source: https://github.com/joniles/mpxj/blob/master/docs/howto-read-msplanner/index.html Initializes the MsPlannerReader with Dynamics server URL and access token, retrieves a list of projects, and then reads a specific project by its ID. Assumes authentication is already handled. ```Java // The URL for your organisation's Dynamics server instance String dynamicsServerUrl = "https://example.api.crm11.dynamics.com"; // We're assuming you have already authenticated and have an access token String accessToken = "my-access-token-from-oauth"; // Create a reader MsPlannerReader reader = new MsPlannerReader(dynamicsServerUrl, accessToken); // Retrieve the projects available and print their details List projects = reader.getProjects(); for (MsPlannerProject project : projects) { System.out.println("ID: " + project.getProjectId() + " Name: " + project.getProjectName()); } // Get the ID of the first project on the list UUID projectID = projects.get(0).getProjectId(); // Now read the project ProjectFile project = reader.readProject(projectID); ``` -------------------------------- ### Assignment GUID Management Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Assignments.Assignment.html Methods for setting and getting the globally unique identifier (GUID) for an assignment. ```APIDOC ## setGUID ### Description Sets the value of the guid property for an assignment. ### Method public void setGUID(UUID value) ### Parameters #### Path Parameters * None #### Query Parameters * None #### Request Body * None ### Request Example ```java // Example usage (conceptual) assignment.setGUID(UUID.fromString("a1b2c3d4-e5f6-7890-1234-567890abcdef")); ``` ### Response #### Success Response (200) * void #### Response Example * None ``` ```APIDOC ## getGUID ### Description Gets the value of the guid property for an assignment. ### Method public UUID getGUID() ### Parameters #### Path Parameters * None #### Query Parameters * None #### Request Body * None ### Request Example ```java // Example usage (conceptual) UUID guid = assignment.getGUID(); ``` ### Response #### Success Response (200) * **guid** (UUID) - The globally unique identifier of the assignment. #### Response Example ```json { "guid": "a1b2c3d4-e5f6-7890-1234-567890abcdef" } ``` ``` -------------------------------- ### getActualStart Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/ProjectProperties.html Retrieves the actual project start date. The return type is LocalDateTime. ```APIDOC ## getActualStart ### Description Retrieves the actual project start date. ### Method GET ### Endpoint /api/project/properties/actualStart ### Response #### Success Response (200) - **actualStart** (LocalDateTime) - The actual project start date. ``` -------------------------------- ### Build Project with Resource Assignments Source: https://github.com/joniles/mpxj/blob/master/docs/howto-use-cpm/index.html Constructs a project file with resources, tasks, and resource assignments, then schedules it. ```java ProjectFile file = new ProjectFile(); ProjectCalendar calendar = file.addDefaultBaseCalendar(); file.setDefaultCalendar(calendar); Resource resource1 = file.addResource(); resource1.setName("Resource 1"); ProjectCalendar calendar1 = file.addDefaultDerivedCalendar(); resource1.setCalendar(calendar1); calendar1.setParent(calendar); calendar1.setName("Resource 1"); calendar1.addCalendarException(LocalDate.of(2025, 4, 14)); Resource resource2 = file.addResource(); resource2.setName("Resource 2"); ProjectCalendar calendar2 = file.addDefaultDerivedCalendar(); resource2.setCalendar(calendar2); calendar2.setParent(calendar); calendar2.setName("Resource 2"); Task summary1 = file.addTask(); summary1.setName("Summary 1"); Task task1 = summary1.addTask(); task1.setName("Task 1"); createResourceAssignment(task1, resource1, Duration.getInstance(32, TimeUnit.HOURS)); Task task2 = summary1.addTask(); task2.setName("Task 2"); createResourceAssignment(task2, resource2, Duration.getInstance(16, TimeUnit.HOURS)); Task task3 = createTask(summary1, "Task 3", Duration.getInstance(5, TimeUnit.DAYS)); task3.addPredecessor(new Relation.Builder().predecessorTask(task1)); task3.addPredecessor(new Relation.Builder().predecessorTask(task2)); Task summary2 = file.addTask(); summary2.setName("Summary 2"); Task task4 = createTask(summary2, "Task 4", Duration.getInstance(2, TimeUnit.DAYS)); Task task5 = createTask(summary2, "Task 5", Duration.getInstance(2, TimeUnit.DAYS)); Task task6 = createTask(summary2, "Task 6", Duration.getInstance(2, TimeUnit.DAYS)); task6.addPredecessor(new Relation.Builder().predecessorTask(task4)); task6.addPredecessor(new Relation.Builder().predecessorTask(task5).lag(Duration.getInstance(1, TimeUnit.DAYS))); Task milestone1 = createTask(file, "Milestone 1", Duration.getInstance(0, TimeUnit.DAYS)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task3)); milestone1.addPredecessor(new Relation.Builder().predecessorTask(task6)); new MicrosoftScheduler().schedule(file, LocalDateTime.of(2025, 4, 11, 8, 0)); ``` -------------------------------- ### Calendar GUID Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/mspdi/schema/Project.Calendars.Calendar.html Provides methods to get and set the Globally Unique Identifier (GUID) for a calendar. ```APIDOC ## getGUID ### Description Gets the value of the guid property. ### Method public String getName() ### Returns String - The GUID of the calendar. ``` ```APIDOC ## setGUID ### Description Sets the value of the guid property. ### Method public void setGUID(String value) ### Parameters * value (String) - The new GUID for the calendar. ``` -------------------------------- ### Set and Get Task Start Date using Field Enumeration Source: https://github.com/joniles/mpxj/blob/master/mkdocs/docs/howto-use-fields.md Demonstrates using `set` and `get` with `TaskField.START` to manage the task's start date dynamically. The retrieved value requires casting. ```java startDate = LocalDateTime.of(2022, 5, 11, 8, 0); task.set(TaskField.START, startDate); System.out.println("Start date: " + task.getStart()); ``` -------------------------------- ### Add New Marker Example Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/conceptdraw/schema/Document.Markers.html Demonstrates how to add a new marker to the marker list. ```java getMarker().add(newItem); ``` -------------------------------- ### getActualStart Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/ResourceAssignment.html Retrieves the actual start date for a resource assignment. ```APIDOC ## getActualStart ### Description Retrieve the actual start date. ### Method GET ### Endpoint /resource-assignments/{id}/actual-start ### Response #### Success Response (200) - **actual start date** (LocalDateTime) - The actual start date. ``` -------------------------------- ### Summary Remaining Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ProjectType.html Provides methods to get the summary remaining start date for a project. ```APIDOC ## getSummaryRemainingStartDate ### Description Gets the value of the summaryRemainingStartDate property. ### Method GET ### Endpoint /projects/{projectId}/summaryRemainingStartDate ### Response #### Success Response (200) - **summaryRemainingStartDate** (LocalDateTime) - The value of the summary remaining start date property. ``` -------------------------------- ### Summary Baseline Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ProjectType.html Provides methods to get and set the start date of the summary baseline. ```APIDOC ## getSummaryBaselineStartDate ### Description Gets the value of the summaryBaselineStartDate property. ### Method LocalDateTime ### Returns possible object is String ## setSummaryBaselineStartDate ### Description Sets the value of the summaryBaselineStartDate property. ### Method void ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body * **value** (LocalDateTime) - Description: The new value for the summaryBaselineStartDate property. ``` -------------------------------- ### getStart Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/Resource.html Retrieves the earliest start date for all assigned tasks. ```APIDOC ## getStart ### Description Retrieves the earliest start date for all assigned tasks. ### Method GET ### Endpoint /resource/start ### Response #### Success Response (200) - **start** (LocalDateTime) - The earliest start date. ``` -------------------------------- ### Project Forecast Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ProjectType.html Provides methods to get and set the project forecast start date. ```APIDOC ## getProjectForecastStartDate ### Description Gets the value of the projectForecastStartDate property. ### Method GET ### Endpoint /projects/{projectId}/forecastStartDate ### Response #### Success Response (200) - **projectForecastStartDate** (LocalDateTime) - The forecast start date of the project. ``` ```APIDOC ## setProjectForecastStartDate ### Description Sets the value of the projectForecastStartDate property. ### Method PUT ### Endpoint /projects/{projectId}/forecastStartDate ### Parameters #### Request Body - **projectForecastStartDate** (LocalDateTime) - Required - The forecast start date to set for the project. ``` -------------------------------- ### getStart() - ResourceAssignment Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/index-all.html Returns the start of this resource assignment. ```APIDOC ## getStart() ResourceAssignment ### Description Returns the start of this resource assignment. ### Method Method ### Endpoint N/A (Java Method) ### Parameters None ### Request Example N/A ### Response N/A ``` -------------------------------- ### getStart Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/Resource.html Retrieves a start value for a given index. ```APIDOC ## getStart ### Description Retrieves a start value for a given index. ### Method GET (conceptual) ### Endpoint N/A (SDK method) ### Parameters #### Path Parameters - **index** (int) - Required - start index (1-10) #### Query Parameters None ### Response #### Success Response - **StartValue** (LocalDateTime) - The start value. ``` -------------------------------- ### Summary Start Date Variance Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/BaselineProjectType.html Provides methods to get and set the summary start date variance. ```APIDOC ## getSummaryStartDateVariance ### Description Gets the value of the summaryStartDateVariance property. ### Method GET ### Endpoint /projects/{projectId}/baselines/{baselineId}/summaryStartDateVariance ### Response #### Success Response (200) - **summaryStartDateVariance** (Double) - The value of the summary start date variance. ## setSummaryStartDateVariance ### Description Sets the value of the summaryStartDateVariance property. ### Method PUT ### Endpoint /projects/{projectId}/baselines/{baselineId}/summaryStartDateVariance ### Parameters #### Request Body - **value** (Double) - The new value for the summary start date variance. ``` -------------------------------- ### Planned Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ResourceAssignmentType.html Provides methods to get and set the planned start date for a resource assignment. ```APIDOC ## getPlannedStartDate ### Description Gets the value of the plannedStartDate property. ### Method GET ### Endpoint N/A ## setPlannedStartDate ### Description Sets the value of the plannedStartDate property. ### Method SET ### Parameters #### Path Parameters N/A #### Query Parameters N/A #### Request Body - **value** (LocalDateTime) - Allowed object is String ``` -------------------------------- ### CUSTOM_START Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/common/ResourceFieldLists.html Represents a predefined list of custom start resource fields. ```APIDOC ## CUSTOM_START ### Description Provides a static array of `ResourceField` objects representing custom start fields. ### Type `ResourceField[]` ### Usage This field can be used to access a predefined collection of custom start resource fields. ``` -------------------------------- ### Remaining Late Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ActivityType.html Methods to get and set the remaining late start date for an activity. ```APIDOC ## getRemainingLateStartDate ### Description Gets the value of the remainingLateStartDate property. ### Method public LocalDateTime getRemainingLateStartDate() ### Returns possible object is String ``` ```APIDOC ## setRemainingLateStartDate ### Description Sets the value of the remainingLateStartDate property. ### Method public void setRemainingLateStartDate(LocalDateTime value) ### Parameters #### Path Parameters * value (String) - allowed object is String ``` -------------------------------- ### Apply Actual Start Dates and Progress to Tasks Source: https://github.com/joniles/mpxj/blob/master/docs/howto-use-cpm/index.html This snippet demonstrates setting actual start dates for tasks and updating resource assignments with actual work. It also sets the project's status date and schedules the project. ```java task1.setActualStart(LocalDateTime.of(2025, 4, 11, 8, 0)); progressAssignment(assignment1, 25.0); task2.setActualStart(LocalDateTime.of(2025, 4, 11, 8, 0)); progressAssignment(assignment2, 50.0); file.getProjectProperties().setStatusDate(LocalDateTime.of(2025, 4, 11, 17, 0)); new PrimaveraScheduler().schedule(file, LocalDateTime.of(2025, 4, 11, 8, 0)); ``` -------------------------------- ### Write Planner File (Java) Source: https://github.com/joniles/mpxj/blob/master/mkdocs/docs/howto-write-planner.md Use UniversalProjectWriter with FileFormat.PLANNER to write a project file to disk. ```java package org.mpxj.howto.write; import org.mpxj.ProjectFile; import org.mpxj.writer.FileFormat; import org.mpxj.writer.UniversalProjectWriter; public class Planner { public void write(ProjectFile project, String fileName) throws Exception { new UniversalProjectWriter(FileFormat.PLANNER).write(project, fileName); } } ``` -------------------------------- ### Baseline 3 Start Date Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/ActivityType.html Methods to get and set the Baseline 3 Start Date for an activity. ```APIDOC ## getBaseline3StartDate ### Description Gets the value of the baseline3StartDate property. ### Method GET ### Endpoint Not applicable (Java method) ### Parameters None ### Response #### Success Response - **Return Value** (LocalDateTime | String) - The value of the baseline3StartDate property. ## setBaseline3StartDate ### Description Sets the value of the baseline3StartDate property. ### Method SET ### Endpoint Not applicable (Java method) ### Parameters - **value** (LocalDateTime | String) - The value to set for baseline3StartDate. ``` -------------------------------- ### summaryPlannedStartDate Source: https://github.com/joniles/mpxj/blob/master/docs/apidocs/org/mpxj/primavera/schema/BaselineProjectType.html Represents the planned start date for the baseline project. ```APIDOC ## summaryPlannedStartDate ### Description Represents the planned start date for the baseline project. ### Field Type LocalDateTime ```