ConnectALL adds the capability to sync records between ALM applications and 'Microsoft Project Online' with the new Microsoft Project Online adapter.  It interacts with 'Microsoft Project Online' application via its ReST API. 

Supported Authentication

(tick) Form Digest Authentication

The authentication method supported is from the digest. In this way of authentication, the cookies and the form digest (or token value) which are received back from the Authentication API serve as the token value for all the ReST API calls made to the Project Online instance.

Supported Entity Types

(tick) Task

Supported Functionalities

(tick) Sync Fields

(tick) Sync Attachments

(tick) Hierarchy Sync

Unsupported Features

(error) Sync Comments

Configuration


Important Information

To avoid old records getting resynchronized again, follow the below procedure:

  1. In MSPO, create a custom field with data type as ‘flag’. Set the flag to ‘yes’ (create or update) that will enable the record to be picked up for processing. By default the flag will be set as ‘No’. So, ensure that you change it to ‘Yes’.
  2. In the Field mapping screen, set the field mapping and value mapping as shown below. Note that the datatype has to be changed to CASyncFlag by clicking the cogwheel icon.



  3. In the Entity Mapping screen, set the flow filter as shown in the below image. Note that you have to enter the ID of the custom field in the flow filter and set it as 'true'. For example:
    (CA_Sync_Flag eq true)



If you are using multiple flow filters, separate them using and. For example, Description eq 'create a description filter' and CA_Sync_Flag eq true. 

 Create an application link between your application to Microsoft Project Online.Enter the connection details for the Microsoft Project Online

*The Project Collection refers to your PWA setting.

Important Info — Support for a Preferred Site Language

