Table of Contents

External execution tool configuration and synchronisation

Altus provides the capability of bringing project data in from external execution tools (e.g. Project Online, Project for the web) and allowing Altus projects to synchronise metadata with external projects that have been linked to those Altus projects.

This image shows how Project for the Web and Project Online link into the Dataverse

External execution tool support

Altus utilises the Power Platform Dataflow feature to connect to a large variety of external systems.

To check if your execution tool is directly supported by Altus, check the Microsoft Power Query connectors Page for "Power Apps (Dataflow)" support.

If your system is not listed as supported, connectivity may still be possible via one of the generic connectors, talk to your Altus Partner for more information.

Initial setup

Example Template Dataflows are available to help connect Altus to external execution tools, however if there is a supported Microsoft dataflow connector for the data source of the execution tool to be integrated, Altus currently has the infrastructure required to sync project level metadata through the dataflow to Dataverse and ultimately into Altus.

Altus Partner professional services can be used to assist you in configuring and customizing these data flows or you can configure it yourself using the examples below.

Note

If you want to implement Task Sync, then you will also need to download and configure the Project Sync for your system.

Standard dataflows

System Project Template Task Template Note
Download Download Jump to: Configuring Project Online Project and Task Sync
Download Download Jump to: Configuring Project for the Web Project and Task Sync
Download Download Jump to: Configuring Jira Project and Task Sync
Download Download Jump to: Configuring Azure Devops Project and Task Sync

Organisations can choose whether to configure any number of these connections. The default configuration for these Dataflows caters for most scenarios and are designed to match with the existing external tool configurations that ship with Altus.

Modifying/customising the external execution tool sync

To make changes to the configuration of the synchronisation of an external execution tool, you may need to modify the following settings:

  1. Table(s) in Dataverse
  2. Dataflows
  3. External System records
  4. Metadata Mapping records
  5. Plugin Sdk Steps

Small modifications may only require changes to one or two of the above elements. Creating a brand new linkage to an execution tool where the Dataflow template is not included in Altus will require changes to all of the above elements.

Updating an existing dataflow and external system sync

Let's use an example use case of a requirement to include an additional column in the sync operation between a project in Altus and a project from an existing external execution tool and let's assume that the steps in Enabling/Configuring Dataflows have already been performed.

In our example, let's say that you would like to include a Text-based column called 'Location' from your external execution tool and synchronise it through to your Altus project's Location column.

Note

The column you are wishing to synchronise into Altus must already exist in your external execution tool. If it does not exist, you will need to create that column in the external execution tool and populate values for that column in your external execution tool's projects. Alternatively, if the column is relevant only to your management of projects within Altus, consider creating a custom column for the sensei_project Table and displaying that column on the Main Form. This will enable you to manage the column local to Altus without having the perform any data mapping and synchronisation steps.

The first step you will need to do is create a column in the Dataverse Table that is being populated by the Dataflow that is retrieving data from your external execution tool. You can determine which Table is being written to by the Dataflow by opening the Dataflow itself and viewing the Map tables screen (after clicking 'Next' on the opening screen).

Note

It is recommended to make all customisations to Altus in an unmanaged Solution (e.g. 'Altus Enhancements').

  • Once you know the Table that is being written to by the Dataflow, navigate to your unmanaged enhancements Solution and ensure that the Table has been added there.
  • If it is not referenced there yet, select to Add Existing > Table. This image displays the Add Existing Table menu
  • Select your Table and click Next. This image displays the Add existing tables window
  • Select Add. This image displays the Selected tables window
  • Select the Table from within your enhancements Solution This image displays the Project For the Web row within the Solutions, Altus Enhancements page
  • From the Columns tab, select Add column This image displays the Add Column button within the Project For the Web list
  • Create a column with an appropriate name and type for the data that is going be stored in this column by the Dataflow. Then press Done. This image displays the new column pane

