Project project = new Project(dataDir + "Blank2010.mpp"); // Add new task and resource Task task1 = project.getRootTask().getChildren().add("Task"); Resource rsc1 = project.getResources().add("Rsc"); // Assign the resource desired task ResourceAssignment assn = project.getResourceAssignments().add(task1, rsc1); ResourceAssignment assignment = project.getResourceAssignments().toList().get(0); // Custom attributes which is visible in "Resource Usage" view can be created // with ExtendedAttributeDefinition.CreateResourceDefinition method. ExtendedAttributeDefinition resCostAttr = ExtendedAttributeDefinition .createResourceDefinition(CustomFieldType.Cost, ExtendedAttributeResource.Cost5, "My cost"); project.getExtendedAttributes().add(resCostAttr); ExtendedAttribute value = resCostAttr.createExtendedAttribute(); value.setNumericValue(BigDecimal.valueOf(1500)); assignment.getExtendedAttributes().add(value); // Custom attributes which is visible in "Task Usage" view can be created with // ExtendedAttributeDefinition.CreateTaskDefinition method ExtendedAttributeDefinition resCostAttr2 = ExtendedAttributeDefinition .createTaskDefinition(CustomFieldType.Cost, ExtendedAttributeTask.Cost5, "My cost for task"); project.getExtendedAttributes().add(resCostAttr2); value = resCostAttr2.createExtendedAttribute(); value.setNumericValue(BigDecimal.valueOf(2300)); assignment.getExtendedAttributes().add(value); project.save(dataDir + "AddExtendedAttributesToResourceAssignment_out.mpp", SaveFileFormat.MPP);