Starting from version 2.10.31, ConnectALL allows you to have a preferred site language. In version 2.10.31 and later versions, ‘French’ is supported. All you need to do is, include 'French' as a language in the Connection details as explained below. 

  1. Click Connections from the top navigation bar. The Manage Connections screen will be displayed.

  2. Click the cogwheel icon to edit the existing connection. The Connection Advanced Properties screen will be displayed.

  3. Add the Property Key (site.language) and the Property Value (french) as shown below. In the below image, the value for site.language is set as 'french'. (Make sure it's in lower case.)
  4. Click Save Properties.


Note that, support for a particular language is enabled by a separate property file available in the following path: \ConnectALL\mulesoft\mule-standalone-3.9.0\conf. And for 'French', it is MSPOFieldNames_french.properties file available in that path. This property file will be available only in version 2.10.31 and later versions. Please contact our support team, if you want to create and maintain a property file for any other language other than 'French'. (Note that, for each language, a separate property file is maintained.)

Entity Mapping

Select the Enterprise Project you want to configure the link for. The supported entity type in Microsoft Project Online is "Tasks".

Important Info

If you have only one MSPO project, you will face an issue while while creating a connection to Project Server Online. To get around this issue, create a second project (in MSPO). Doing this will enable the project to be retrieved successfully. Note that this issue does not occur when there are two projects available to be selected.

Transaction Processing

ConnectALL enhanced its Microsoft Project Online adapter to use transaction processing, which greatly improves the performance and stability of the synchronization by checking-in and checking-out projects in transactions. Enable transaction processing from the Entity mapping screen as shown below. 


As of version 2.10.30.2, you no longer have to enable 'Transaction Processing' — as it is automatically enabled. Hence, you will not see the option in the UI (in version 2.10.30.2 and later versions).

Consider the above configuration: the Project will be "Checked Out" for a minimum of 30 seconds before "Check-In", and will push the records to Project Server once the elapsed time expires. ConnectALL will confirm no other records are being pushed before completing the "Check-In" operation. 

The "Transaction Min Duration" setting will not guarantee the project will be "Checked In" after the specified duration. ConnectALL will wait for all the updates in process to be completed before Checking-In the project. 

Info

When ConnectALL has checked out a project simultaneously when a sync is in progress and if any other user checks in a project via the MSPO UI, then, the changes (create/update record) will not be reflected immediately after the poll. However, the changes will be reflected in the next poll when ConnectALL publishes and checks in the record.

Failover for Transaction Processing

ConnectALL runs a couple of batch job to close the open projects that were not "Checked In" during the synchronization and also handle the server Restart scenarios; using a couple of properties in $MULE_HOME/conf/ConnectAll.properties

The first batch job will persist the open transaction details into a flat file at the specified duration. This can be configured using "transaction.backup.frequency" property. 

transaction.backup.frequency=0\/15 0\/1 * 1\/1 * ?
CODE

The second batch job will close the open transactions that were not closed during the synchronization of the records, the duration can be configured using "transaction.flush.frequency" property. 

transaction.flush.frequency=0 0\/1 * 1\/1 * ?
CODE

Field Mapping

ConnectALL supports Only Microsoft Project Online standard fields and custom fields.

Image 1

Image 2

Most of the fields in Microsoft Project Online are interdependent or formulated fields; hence the record will be created/updated only by entering the correct fields. For syncing Work Fields (eg: Work, ActualWork, RemainingWork) if the value has to be synced in hours, select the datatype as "Work" for that specific field (Image 2). 

Datatype Selection

Select the datatype "Work" in the Data Type Mapping dropdown for the sync to happen in hours.


Important Info — Custom Fields
  • When there is an update in one of the custom fields in Microsoft Project Online (MSPO), and if this is the only update that you do, the record will not be picked for the update. On the other hand, if you update any other default fields while updating those custom fields, the custom field updates will also be synced along with the default fields. This is due to a limitation in MSPO.
  • To ensure that the custom fields are getting appropriately updated in time, without any duplications, you could increase the timeout (in milliseconds) as given below in the ConnectAll.properties file:

           projectserver.updaterecord.timeout = 20000

Synchronizing Text Fields

When you are mapping MSPO with another application, ensure that a field in MSPO that has a single-line of text is mapped only with another single-line text field of another application to ensure smooth transformation. Let’s say you have mapped a single line text field (of MSPO) with a multiple-line text field (of another application). In this case, when you sync, the text in the other application will not be synced into MSPO as desired and you will see some irregularities in the text that is displayed in MSPO.

Tip

Microsoft Project updates (commits) data asynchronously after receiving the update request via the API. That delay can cause undesirable effects if an attempt to read the data is made before the commit is complete. Therefore, consider increasing the timeout (in milliseconds) as given below in the ConnectAll.properties file. 

projectserver.updaterecord.timeout = 20000


This will help ensure that custom fields get appropriately updated and will reduce the likelihood of duplications. Further, increasing the timeout also reduces the possibility of conflicts where old data may be resynchronized again.

Configuring ConnectALL for SSO-Enabled MSPO

If the MSPO application is SSO enabled, you’ll have to configure ConnectALL to connect to MSPO. This is achieved by registering the ConnectALL application in the ADO portal. Doing this will allow MSPO to recognize the ConnectALL application, and it will allow ConnectALL to access it and synchronization is made possible. The procedure involves registering ConnectALL in the ADO portal and creating a connection in ConnectALL.

Step 1: Registering of the application in Azure ADO portal

Step 2: Secret Key Generation

Step 3: Create a Connection in ConnectALL 

Step 1: Registering of the Application in the Azure ADO Portal

  1. Login to https://portal.azure.com/
  2. Navigate to Azure Active Directory and click App registrations on the left panel
  3. Click + New registration to create a new application. The Register an application screen will be displayed
  4. Provide the name of your application
  5. Under the Supported account types, select the ‘Accounts in this organizational directory only (connectall.com only-Single tenant) option
  6. Under the Redirect URI section, provide the ConnectALL callback URL in the following format: <CONNECTALL_BASE_URL>/oauthcallback/projectserveronline/<CONNECTION_NAME> 
    In this format, 
    1. CONNECTALL_BASE_URL is ConnectALL URL (ex: http://localhost:8080/ConnectAll/)
    2. CONNECTION_NAME is the connection name to be created in the ConnectALL application
  7. Click API Permissions on the left pane followed by Add permission
  8. Select the SharePoint option under Microsoft APIs
  9. Click Delegated permissions option. The various permissions under various headings will be displayed
  10. Add the desired permissions under various headings. An example is shown in the below image



  11. Click the Grant admin consent for connectall.com option

          

Step 2: Secret Key Generation

The next step is to create a secret key. To do that,

  1. Click the Certificates and Secrets option on the left panel.
  2. Click +New client secret under the Client secrets section to create a secret key. Please make a note of the secret key as it will be needed later and it will not be displayed again.
  3. Once you complete the above steps, click the Overview option in the left panel of the portal. and copy the Application (client) ID, Object ID, and Directory (tenant) ID shown below.

 

Step 3: Creating a Connection in ConnectALL

  1. Login to ConnectALL
  2. Click Connections from the top navigation bar.
  3. Click Add connection to add a new connection. Note that the connection you create should be in the same name that you provided in the redirect URI of the registered application. Fill in the following details in the respective fields.
    1. ClientID – The Application (client) ID which was copied from the overview of the application registered in the Azure AD
    2. Client Secret – The secret key generated from the Azure AD app
    3. TenantID – The Directory (tenant) ID copied from the overview of the application registered in the Azure AD
  4. Click save. You will see a popup with an “Authorize” button. Click Authorize. This will open a new tab. This is to authorize the details with the Azure AD and ProjectOnline. Once authorized, the authorization will be returned to the ConnectALL application. Upon successful authorization, the “Proceed” button will be enabled in the popup.
  5. Click Proceed. The connection will be validated and saved in ConnectALL.

Task Hierarchy Synchronization Sample Usecase 

If you are in version 2.10.13 or above, you can sync both parent and child tasks through a single app-link. For example, you can sync the task and subtask of Microsoft Project Online (MSPO) to a ServiceNow project task by creating just a single app-link. To do that, create an app-link between a ServiceNow’s task (pm_project_task) and an MSPO task, and map the fields. Once you create the hierarchy of tasks, the same hierarchy will be maintained in the ServiceNow application.

Time Difference Configuration

To know how to calculate the time difference, and configure it in the ConnectALL UI,  read the topic Time Difference Configuration.