Article published on the 3rd of April, 2025.
Contents
1. Introduction
In some scenarios, it's very handy to be able to copy content such as documents or tasks from one entity to another.
For this purpose, WorkPoint Automate includes a step called "Copy entity content", the use of which we will demonstrate in this article.
For demonstration, we will create a WorkPoint Automate process in which we will use the Copy entity content step to copy tasks from one project to another within our WorkPoint solution.
For technical information about the Copy entity content step, please visit this article.
2. Configuration
To begin, we will create a new process to copy entity content:

- In the Process Builder, we click the New button to create a new process.

- We grant the process a fitting name and select "User Process", since we will run this process manually by clicking a button.
- We then click the Begin button to start working on the process.
Our process is going to use two steps; Search entity form, and Copy entity content.
Let's start by adding the Search entity form:

- We click the "Add new steps" button to add a new step to the process.

- We search for and select the Search entity form
This expands the documentation panel where we can read information about the selected step, and add it to the process:
- To add the step to the process, we click the "Add step" process.
This adds the step to the process where we can now configure it:
Next, we will give the Search entity form a new title, "Select target". We also add a more fitting description than the default one:
In the "Options" tab, we set the form up to search within the Projects business module. Additionally, we will disallow continuing without making a selection in the form, and disallow selecting multiple projects:
Next, we add the Copy entity content step to the process:

In the Copy entity content step, we need to first specify the source entity from which we want to copy content. Next, we need to specify a target entity to which we want to copy the content to. Finally, we need to configure which content to include in the copy operation, as well as optionally setting some fields values for the copied elements.
Let's make those configurations now:
- In the General tab, we give the Copy entity content step a proper title and description.
Next, let's configure the source entity:
- In the Source tab, we set the Business module to "Projects" and the Entity to Entity.ID. This means that content will be copied from the project which we run the process from. This also means that this process will not work if we are location on e.g., a Company or any other business module. In some cases, you may want processes to work across other business modules, in which case you can use BusinessModule.ID in the Business Module field instead of using a specific module.
Next, we need to define the target entity. In this case, we will use the project we selected in the Search entity form:
- In the Target tab, we still specify the Projects module, but in the Entity field, we use EntitySearchForm.ID, which refers to the project we selected in the Entity search form. Essentially, this means that content will be copied from the project from which we run the process, to the project we selected in the Search entity form.
Next, we need to specify which content we want to include in the copy operation:
For technical descriptions of the options in the Copy entity content step, please visit this article.
In this instance, we only want to copy tasks from the source to the target project:
- We begin by expanding the Tasks list and enable the "Include" option. This makes sure the contents of the Tasks list on the source project are copied to the target project.
- In the Content type filter, we can filter which items to include in the copy operation based on content types. In this instance, we do not want to filter the content, so no configuration or selection is needed.
- In the "Query" field, we can provide a CAML query to optionally further filter the contents to be copied. This query further filters the contents already filtered by content type, if such a filter is applied. In this instance we do not want to filter the contents for copying, so we leave this field blank.
- To further filter the contents, we can use an adaptive expression in the "Additional filter" field. This filter is applied to the contents already being filtered by the previous two filters. This means that is you select to include tasks, and select e.g., the "Task" content type, and a CAML query to only select items where the "Status" is equal to "In progress", the additional filter will filter the items that are left based on those previous filters, by the expression provided in the field. In this instance, we do not want to filter anything, so we leave the field blank.
- In the "Output exists behaviour" field, we can specify what the step should do if it tries to copy an element which already exists on the target project. In this case, we select to replace the existing element with the one being copied.
Next, in the "Fields" section, we can specify field values for the tasks being copied to the target project.
If no field values are configured in this section, all metadata will be copied one-to-one to the target entity, meaning copied tasks will retain all their current metadata from the source project.
To use metadata from the copied elements, we can use the "Element" context object. For example, if we want the titles of the copied tasks on the target project to be set to the original titles, but with "- copied" appended at the end, we could use the following adaptive expression for the Title field value:
Element.Title + " - copied"
In this context, "Element" refers to each individual element (in this case task) being copied from the source- to the target project.
We can, for example, also use adaptive expression including the Element context object, or other objects from the process context to set dates. For example, Start- and Due date fields could use the following adaptive expression:
Start date:
addDays(Element.StartDate, 365)
This expression sets the copied task's Start date to the original task's start date, plus 365 days.
Due date:
addDays(CopyAnEntity.CompletionDate, -14)
This expression sets the copied task's Due date to the copied entity's completion date, minus 14 days (In this demonstration we are not copying an entity, this expression is only an example of what could be done).
If we want to automatically map all fields to the values from the original elements, we can click the "Map fields" button. This automatically maps all field values to Element.[field], e.g., Element.Title, Element.PercentComplete, and Element.Priority.
In this demonstration, we make the following configurations:
- Title: Retains the titles from the source tasks
- Start date: Set to the start date of the project we selected in the Entity search form.
- Due date: Uses the following adaptive expression: addDays(EntitySearchForm.wpCompletionDate, -14). This sets the Due date of the tasks to the completion date of the target project, minus 14 days.
- Assigned to: Set to the current user.
- % Complete: Retains the current data from the source tasks.
- Body: Retains the current data from the source tasks.
- Predecessors: Retains the current data from tasks.
- Priority: Retains the current data from the source tasks.
- Status: Is set to "Not started" so they are ready to be worked on once more.
We can now save the process and publish it. We can then set up a My Tools button to run the process from a project.
3. Execution
We have now created a My Tools button on on our Projects module, and for demonstration purposes, we have created three tasks on a project, which we want to copy to another project:
- To copy the tasks, we can click the My Tools button we have created to run the process we defined in the previous section.
- In the Search entity form, we can select the project to which we want to copy our tasks.
- To continue and start the copy operation, we click the "Continue" button.
The process now starts copying the contents:
Once the process is completed, we can go to the target project's task list, and see the copied tasks:
Here, we can also confirm that all metadata has been set according to our field value configurations.
Note that the copy operation will start by copying over the individual elements with their original metadata, and then update them according to field value configurations. This means that you may, for a very short time, see the copied elements with inaccurate metadata while the copy operation is ongoing, but this will be corrected by the same operation.
Comments
0 comments
Please sign in to leave a comment.