pse.AddFromProjectTemplateServiceglobal with sharing class AddFromProjectTemplateService A service used to clone related records between projects. Core fields of copied objects are also copied. This class contains deprecated items. EnumsSchedulingStrategy
MethodsaddFromTemplatesglobal static List<pse.AddFromProjectTemplateService.AddFromProjectResponse> addFromTemplates(List<pse.AddFromProjectTemplateService.AddFromProjectRequest> requests) This method clones related records between projects or to an opportunity using the details specified. Multiple requests are executed asynchronously and sequentially, in the given order. Input Parameters
Return ValueThis service returns values in the AddFromProjectResponses list in response to the requests in the input list. Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. Id template1 = 'a2V0R000001km2BUAQ'; Id template2 = 'a2V0R000001khHXUAY'; Id destination = 'a2V0R000001km2LUAQ'; pse.AddFromProjectTemplateService.ProjectTaskRequest request1 = new pse.AddFromProjectTemplateService.ProjectTaskRequest(template1, destination); pse.AddFromProjectTemplateService.MilestoneRequest request2 = new pse.AddFromProjectTemplateService.MilestoneRequest(template2, destination); List<pse.AddFromProjectTemplateService.AddFromProjectRequest> requests = new List<pse.AddFromProjectTemplateService.AddFromProjectRequest>{ request1, request2 }; // Enqueue the Add From Template requests List<pse.AddFromProjectTemplateService.AddFromProjectResponse> responses = pse.AddFromProjectTemplateService.addFromTemplates(requests); // Loop through each response to see whether the request succeeded or failed for (pse.AddFromProjectTemplateService.AddFromProjectResponse response : responses) { if (response.isSuccess()) { System.debug('Successfully queued this request: ' + response.Request); } else { System.debug('This request failed: ' + response.Request); System.debug('Reasons: ' + response.Errors); } } DeprecatedThe following items are deprecated and not supported for use. We recommend that you stop using these items to avoid exceptions. MethodsaddTasksFromTemplatesDeprecated: Use addFromTemplates(List global static List<pse.AddFromProjectTemplateService.AddFromProjectResponse> addTasksFromTemplates(List<pse.AddFromProjectTemplateService.ProjectTaskRequest> requests) This method clones project tasks between projects using the details specified. Multiple requests are executed asynchronously and sequentially, in the given order. Input Parameters
Return ValueThis service returns AddFromProjectResponses in a list that parallels the input list. Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. Id template1 = 'a2V2F000000xpS3UAI'; Id template2 = 'a2V2F000000xpS4UAI'; Id destination = 'a2V2F000000xpSGUAY'; Date startDate = Date.Today(); pse.AddFromProjectTemplateService.ProjectTaskRequest request1 = new pse.AddFromProjectTemplateService.ProjectTaskRequest(template1, destination); pse.AddFromProjectTemplateService.ProjectTaskRequest request2 = new pse.AddFromProjectTemplateService.ProjectTaskRequest(template2, destination); request1.StartDate = startDate; request2.StartDate = startDate; List<pse.AddFromProjectTemplateService.ProjectTaskRequest> requests = new List<pse.AddFromProjectTemplateService.ProjectTaskRequest>{ request1, request2 }; // Enqueue the Add Tasks From Template requests List<pse.AddFromProjectTemplateService.AddFromProjectResponse> responses = pse.AddFromProjectTemplateService.addTasksFromTemplates(requests); // Loop through each response to see whether the request succeeded or failed for (pse.AddFromProjectTemplateService.AddFromProjectResponse response : responses) { if (response.isSuccess()) { System.debug('Successfully queued this request: ' + response.Request); } else { System.debug('This request failed: ' + response.Request); System.debug('Reasons: ' + response.Errors); } } pse.AddFromProjectTemplateService.AddFromProjectRequestglobal abstract inherited sharing class AddFromProjectRequest The request structure for the AddFromProjectTemplateService. Properties
pse.AddFromProjectTemplateService.ProjectTaskRequestglobal with sharing class ProjectTaskRequest extends AddFromProjectRequest The request structure for adding tasks from template only. To be used with addFromTemplates. This class extends pse.AddFromProjectTemplateService.AddFromProjectRequest Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. global with sharing class ActionProjectTasksAddFromTemplates { //Prevents unwanted instantiation private ActionProjectTasksAddFromTemplates() { } @InvocableMethod( label='Add Project Tasks from Template' description='Add project tasks from the given template ID.' category='Templating' ) global static void run(List<AtftRequest> builderRequests) { List<AddFromProjectTemplateService.ProjectTaskRequest> apiRequests = new List<AddFromProjectTemplateService.ProjectTaskRequest>(); // Create the Add Tasks from Template requests for (AtftRequest req : builderRequests) { apiRequests.add(makeRequest(req)); } // Enqueue the Add Tasks from Template requests AddFromProjectTemplateService.addFromTemplates(apiRequests); } private static AddFromProjectTemplateService.ProjectTaskRequest makeRequest( AtftRequest builderRequest ) { // Create the request AddFromProjectTemplateService.ProjectTaskRequest request = new AddFromProjectTemplateService.ProjectTaskRequest( builderRequest.TemplateId, builderRequest.TargetId ); // Set the start/end date you want to offset task dates by if (builderRequest.ScheduleByEndDate) { request.EndDate = builderRequest.ScheduleDate; } else { request.StartDate = builderRequest.ScheduleDate; } // Copy associated project task assignments request.CopyProjectTaskAssignments = builderRequest.CopyProjectTaskAssignments; // Create a mapper so associated milestones are linked if (builderRequest.MilestoneId != null) { SObjectCloneMapper.Field milestoneField = new SObjectCloneMapper.Field( Project_Task__c.Milestone__c ); milestoneField.DefaultValue = builderRequest.MilestoneId; SObjectCloneMapper mapper = new SObjectCloneMapper( Project_Task__c.SObjectType, new Set<SObjectCloneMapper.Field>{ milestoneField } ); request.Mappers = new List<SObjectCloneMapper>{ mapper }; } return request; } global with sharing class AtftRequest { @InvocableVariable( required=true label='Template ID' description='The ID of the template project you want to add tasks from.' ) global ID TemplateId; @InvocableVariable( required=true label='Target ID' description='The ID of the project you want to add tasks to.' ) global ID TargetId; @InvocableVariable( label='Milestone ID' description='The ID of the milestone to map tasks to.' ) global ID MilestoneId; @InvocableVariable( label='Offset Schedule Date' description='The date to offset task dates from, either forward or backward, depending on the value in the schedule by end date.' ) global Date ScheduleDate; @InvocableVariable( label='Schedule by End Date' description='Set to true to offset backward based on the schedule date.' ) global Boolean ScheduleByEndDate = false; @InvocableVariable( label='Copy Project Task Assignments' description='Set to false if you do not want to copy any associated project task assignments.' ) global Boolean CopyProjectTaskAssignments = true; global AtftRequest() { } } } Properties
MethodsProjectTaskRequestglobal ProjectTaskRequest(Id templateProjectId, Id destinationProjectId) A default constructor with minimum required properties. Input Parameters
pse.AddFromProjectTemplateService.MilestoneRequestglobal with sharing class MilestoneRequest extends AddFromProjectRequest The request structure for adding milestones from template only. To be used with addMilestonesFromTemplates. This class extends pse.AddFromProjectTemplateService.AddFromProjectRequest Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. global with sharing class ActionMilestonesAddFromTemplates { //Prevents unwanted instantiation private ActionMilestonesAddFromTemplates() { } @InvocableMethod( label='Add Milestones from Template' description='Add milestones from the given template ID.' category='Templating' ) global static void run(List<AmftRequest> builderRequests) { List<AddFromProjectTemplateService.MilestoneRequest> apiRequests = new List<AddFromProjectTemplateService.MilestoneRequest>(); Set<Id> templateIds = new Set<Id>(); for (AmftRequest request : builderRequests) { templateIds.add(request.TemplateId); } List<Milestone__c> milestones = MilestoneSelector.newInstance() .selectByProject( templateIds, new Set<String>{ 'Id', 'Name', 'Project__c', 'Milestone_Amount__c', 'Planned_Hours__c', 'Default_Bill_Rate__c' } ); // Create the Add Milestones from Template requests for (AmftRequest req : builderRequests) { apiRequests.add(makeRequest(req, milestones)); } // Enqueue the Add Milestones from Template requests AddFromProjectTemplateService.addFromTemplates(apiRequests); } private static AddFromProjectTemplateService.MilestoneRequest makeRequest( AmftRequest builderRequest, List<Milestone__c> milestones ) { // Create the request AddFromProjectTemplateService.MilestoneRequest request = new AddFromProjectTemplateService.MilestoneRequest( builderRequest.TemplateId, builderRequest.TargetId ); Map<Id, Milestone__c> templateMilestones = new Map<Id, Milestone__c>(); for (Milestone__c milestone : milestones) { if (milestone.Project__c == builderRequest.TemplateId) { templateMilestones.put(milestone.Id, milestone); } } List<SObjectCloneMapper> mapperList = new List<SObjectCloneMapper>(); // For each milestone, override the values from the request for (Id milestoneId : templateMilestones.keySet()) { SObjectCloneMapper mapper = new SObjectCloneMapper( Milestone__c.SObjectType, new Set<SObjectCloneMapper.Field>() ); Milestone__c overrideMilestone = buildOverrideMilestone( builderRequest, templateMilestones.get(milestoneId) ); mapper.SObjectRecordsToOverride = new Map<Id, SObject>{ milestoneId => overrideMilestone }; mapperList.add(mapper); } request.Mappers = mapperList; // Set the start date you want to offset milestone dates by request.StartDate = builderRequest.StartDate; // Set whether associated milestone risks should be copied as well request.CopyRisks = builderRequest.CopyRisks; return request; } private static Milestone__c buildOverrideMilestone( AmftRequest builderRequest, Milestone__c templateMilestone ) { Milestone__c overrideMilestone = new Milestone__c(); if (builderRequest.StartDateOverride != null) { overrideMilestone.Start_Date__c = builderRequest.StartDateOverride; } if (builderRequest.TargetDateOverride != null) { overrideMilestone.Target_Date__c = builderRequest.TargetDateOverride; } if (builderRequest.MilestoneAmountOverride != null) { overrideMilestone.Milestone_Amount__c = builderRequest.MilestoneAmountOverride; } if (builderRequest.ApproverOverride != null) { overrideMilestone.Approver__c = builderRequest.ApproverOverride; } if ( builderRequest.MilestoneAmountOverride == null && templateMilestone.Milestone_Amount__c != null ) { overrideMilestone.Milestone_Amount__c = builderRequest.MilestoneAmountMultiplier * templateMilestone.Milestone_Amount__c; } if (templateMilestone.Planned_Hours__c != null) { overrideMilestone.Planned_Hours__c = builderRequest.PlannedHoursMultiplier * templateMilestone.Planned_Hours__c; } if (templateMilestone.Default_Bill_Rate__c != null) { overrideMilestone.Default_Bill_Rate__c = builderRequest.DefaultBillRateMultiplier * templateMilestone.Default_Bill_Rate__c; } return overrideMilestone; } global with sharing class AmftRequest { @InvocableVariable( required=true label='Template ID' description='The ID of the template project you want to add milestones from.' ) global ID TemplateId; @InvocableVariable( required=true label='Target ID' description='The ID of the project you want to add milestones to.' ) global ID TargetId; @InvocableVariable( label='Offset Start Date' description='The start date you want to offset milestone dates from.' ) global Date StartDate; @InvocableVariable( label='Start Date Override' description='The start date to override on milestones.' ) global Date StartDateOverride; @InvocableVariable( label='Target Date Override' description='The target date to override on milestones.' ) global Date TargetDateOverride; @InvocableVariable( label='Milestone Amount Override' description='The milestone amount to override on milestones.' ) global Double MilestoneAmountOverride; @InvocableVariable( label='Milestone Amount Multiplier' description='Apply a multiplier to the milestone amount on each milestone (ignored if a milestone amount override is also supplied).' ) global Double MilestoneAmountMultiplier = 1; @InvocableVariable( label='Planned Hours Multiplier' description='Apply a multiplier to the planned hours on each milestone.' ) global Double PlannedHoursMultiplier = 1; @InvocableVariable( label='Default Bill Rate Multiplier' description='Apply a multiplier to the default bill rate on each milestone.' ) global Double DefaultBillRateMultiplier = 1; @InvocableVariable( label='Approver Override' description='The approver to override on milestones.' ) global Id ApproverOverride; @InvocableVariable( label='Copy Risks' description='Set to false if you do not want to copy any associated risks.' ) global Boolean CopyRisks = true; global AmftRequest() { } } } Properties
MethodsMilestoneRequestglobal MilestoneRequest(Id templateProjectId, Id destinationProjectId) A default constructor with minimum required properties. Input Parameters
pse.AddFromProjectTemplateService.AssignmentRequestglobal with sharing class AssignmentRequest extends AddFromProjectRequest The request structure for adding assignment from template only. To be used with addAssignmentsFromTemplates. This class extends pse.AddFromProjectTemplateService.AddFromProjectRequest Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. global with sharing class ActionAssignmentsAddFromTemplates { //Prevents unwanted instantiation by customers private ActionAssignmentsAddFromTemplates() { } @InvocableMethod( label='Add Assignments from Template' description='Add assignments from the given template ID.' category='Templating' ) global static void run(List<AddAssignmentFromTemplateRequest> builderRequests) { List<AddFromProjectTemplateService.AssignmentRequest> apiRequests = new List<AddFromProjectTemplateService.AssignmentRequest>(); Set<Id> templateIds = new Set<Id>(); for (AddAssignmentFromTemplateRequest request : builderRequests) { templateIds.add(request.TemplateId); } List<Assignment__c> assignmentsRecord = AssignmentSelector.newInstance() .selectByProjectIdWithSetOfFields( templateIds, new Set<String>{ 'Planned_Bill_Rate__c' } ); // Create the Add Assignments from Template requests for (AddAssignmentFromTemplateRequest req : builderRequests) { apiRequests.add(makeRequest(req, assignmentsRecord)); } // Enqueue the Add Assignments from Template requests AddFromProjectTemplateService.addFromTemplates(apiRequests); } private static AddFromProjectTemplateService.AssignmentRequest makeRequest( AddAssignmentFromTemplateRequest builderRequest, List<Assignment__c> assignments ) { // Create the request AddFromProjectTemplateService.AssignmentRequest request = new AddFromProjectTemplateService.AssignmentRequest( builderRequest.TemplateId, builderRequest.TargetId ); Map<Id, Assignment__c> templateAssignments = new Map<Id, Assignment__c>(); for (Assignment__c assignment : assignments) { if (assignment.Project__c == builderRequest.TemplateId) { templateAssignments.put(assignment.Id, assignment); } } List<SObjectCloneMapper> mapperList = new List<SObjectCloneMapper>(); // For each assignment, override the values from the request for (Id assignmentId : templateAssignments.keySet()) { SObjectCloneMapper mapper = new SObjectCloneMapper( Assignment__c.SObjectType, new Set<SObjectCloneMapper.Field>() ); Assignment__c overrideAssignment = buildOverrideAssignment( builderRequest, templateAssignments.get(assignmentId) ); mapper.SObjectRecordsToOverride = new Map<Id, SObject>{ assignmentId => overrideAssignment }; mapperList.add(mapper); } request.Mappers = mapperList; // Set the start date you want to offset assignment dates by request.StartDate = builderRequest.StartDate; return request; } private static Assignment__c buildOverrideAssignment( AddAssignmentFromTemplateRequest builderRequest, Assignment__c templateAssignment ) { Assignment__c overrideAssignment = new Assignment__c(); if ( builderRequest.PlannedBillRateMultiplier != null && templateAssignment.Planned_Bill_Rate__c != null ) { overrideAssignment.Planned_Bill_Rate__c = builderRequest.PlannedBillRateMultiplier * templateAssignment.Planned_Bill_Rate__c; } if (builderRequest.BillRateMultiplier != null && templateAssignment.Bill_Rate__c != null) { overrideAssignment.Bill_Rate__c = builderRequest.BillRateMultiplier * templateAssignment.Bill_Rate__c; } if (builderRequest.MilestoneOverride != null) { overrideAssignment.Milestone__c = builderRequest.MilestoneOverride; } return overrideAssignment; } global with sharing class AddAssignmentFromTemplateRequest { @InvocableVariable( required=true label='Template ID' description='The ID of the template project you want to add assignments from.' ) global Id TemplateId; @InvocableVariable( required=true label='Target ID' description='The ID of the project you want to add assignments to.' ) global Id TargetId; @InvocableVariable( label='Offset Start Date' description='The start date you want to offset assignments dates from.' ) global Date StartDate; @InvocableVariable( label='Planned Bill Rate Multiplier' description='Applies a multiplier to the planned bill rate on each assignment.' ) global Double PlannedBillRateMultiplier = 1; @InvocableVariable( label='Bill Rate Multiplier' description='Applies a multiplier to the bill rate on each assignment.' ) global Double BillRateMultiplier = 1; @InvocableVariable( label='Milestone Override' description='The milestone to override on assignments.' ) global Id MilestoneOverride; global AddAssignmentFromTemplateRequest() { } } } MethodsAssignmentRequestglobal AssignmentRequest(Id templateProjectId, Id destinationProjectId) A default constructor with minimum required properties. Input Parameters
pse.AddFromProjectTemplateService.ResourceRequestToProjectRequestglobal with sharing class ResourceRequestToProjectRequest extends AddFromProjectRequest The request structure for adding resource requests to a project. To be used with addFromTemplates. This class extends pse.AddFromProjectTemplateService.AddFromProjectRequest Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. global with sharing class ActionResourceRequestsAddFromTemplates { //Prevents unwanted instantiation private ActionResourceRequestsAddFromTemplates() { } @InvocableMethod( label='Add Resource Requests from Template' description='Add resource requests from the given template ID to an opportunity or project.' category='Templating' ) global static void run(List<ArrftRequest> builderRequests) { List<AddFromProjectTemplateService.AddFromProjectRequest> apiRequests = new List<AddFromProjectTemplateService.AddFromProjectRequest>(); Set<Id> templateIds = new Set<Id>(); for (ArrftRequest request : builderRequests) { templateIds.add(request.TemplateId); } List<Resource_Request__c> resourceRequests = ResourceRequestSelector.newInstance() .selectByProjectId( templateIds, new Set<String>{ 'Id', 'Project__c', 'SOW_Hours__c', 'Requested_Bill_Rate__c' } ); // Create the Add Resource Requests from Template requests for (ArrftRequest req : builderRequests) { apiRequests.add(makeRequest(req, resourceRequests)); } // Enqueue the Add Resource Requests from Template requests AddFromProjectTemplateService.addFromTemplates(apiRequests); } private static AddFromProjectTemplateService.AddFromProjectRequest makeRequest( ArrftRequest builderRequest, List<Resource_Request__c> resourceRequests ) { AddFromProjectTemplateService.AddFromProjectRequest request; Map<Id, Resource_Request__c> templateRRs = new Map<Id, Resource_Request__c>(); for (Resource_Request__c resourceRequest : resourceRequests) { if (resourceRequest.Project__c == builderRequest.TemplateId) { templateRRs.put(resourceRequest.Id, resourceRequest); } } // For each resource request, override the the values from the request List<SObjectCloneMapper> mapperList = new List<SObjectCloneMapper>(); for (Id resourceRequestId : templateRRs.keySet()) { SObjectCloneMapper mapper = new SObjectCloneMapper( Resource_Request__c.SObjectType, new Set<SObjectCloneMapper.Field>() ); Resource_Request__c overrideResourceRequest = buildOverrideResourceRequest( builderRequest, templateRRs.get(resourceRequestId) ); mapper.SObjectRecordsToOverride = new Map<Id, SObject>{ resourceRequestId => overrideResourceRequest }; mapperList.add(mapper); } if (builderRequest.TargetId.getSObjectType() == Proj__c.SobjectType) { // Create the request AddFromProjectTemplateService.ResourceRequestToProjectRequest projRequest = new AddFromProjectTemplateService.ResourceRequestToProjectRequest( builderRequest.TemplateId, builderRequest.TargetId ); // Set whether associated resource skill requests should be copied as well projRequest.CopyResourceSkillRequests = builderRequest.CopyResourceSkillRequests; request = projRequest; } else if (builderRequest.TargetId.getSObjectType() == Opportunity.SobjectType) { // Create the request AddFromProjectTemplateService.ResourceRequestToOpportunityRequest oppRequest = new AddFromProjectTemplateService.ResourceRequestToOpportunityRequest( builderRequest.TemplateId, builderRequest.TargetId ); // Set whether associated resource skill requests should be copied as well oppRequest.CopyResourceSkillRequests = builderRequest.CopyResourceSkillRequests; request = oppRequest; } request.Mappers = mapperList; // Set the start date you want to offset resource request dates by request.StartDate = builderRequest.StartDate; return request; } private static Resource_Request__c buildOverrideResourceRequest( ArrftRequest builderRequest, Resource_Request__c templateResourceRequest ) { Resource_Request__c overrideResourceRequest = new Resource_Request__c(); if (builderRequest.StartDateOverride != null) { overrideResourceRequest.Start_Date__c = builderRequest.StartDateOverride; } if (builderRequest.EndDateOverride != null) { overrideResourceRequest.End_Date__c = builderRequest.EndDateOverride; } if (builderRequest.MilestoneId != null) { overrideResourceRequest.Milestone__c = builderRequest.MilestoneId; } if (templateResourceRequest.SOW_Hours__c != null) { overrideResourceRequest.SOW_Hours__c = builderRequest.HoursMultiplier * templateResourceRequest.SOW_Hours__c; } if (templateResourceRequest.Requested_Bill_Rate__c != null) { overrideResourceRequest.Requested_Bill_Rate__c = builderRequest.RequestedBillRateMultiplier * templateResourceRequest.Requested_Bill_Rate__c; } return overrideResourceRequest; } global with sharing class ArrftRequest { @InvocableVariable( required=true label='Template ID' description='The ID of the template project you want to add resource requests from.' ) global ID TemplateId; @InvocableVariable( required=true label='Target ID' description='The ID of the project or opportunity you want to add resource requests to.' ) global ID TargetId; @InvocableVariable( label='Offset Start Date' description='The start date you want to offset resource request dates from.' ) global Date StartDate; @InvocableVariable( label='Start Date Override' description='The start date to override on resource requests.' ) global Date StartDateOverride; @InvocableVariable( label='End Date Override' description='The end date to override on resource requests.' ) global Date EndDateOverride; @InvocableVariable( label='Hours Multiplier' description='Apply a multiplier to the planned hours on each resource request.' ) global Double HoursMultiplier = 1; @InvocableVariable( label='Requested Bill Rate Multiplier' description='Apply a multiplier to the requested bill rate on each resource request.' ) global Double RequestedBillRateMultiplier = 1; @InvocableVariable( label='Milestone ID' description='The ID of the milestone you want to map resource requests to.' ) global ID MilestoneId; @InvocableVariable( label='Copy Resource Skill Requests' description='Set to false if you do not want to copy any associated resource skill requests.' ) global Boolean CopyResourceSkillRequests = true; global ArrftRequest() { } } } Properties
MethodsResourceRequestToProjectRequestglobal ResourceRequestToProjectRequest(Id templateProjectId, Id destinationProjectId) A default constructor with minimum required properties. Input Parameters
pse.AddFromProjectTemplateService.ResourceRequestToOpportunityRequestglobal with sharing class ResourceRequestToOpportunityRequest extends AddFromProjectRequest The request structure for adding resource requests to an opportunity. To be used with addFromTemplates. Fields are copied from a Resource Request field set that is referenced in the following custom settings: • Template Proj RR Fieldset • Template Proj Columns RR Fieldset • Template Proj Alt Copy RR Fieldset This class extends pse.AddFromProjectTemplateService.AddFromProjectRequest Properties
MethodsResourceRequestToOpportunityRequestglobal ResourceRequestToOpportunityRequest(Id templateProjectId, Id destinationOpportunityId) A default constructor with minimum required properties. Input Parameters
pse.AddFromProjectTemplateService.AllRelatedRecordsRequestglobal with sharing class AllRelatedRecordsRequest extends AddFromProjectRequest The request structure for adding all related record types to a project. To be used with addFromTemplates. This class extends pse.AddFromProjectTemplateService.AddFromProjectRequest MethodsAllRelatedRecordsRequestglobal AllRelatedRecordsRequest(Id templateProjectId, Id destinationProjectId) A default constructor with minimum required properties. Input Parameters
pse.AddFromProjectTemplateService.AddFromProjectResponseglobal inherited sharing class AddFromProjectResponse The response structure returned for each request. Properties
Methodspse.AddFromProjectTemplateService.AddFromProjectErrorglobal with sharing class AddFromProjectError Stores error messages that occur when executing methods from AddFromProjectTemplateService. Properties
|