Now that the destination table being used by the Dataflow contains your new column, you can proceed to updating the Dataflow.

  • From the left nav, expand Data and then select Dataflows The image displays the Dataflow option in the Left Navigation

  • Select the ellipsis (…) at the far right for the Dataflow that you wish to modify and select Edit. This image displays the Edit many for the Dataflow

  • Select the query from the left nav that is retrieving the project data from your external system. This image displays the Dataflow Query list in the left navigation

  • If you have not modified the Dataflow recently you will likely need to re-authenticate to your external system. You will need to do this if you are presented with the Configure connection button. The image displays the re-authentication page and configuration button

  • Select 'Configure connection'

  • If there is no existing connection for your Dataflow, select 'Create new connection'

  • Enter the following details:

Column Value
Connection name Enter a name for your connection (if not populated automatically)
Authentication kind Organizational account
Privacy level Organizational
  • Select Sign in and enter the credentials of an account which has access to all project data in the environment that wish to connect to.
Note

If you are using the same account to log in to the source environment as the one accessing this environment, still choose to enter the credentials afresh (rather than selecting the already logged in account) - for whatever reason, selecting the account (rather than re-entering the credentials) does not seem to have a high success rate in terms of the data flowing through upon creation of the connection.

  • Select Connect

  • If all has gone well, you will start to see the data from the external system populated into the Power Query window.

  • View the data currently being retrieved from your external execution tool and verify that the column you are wishing to add is present. If it is not, modify your Query steps to ensure the data is present. This image displays the data query returning data

  • If your column contains Date data, ensure that you also update the DateFormat step in the Query to ensure that the date format is set to 'yyyy/MM/ddThh:mm:sszzz' (this format is required for Dataverse to populate a Date column in a Dataverse Table). This image displays how date values should be setup

  • Also consider using the RenameColumns step to ensure that your column from your external execution tool within the Query matches the name of the column that you created in the Dataverse Table that will be storing the value (this step is optional, but does assist in the next step because if the names match then the Power Query tool will auto populate your column mapping. This image displays the Rename column section and setup code

  • When you have configured the Query, click Next at the bottom right of screen. This image displays the next button

  • Once the data loads, select your project-related query and ensure that your Source column from your Query is correctly matched to the Destination column in the Dataverse Table. This image displays the query and column mapping

  • Click Next This image displays the next button

  • Ensure the Dataflow scheduled run configuration is correct, then click Create This image displays teh Refresh Schedule screen

  • Ensure that your Dataflow runs successfully. The Dataverse Table that is written to by the Dataflow should now contain the data for your new column from your external execution tool.

  • If the column that you wish to synchronise to your Projects from your external execution tool does not yet exist on the sensei_project Table, you will need to add it as a new column on that Table. (If you wish to populate an existing sensei_project column with data from your external execution tool, then you can skip ahead).

Navigate to your Enhancements unmanaged Solution and select the Project (sensei_project) Table. (If it hasn't yet been added to your Enhancements Solution, go ahead and add the Table via Add Existing > Table).

  • Select Add Column and create your new column with the required name and type.
  • If the column needs to be visible on the Main Form for sensei_project, select to Edit the Form and add your new column to appear on the required tab and section of the Form. Note that if you would like your column to appear on the Details tab that some Project Types use different Details tabs on the same form - so you may need to add your column into multiple tabs.
  • Next, open the Altus app and navigate to the Settings area and from the left nav menu, select External Systems This image displays the Dynamics 365 left navigation with teh External Systems option selected
  • Select the Name of the External System that relates to the Dataflow that you just modified. This image displays the Project for the Web row in the Active External Systems page
  • Select the Projects tab This image displays the Projects tab
  • Select New Metadata Mapping This image displays the New Metadata Mapping button
  • Enter the following details, and then click Save & Close This image displays the Save and Close button on the New Metadata Mapping screen
Column Name Value
Mapping Type Project
Altus Column Name {The name of the column on the sensei_project Table that you wish to synchronise with data from your external execution tool}
External Column Name {The name of the column on the Table that is synchronised from your Dataflow}
External Column Type [blank]

After adding the new Metadata Mapping record, you should start seeing data from your new Dataflow column synchronise into Projects in Altus after the next Dataflow run. (If your Dataflow is set to run manually, navigate to your Dataflow and select to Refresh it.)

Adding task mappings to an external system sync

Similarly to the instructions in the previous section, in order to complete a task sync configuration you will need to map metadata from your import table to the task created in the system.

  • Select the "Tasks" tab from the external system ui.
  • Enter the "Task Sync Entity Name", for example, "sensei_projectonline_task" is the table that ships with the system for Project Online.
  • Enter a pattern for construction URLs that the tasks will link to.
  • Add metadata required to map tasks.

There are a few special types of metadata that you will need to add. Please remember when adding task related metadata to select "Task" as the Mapping Type. For example:

This image displays the Task Mapping type highlighted on the Metadata Mapping screen

Each one of these column types should be mapped as they are required for Gantt chart functionality:

Column Type Note
Name This column contains the name of the task.
ID This column is the unique ID of the task.
Parent Project ID This column is the unique ID of the project this task belongs to.
Parent Task ID This column is the unique ID of the parent task of this task.
Milestone This column contains a status as to if this task is a milestone or not.

When completed, your configuration should look something like this. This image displays what the configuration should look like

Tasks will be loaded into the system the next time your data flow is run. If these tasks are already related to a project that is currently synchronized, then these tasks should automatically populate the Gantt chart of that project. Otherwise, they will appear when an external project is assigned to a project in the system.

Note

Tasks will only synchronize upon project creation, if you use the UI to select a project schedule when creating the project, or when using the "link" button in the project UI to select a project. Creating a project through any other mechanism will not trigger a task sync and you will need to wait for the dataflow to run.

Assignment Mapping

You can either import assignment mappings from your external system, or disable assignment mapping to allow users to edit task assignments directly in Altus.

Adding assignment mappings to an external system sync

As with Project and Task sync configuration, in order to complete an assignment sync configuration you will need to map metadata from your import table to the assignment created in the system.

  • Select the "Assignments" tab from External System form.
  • Enter the "Assignment Sync Entity Name", for example, "sensei_projectonline_assignment" is the table that ships with the system for Project Online.
  • Add metadata required to map tasks.

There are a few special types of metadata that you will need to add. Please remember when adding assignment related metadata to select "Assignment" as the Mapping Type. For example:

This image highlights the Assignment Mapping Type field within the Metadata Mapping screen

Each one of these column types should be mapped as they are required for Gantt chart functionality:

Column Type Note
ID This column is the unique ID of the assignment.
Parent Task ID This column is the unique ID of the task that this assignment belongs to.
Resource ID This column is the unique ID of the resource that has been assigned.
Name This column is the name of the resource that has been assigned.

When completed, your configuration should look something like this: This image displays how the Assignments configuration should look

Assignments will be loaded into the system the next time your data flow is run. If these assignments are already related to a task that is currently synchronized, then these assignments should automatically populate the Gantt chart of that project. Otherwise, they will appear when an external project is assigned to a project in the system.

Note

Resources for synchronised Assignments will be created as External Bookable Resources and their name will include the External System name in parenthesis. If there is a corresponding Named Bookable Resource in Altus, it is recommended to edit the synchronised External Bookable Resource and populate the 'Related Resource' column with the related Named Bookable Resource.

Allow Assignment edits on tasks

Within the Assignments tab on the External System, there is a setting that allows you to control whether assignments are synced from your external tool.

Screenshot showing the Assignment Sync Enabled setting

  • True: Resource assignments from your external tasks will be imported into Altus in read-only mode.
  • False: The Assigned To field on the Tasks grid will be unlocked, allowing you to manage resource assignments for that task directly in Altus. Any resources you add to the Assigned To field will then be able to submit timesheets for this task.

    Note: Only the Assigned To field on the Tasks Timeline is unlocked; the Resources section within the Task Details page remains locked.

If you want some projects to have editable assignments in Altus and others not, you can set up multiple external system references for the same scheduling tool. Assign each project to the appropriate external system configuration based on your requirements.

Creating a dataflow and external system sync

You may have a requirement to create a Dataflow and External System configuration in addition to the ones shipped with Altus. For example, if you wish to connect to two separate Project Online instances you can configure the connection to one of those instances using the Dataflow from ProjectOnline to Altus dataflow but will need to create a second Dataflow to bring data from your second Project Online instance into a Dataverse Table.

Create a dataflow

  • Navigate to https://make.powerapps.com and from the left nav menu, select Data > Dataflows

  • Select New dataflow > Start from blank

  • Select a Name for your Dataflow, then press Create This image displays the New Dataflow pane

  • Build your Dataflow according to your requirements. If using the same destination type as a Dataflow that is shipped with Altus, you can choose Blank query as the Data source type and then use Advanced Editor to copy the configuration from the Altus Dataflow to your new Dataflow. [If copying from an Altus Dataflow, after you have copied the Advanced editor configuration, ensure that you go ahead and set up any parameters for your query.

  • Select Configure connection This image displays the Configure connection section and button

  • If there is not yet a connection with the correct credentials, select to create one - otherwise select an existing one.

  • Once you have successfully connected to your destination environment, click Next

  • Ensure that the Load settings for any parameters in your Query are set to Do not load

  • Select your Query that is returning Project data.

  • At this point, you can choose to Load to new table (which will create a Dataverse Table for you) or Load to existing table (which will require you to manually create your own Dataverse Table with columns created for all of the columns that you wish to copy across from your external execution tool).

    If you choose to Load to new table, note that you will not get the opportunity to select the Publisher prefix that is allocated to your new Table and you will always get all of the columns from your Dataflow's Query created as Columns in your Table. For this reason, creating your own Table is recommended.

  • Once you have created your own Table and have populated it with the Columns that you require, return to the Dataflow configuration and select your Table (you may need to hit Back and then Next again to refresh the list of Tables in the environment).

  • Select your Table and configure the appropriate column mappings.

  • Click Next

  • If you wish to run your Dataflow on a schedule, create that schedule and click Create

Ensure that your Dataflow runs successfully. The Dataverse Table that is written to by the Dataflow should now contain data from your external execution tool.

Create external system configuration

  • As a user with the Altus Admin User role, open the Altus app and navigate to the Settings area of the app.
  • From the left nav menu, select External Systems
  • Select + New to create an External System record.
  • Enter the following details:
Column Value
Name {Add a descriptive name for your External System}
External System Type {Select the external system type}
Icon URL Enter base64 encoded icon for your external system (copy this value from the External System records shipped with Altus if of the same type)

This image displays the New External System Details screen and fields

  • Select the Projects tab and enter the following details:

    Column Value
    Project Sync Entity Name {Enter the internal name of your Dataverse Table that you are writing to from your Dataflow}
    Project URL Pattern {Enter the URL that will view the Schedule for a project in your external execution tool. Use the keyword {ID} to indicate the ID of the project that is being viewed}

    This image displays the New External System Projects screen and fields

  • Click Save
    This image displays the Save button

  • Now that your External System record is saved, the Metadata Mapping section should now appear on the Projects tab.

  • Select + New Metadata Mapping This image displays teh New Metadata Mapping button

  • Enter the following details:

    Column Value
    External System {Should already be populated with your current External System record that you are configuring}
    Mapping Type Project
    Altus Column Name ID
    External Column Name {Enter the internal name of the column on your Dataverse Table (that is being populated from your Dataflow) that contains the unique Project ID values from your external execution tool}
    External Column Type ID
  • Click Save
    This image displays the Save button on the New External System page

  • Select + New Metadata Mapping
    This image displays the New Metadata Mapping button

  • Enter the following details:

    Column Value
    External System {Should already be populated with your current External System record that you are configuring}
    Mapping Type Project
    Altus Column Name sensei_name
    External Column Name {Enter the internal name of the column on your Dataverse Table (that is being populated from your Dataflow) that contains the Project Name values from your external execution tool}
    External Column Type Name
  • Click Save
    This image displays the General Tab and fields after you have saved.

  • Enter New Metadata Mapping records for each additional column that you wish to synchronise between your external project data and your Altus projects.

Create plugin sdk steps

In order to ensure that incoming data from your Dataflow will flow through to your Altus Projects at the time that the Dataflow runs, you will need to hook up the Create and Update events from your Dataverse Table that is synchronised from the Dataflow. To do this, as a System Administrator, launch the Plugin Registration Tool (this tool is available from Microsoft: Download tools from NuGet | Microsoft Docs).

  • Select + Create New Connection This image displays the Create New Connection button

  • Log in to your Office 365 tenant This image displays the Login screen and the fields and options on it

  • If prompted, select the environment that contains your Altus installation.

  • Scroll down the list of Registered Plugins and locate and expand (Assembly) SenseiDataIngestionPlugin This image displays the Plugins within the Atsumeru site

  • Select to expand (Plugin) SenseiDataIngestionPlugin.Sensei_ProcessIncomingProjectData This image displays the Plugins with the Process Incoming Project Data item expanded

  • Right-click (Plugin) SenseiDataIngestionPlugin.Sensei_ProcessIncomingProjectData and select Register New Step This image displays the Register New Setup item and menu that shows when the Plugin is right clicked

  • Enter the following details, then click Register New Step:

Column Value
Message Create
Primary Entity {Enter the internal name of the Dataverse Table that is being populated by your Dataflow}
Secondary Entity None
Filtering Attributes {none}
Event Handler {leave as-is}
Step Name {enter a display name for your Plugin Step}
Run in User's Context Calling User
Execution Order 1
Description {enter a description for your Plugin Step}
Event Pipeline Stage of Execution PostOperation
Execution Mode Asynchronous
Deployment Server
Delete AsyncOperation if StatusCode = Successful {Unchecked}

This image displays the Register New Step screen and fields

  • Again right-click (Plugin) SenseiDataIngestionPlugin.Sensei_ProcessIncomingProjectData and select Register New Step This image displays the Register New Setup item and menu that shows when the Plugin is right clicked
  • Enter the same details as above, but change the Message to Update then click Register New Step: This image zooms in on the Message field within the screen
  • Right-click the Update step that you just added and select Register New Image This image shows the Register New Image option in the context menu for a plugin step
  • Ensure that only Post Image is selected (only) and enter 'Image' for both Name and Entity Alias. Leave Parameters set to 'All Attributes'. Then click 'Register Image' This image displays the Register New Image dialog and fields
  • If you are bundling your changes into an Altus Enhancements unmanaged Solution, ensure that you select to Add Existing and select the newly created Sdk Plugin Steps to add them to your Solution.

Icon URL reference

If needed, use the values in the table below as inputs in the External System configuration on the 'Details' tab, Icon URL column, to represent the following Execution Tools:

Execution Tool Value
Project for the web data:image/png;base64,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
Project Online data:image/png;base64,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
Jira Core data:image/png;base64,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
Azure DevOps data:image/png;base64,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
Note

If creating your own image/icon for a new external system, the optimal size is 32 x 32 pixels.

Monitoring Altus data ingestion engine

Whenever a Sync is triggered - either by a Dataflow retrieving data from an external system, or when a user selects to associate their Project with an External Project - there is some log information generated which can be viewed by Altus Admin Users in the Settings area of the Altus app.

To View the Sync Logs;

  1. Open the Altus app as a user who has the Altus Admin User security role.
  2. Select to view the Settings area of the app.
  3. From the left nav menu, under the Project Sync heading, select Sync Logs
  4. The Sync Logs view will display a list of Sync Log records. The view itself contains the Project that each Sync Log relates to, in addition to the Sync trigger type (Name), the start and finish date of the sync job and the Result.
  5. Selecting the Name column will display the full Sync Log record. If an error has occurred during the Sync operation, then the error message will be included in the Sync Log information.
Note

Sync Log information is also included for TaskRollup operations which occur whenever tasks are updated within Altus for a Project which does not have an External Project.

Troubleshooting external execution tool sync issues

  1. Check the Dataflow that is connecting to your external execution tool. Check that it's last run was successful. If there were any warnings, try to resolve the issues identified in them, as they may have prevented some project records from being copied into the Table that is populated by the Dataflow.
  2. If the Dataflow looks to have run successfully, take a look at the Dataverse Table that is populated from your Dataflow. Navigate to it from https://make.powerapps.com from the left nav selecting Data > Tables. Then locate your Table and select the Data tab. Switch the View (top right corner) to All columns and then verify if the project is correctly displaying in there.
  3. If your project is appearing in the Dataverse Table that has been populated from your Dataflow but is not appearing in the project picker, next, log in to Altus as an Altus Admin User and navigate to the Settings area of the app. Select External Systems from the left nav menu. Verify that the table being populated from your Dataflow is referenced by one of the External System records (in the Project Sync Entity Name column). If it does not appear, create an External System record ensuring that you reference your Dataverse Table in the Project Sync Entity Name column. Ensure also that you create the required Metadata Mappings for your External System - and in particular ensure that you have one Metadata Mapping record tagged with the ID value and one Metadata Mapping record tagged with the Name value in the External Column Type column.
  4. If an External System record does appear with the Project Sync Entity Name column correctly set, navigate to the Project tab of the External System record and take note of the Metadata Mapping columns associated with your External System.
    1. Ensure that there is one record (only) which is tagged with the ID value for the External Column Type column and that the External Column Name correctly identifies the column in your Table that is synchronised from the Dataflow that contains the external Project's ID.
    2. Ensure that there is one record (only) which is tagged with the Name value for the External Column Type column and that the External Column Name correctly identifies the column in your Table that is synchronised from the Dataflow that contains the external Project's Name.
Note

Task Dataflows can take time. Please be patient as your dataflow refreshes load new delta data into Altus. For organizations with large task datasets in your source execution tools, please expect that all task data may not load for several cycles.

Note

If modifying the task dataflow queries to filter for a specific condition please add the filter directly to the source query at the top of the applied steps. This will ensure that all data is filtered prior to checking for deltas.

How do I know when my Project was last synchronised from its associated external project

When viewing your Project from the Project Form, the Last Sync Date value shown in the bottom left corner of the screen will show you the last time that a synchronisation activity occurred for your project. The Date and Time value for this column are shown in UTC timezone.

Error with alternate Keys failing

Occasionally, you will see the following error:

The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.sometableBase' and the index name 'ndx_for_entitykey_sensei_primarykey'. The duplicate key value is <redacted>.

See here for more

I need to reset task sync data because of some issue

Sometimes you need to clear task sync data due to making a mistake when configuring it or because some other issue caused the records to become out of sync.

See here for more

After successful synchronization of tasks and assignments into Altus the "Bookable Resources" table will be populated with the external resources that are assigned to these external tasks. Often, these resources might have a corresponding "match" in Altus, and in order to have the reporting for the current work assignments appear associated to the correct Altus resource, the external resources need to be "matched" with the appropriate Altus resources.

This image displays the Active Bookable Resources page

To make this association, simply open the resource record for the External Resource to be matched. In the "Related Resource" column, populate the Altus resource that you would like to match with the external resource.

This image displays the Related Resource section within a Resource

Save and close the resource. Once the reports are refreshed, assignments previously associated with the External Resource will now appear to be assigned to the Altus resource.

Note

Currently the impact of linking of External Resources to Altus Bookable Resources is limited to the view of this data in the Power BI Insights reports, and the auto population of timesheet tasks.