Organizations need to improve portfolio management by ensuring that artifacts managed by the PMO (Project Management Office) are available to other members of the extended development team and that the PMO has visibility to progress being made on its initiatives and projects. By connecting Broadcom Clarity (formerly CA PPM) software to the tools used by other stakeholders, Hub extends the value of the information managed within Broadcom Clarity and provides access to information from other tools. This creates a deeply integrated lifecycle that increases visibility and collaboration across system boundaries while enabling centralized governance.
Portfolio Managers need to make informed decisions in real time. By connecting Clarity software to the artifact bus provided by Tasktop Sync, Clarity users can make the right decisions and collaborate more effectively across the portfolio.
For example, members of the PMO may use Clarity to articulate and manage high-level initiatives. However these initiatives have to translated into a series of requirements for the development team. By integrating Clarity software with requirements management tools creates a fluid flow of communication between the PMO and the business analysts tasked with crafting the program requirements. This is an example of the Project Portfolio Management – Requirements Management Alignment Software Lifecycle Integration Pattern, other integration patterns that involve Clarity are listed in the Common Integration Patterns section below.
This section describes the basic steps needed to prepare your Clarity instance for use with Hub. Note that additional fields for synchronization or configuration of queries may be required depending on the requirements of your integration.
We recommend that you create a new user within your external tool, to be used only for your Hub integration. This is the user information you will enter when setting up your repository connection within Planview Hub. By creating a new user, you will ensure that the correct permissions are granted, and allow for traceability of the modifications that are made by the synchronization.
In general, your user account should have sufficient permissions to create, read, and update artifacts in your repository. However, depending on the use case, your user may need different permissions. For example, if you are only interested in flowing data out of your repository, your user may not need to have full CRUD access, as the 'create' and 'update' permissions may not be needed.
Your user should have a secure password or token. Please be aware that Hub will not allow you to save a repository connection utilizing a weak password/token, such as 'tasktop.'
List of minimal permissions:
Prior to connecting to the repository, follow the instructions for Clarity NSQL script installation. The connector relies on custom NSQL scripts that must be installed on the Clarity server.
Standard Authentication
Required Fields:
Optional Fields:
Learn more about how to set up your repository in Planview Hub here.
What is Proxy Association Attribute?
A custom string attribute is recommended to be used as the proxy association storage. Tasktop Sync needs to keep track of the association between a task and its proxy task. The association is persisted in a proxy store allowing the synchronization to be restored if there is any catastrophic failure of Tasktop Sync.
A proxy association attribute must be created for each artifact type to be synchronized.
The Proxy Association Attribute field must be a text/string type field in your ALM repository. We recommend creating this field with the name "Tasktop Sync Proxy."
It is recommended that a Clarity custom attribute is set up to store Tasktop Sync proxy association information. Follow these instructions (for the Task object) to create this attribute:
Objects
from the Administration
menuTask
object from the listAttributes
tabNew
from the bottom toolbarAttribute Name
to TasktopSync_ProxyAssociation
Attribute ID
to ttsync_proxyassn
Data Type
to String
Maximum Size
to 100
(or greater)Attribute Name
(and Description
, if desired) to an appropriate value to allow easy identification of the purpose of the attributeSave and Return
Custom Objects ->
Administration
-> Studio
-> Queries
.ttsync_proxyassn
attribute as a select field in the NSQL tab. See instructions for adding custom field to your artifactsEquivalent steps are required for any other supported object type.
The new attribute will not be visible in the web interface by default and does not need to be exposed for Tasktop Sync for Clarity to work correctly.
Tasktop Sync uses queries in the ALM systems to determine the artifacts to synchronize and detect changes in the system.
The initialization query represents the full set of artifacts to synchronize and is only run on initial configuration or manually.
The changes query should be defined the same as the initialization query but include some time scoping information (e.g. last 7 days) as this is the query that is executed on the defined schedule to detect changes. In many cases, these queries can be defined in the ALM system, providing the power of the built-in filters to properly scope the synchronization. If this is not possible, Tasktop Sync provides other mechanisms for filtering items in scope.
The Broadcom Clarity connector supports the following query types:
Query |
Instruction |
---|---|
Initialization Query |
For initializations query you can choose to use any of the above queries to limit the number of artifacts retrieved from the server
|
Changes Query |
For changes query you can use the same query as above, but specify the "Last Changed On" filter to retrieve only a subset of artifacts. |
The Broadcom Clarity Connector uses custom NSQL scripts that must be installed on the Clarity server. NSQL queries are SQL-like scripts that the Clarity server can expose via SOAP API. The Studio Developer’s Guide contains further information on NSQL.
For each of the scripts in the NSQL Scripts section:
Custom Objects ->
Administration
-> Studio
-> Queries
.Tasktop_GetTask
)Available for user portlets
, Content Source
)
Copy the source of the selected script to the NSQL section of the web interface
The queries are automatically available through web services after saving.
All custom attributes (fields) on supported object types that will be synchronized must be added to the NSQL scripts matching the object type (See Tasktop_GetTask, Tasktop_GetIncident, Tasktop_GetAsset, or Tasktop_R_[sub-object id] below).
Note: If a custom attribute is missing from the corresponding NSQL, the value will be cleared when the Clarity Connector updates the object.
Custom Objects -> Administration
-> Studio
-> Objects
-> [Object Type]
.Select the custom attribute to synchronize and identify its Attribute ID
.
CUSTOM_ATTRIBUTE_ID
in the below line with the Attribute ID
identified in the last step.
, Select:DIM_PROP:USER_DEF:IMPLIED:TASK:CUSTOM.CUSTOM_ATTRIBUTE_ID:CUSTOM_ATTRIBUTE_ID
, Select:DIM_PROP:USER_DEF:IMPLIED:TASK:CUSTOM.projectlead:projectlead
Custom Objects ->
Administration
-> Studio
-> Queries
.NSQL
tab.Insert the custom attribute line from step 4 underneath the last “@Select” line. For example:
Some Clarity object attributes have a “Lookup” type and a reference to a Lookup list of available values. If the type of the lookup list is ‘Static List’ then the Clarity connector supports all attributes of this type automatically. However, if the lookup type is ‘Dynamic Query’ the connector is unable to execute the associated query and such attributes are excluded by default.
To enable a dynamic lookup attribute in the connector create an NSQL script with the following conditions:
Tasktop_L_<Attribute Id>
@SELECT:DIM_PROP:USER_DEF:IMPLIED:CHG:PRID:id@
)@SELECT:DIM_PROP:USER_DEF:IMPLIED:CHG:PRNAME:label@
)Examples:
SELECT @SELECT:c.id:id@, @SELECT:c.company_id:company_id@, @SELECT:c.company_id:UNIQUE_CODE@, @SELECT:c.company_name:company_name@ FROM srm_companies c, cmn_lookups s WHERE c.status = s.id AND @FILTER@ @BROWSE-ONLY: AND s.lookup_code IN ('ACTIVE') :BROWSE-ONLY@
The above lookup code can easily be transferred into the following Tasktop_L_company (where "company" will be what the field is call in the artifact type's Get NSQL):
SELECT @SELECT:c.id:id@, @SELECT:c.company_name:label@ FROM srm_companies c, cmn_lookups s WHERE c.status = s.id AND @FILTER@
Create the following NSQL script with the Query ID Tasktop_L_prchargecodeid:
SELECT @SELECT:DIM:USER_DEF:IMPLIED:CHG:PRID:id@ , @SELECT:DIM_PROP:USER_DEF:IMPLIED:CHG:PRNAME:label@ , @SELECT:DIM_PROP:USER_DEF:IMPLIED:CHG:PREXTERNALID:externalId@ FROM PRChargeCode WHERE @FILTER@ @BROWSE-ONLY: AND prIsOpen != 0 AND prprojectid is null :BROWSE-ONLY@
The above script was adapted from the “Active Charge Codes” lookup query provided by the Clarity web interface.
That original script is here:
SELECT @SELECT:prID:prID@, @SELECT:PRUID:UNIQUE_CODE@, @SELECT:prName:prName@, @SELECT:prExternalID:prExternalID@, @SELECT:prModTime:prModTime@ FROM PRChargeCode WHERE @FILTER@ @BROWSE-ONLY: AND prIsOpen != 0 AND prprojectid is null :BROWSE-ONLY@
In order for the connector to support partitions, the Tasktop_L_partition_code script must be added. For each object that has partitions, add the following to the respective Get {object-type} NSQL. Replace [object-type] and [odf-object-table] with appropriate object type values. For example:
TASK
and [odf-object-table] with ODF_CA_TASK
INCIDENT
and [odf-object-table] with ODF_CA_INCIDENT
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:[object-type]:[odf-object-table].partition_code:partition_code@
The Clarity user account must be added to all relevant partitions.
Below, you will find a table outlining the required and optional scripts to flow each supported artifact type in Clarity. Below the table is an index containing the scripts that are compatible with each supported version of Hub. Open the PDF file to view and copy the scripts needed for your desired artifact type.
Artifact |
Required Scripts |
Optional Scripts |
||||||
---|---|---|---|---|---|---|---|---|
Asset |
|
For Charge Code:
For Currency Code:
For Dynamic Lookup Fields:
For Multi-Select and Multi-Person Fields:
To support Partitions:
For Portfolios:
|
||||||
Change Request |
|
For Dynamic Lookup Fields:
For Multi-Select and Multi-Person Fields:
To support Partitions:
|
||||||
Incident |
|
For Dynamic Lookup Fields:
For Investment:
For Multi-Select and Multi-Person Fields:
To support Partitions:
For Worklogs:
|
||||||
Issue |
|
For Associated Tasks:
For Dynamic Lookup Fields:
For Multi-Select and Multi-Person Fields:
To support Partitions:
|
||||||
Portfolio |
Note: To flow a container in Hub (Portfolio or Project), at least one work item's queries should also be present. Hub won't list a container if there are no available children within it. |
For Department:
For Dynamic Lookup Fields:
For Investments:
For Managers:
For Multi-Select and Multi-Person Fields:
To support Partitions:
For Stakeholders:
|
||||||
Project |
Note: To flow a container in Hub (Portfolio or Project), at least one work item's queries should also be present. Hub won't list a container if there are no avaiable children within it. |
For Charge Code:
For Dynamic Lookup Fields:
For Multi-Select and Multi-Person Fields:
To support Partitions:
For Portfolios:
For Tasks:
|
||||||
Resource (Labor) |
|
For Dynamic Lookup Fields:
For Multi-Select and Multi-Person Fields:
To support Partitions:
|
||||||
Risk |
|
For Associated Issues:
For Associated Risks
For Associated Tasks:
For Dynamic Lookup Fields:
For Multi-Select and Multi-Person Fields:
To support Partitions:
For Residual Risks:
|
||||||
SubObject |
|
For Dynamic Lookup Fields:
For Multi-Select and Multi-Person Fields:
To support Partitions:
|
||||||
Task |
|
For Assignees:
For Charge Code:
For Dynamic Lookup Fields:
For Multi-Select and Multi-Person Fields:
To support Partitions:
For Worklogs:
|
When creating a new task with the Clarity connector, the task must have a unique ID. Although Clarity marks the external ID field as unique, it allows multiple projects to have tasks with the same external ID, which can cause Hub to locate the wrong artifact when attempting to make updates.
If the task’s ID field is empty or matches the ID of an existing task in the project, creation will fail. After the task is created, however, the Clarity connector will treat its ID field as read-only.
The recommended way to handle the Clarity ID field in Hub is to create a one-way, upon-creation-only mapping from the ID field of the other system to the Clarity ID field.
Note: You can also have the Clarity server auto-generate an ID to populate this field, without having to map it. This can be configured under Custom Objects -> Administration → Studio -> Objects -> Task -> ID -> Auto-numbering tab. This will automatically generate an ID for a new Task which can have a counter to increment with (thus unique).
Note: Because Oracle does case-sensitive string comparisons, person searching on a Clarity instance with an Oracle database will be case-sensitive.
For person reconciliation, the following fields are available:
Fields Used for Hub’s Default Person Reconciliation Algorithm |
Field Names for Person Reconciliation Extensions (Note that these are case sensitive) |
Label in Clarity |
---|---|---|
ID |
id |
ID (also referred to as “Resource ID” in the UI) |
Username |
userName |
User Name |
|
|
Email Address |
N/A |
name |
Display Name |
N/A |
firstName |
First Name |
N/A |
lastName |
Last Name |
N/A |
uniqueName |
Unique Name |
N/A |
userId |
User ID |
In the resource view URL below, you can find both the ID (listed as 'resourceID' in the URL) and the User ID (listed as 'ID' in the URL - we know, it's a little counterintuitive!). Sometimes these two values are identical, but in other circumstances they can be two separate values:
Learn more about how to configure person reconciliation in Planview Hub here.
In Tasktop Sync, Clarity person fields are identified by the numerical (internal) ID, thus any synchronization feature using people (i.e., person/multi-person fields, time-worked) requires a person mapping, even in LDAP environments.
Person mappings may be generated using the following Ruby script:
require "net/http" require "highline/import" require "uri" require "nokogiri" require "rexml/document" include REXML def get_people_xml(server, user, pass) uri = URI.parse(server) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Post.new(uri.request_uri) request.add_field('Content-Type', 'text/xml;charset=UTF-8') request.add_field('SOAPAction', "http://www.niku.com/xog/Query/Tasktop_GetResources") request.body = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:quer="http://www.niku.com/xog/Query"> <soapenv:Header> <quer:Auth> <quer:Username>' + user +'</quer:Username> <!--Optional:--> <quer:Password>' + pass + '</quer:Password> </quer:Auth> </soapenv:Header> <soapenv:Body> <quer:Query> <!--Optional:--> </quer:Query> </soapenv:Body> </soapenv:Envelope>' response = http.request(request) return response.body end def get_records(xml) doc = Nokogiri::XML(xml) return doc.xpath('//nsp:Record', {"nsp" => "http://www.niku.com/xog/Query"}) end def get_person(record) person = {} record.children.each do |child| if child.name == "internalresourceid" person[:internalresourceid] = child.text elsif child.name == "username" person[:username] = child.text elsif child.name == "resourceid" person[:resourceid] = child.text elsif child.name == "fullname" person[:fullname] = child.text end end return person end def create_person_elt(person_id) person = Element.new("person") person.add_attribute("id", person_id) return person end #person1_id is internalresourceid, person2_id will be the LDAP username def create_person_mapping_elt(person1_id, person2_id) person_mapping = Element.new("person-mapping") person_mapping << create_person_elt(person1_id) person_mapping << create_person_elt(person2_id) return person_mapping end def create_repo_elt(repo_url) repository = Element.new("repository") repository.add_attributes( {"url"=>repo_url, "default-person-id"=>"TODO"} ) return repository end def start_person_mappings(base_url) person_mappings = Element.new("person-mappings") person_mappings.add_attribute("xmlns", "http://tasktop.com/xml/ns/sync/person-mapping-model") person_mappings << create_repo_elt(base_url) person_mappings << create_repo_elt("TODO") person_mappings << create_person_mapping_elt("","") return person_mappings end def print_doc(person_mappings) doc = Document.new doc << XMLDecl.new("1.0", "UTF-8") doc << person_mappings doc.write($stdout, 3) doc.write(File.new("personMapping.xml", "w"), 3) end base_url = ask("Enter server URL: ") user = ask("Enter username: ") pass = ask("Enter password: ") { |q| q.echo = false } xml = get_people_xml(base_url, user, pass) records = get_records(xml) person_mappings = start_person_mappings(base_url) records.each do |record| person = get_person(record) #If the second repository uses something other than the username that exists in the first repository #then you can change this by changing create_person_mapping_elt(person[:internalresourceid], person[:username]) #to create_person_mapping_elt(person[:internalresourceid], person[:fullname]). If this entry #is not one of username, fullname, or resourceid then the script will need to be further modified #to extract this data. person_mapping = create_person_mapping_elt(person[:internalresourceid], person[:username]) person_mapping << Comment.new("PPM person: #{person[:fullname]}, Username: #{person[:username]}, internalResourceId: #{person[:internalresourceid]}, resourceId: #{person[:resourceid]}") person_mappings << person_mapping end print_doc(person_mappings)
See the following instructions for using the Ruby script:
From the command line, run the person mapping script by referencing its file path. For instance, if the script is located on the desktop, enter the following:
> ruby Desktop/ppm_person_mapping.rb
At this point, if you see “cannot load such file — highline/import (LoadError)
”, you need to first install highline
. Enter the following:
> gem install highline > gem install nokogiri
For Mac/Linux users, if you now get a Gem::FilePermissionsError
, you’ll need to use the following:
> sudo gem install highline > sudo gem install nokogiri
highline
and nokogiri
, go back and re-enter the command in step 3. /Users/EdithWharton
, there will now be a person mapping in /Users/EdithWharton/personMapping.xml
.C:\Users\WilliamStyron
, the mapping will be in C:\Users\WilliamStyron\personMapping.xml
.See the Functional Limitations table below for limitations.
Due to third party API limitations, updates to the following fields may not trigger change detection or cause a synchronization immediately. To ensure these updates synchronize, a high fidelity full scan must occur or another qualifying change must be made to the artifact:
Learn more about how to configure change detection and full scan intervals in Planview Hub here.
Note: Time Tracking is not currently available on Planview Hub. Instructions below apply to Tasktop Sync, only.
To prepare your instance for time tracking integration, make sure that the following settings have been configured:
Note that this may already be done if you have time tracking enabled and working in your environment.
For Projects:
For Users:
Ensure that the users configured for time tracking are members of the project team.
For Time Reporting Periods (if you do not have time reporting periods yet):
Repeat the above steps to create at least two time reporting periods of two or more days in length.
Note: When creating a time reporting period, the span between "Start Date" and "Finish Date" will be split into time reporting periods of the size of the "Scale" option. So if you set "Scale" to "Daily" and set the start and finish dates to 7 days apart, you'll actually create 7 single-day time reporting periods.
Additional Notes:
Incident Time Tracking:
When a user wants to log work on an Incident in Clarity, she has to select an Investment as well. In a synchronization scenario, no other system currently supported has a field similar to investment, so the Tasktop Sync Clarity Incident Time-Worked synchronization makes the following assumptions:
The assumption for this Incident time-worked use case is that after an Incident has it's first time-worked written, the Investment field will only change in rare, exceptional cases
Repository Fields Specific to Time Tracking
You can learn more about special features in Planview Hub here.
Feature |
Custom Type Supported? |
Applicable Hub Version |
Applicable Repository Versions |
---|---|---|---|
Time Worked (Worklogs) Impersonation |
N/A |
Tasktop Sync: 4.2 and later |
Any supported repository version: |
Comments Impersonation Public/Private |
Any supported repository version: |
||
Attachments Impersonation |
Any supported repository version: |
||
State Transitions Supported for Asset and Project (State Transitions are not needed in Clarity for other artifact types. Therefore status can flow out of or into Clarity as a single select) |
N/A |
Planview Hub: 18.2 and later Tasktop Sync: 4.14 and later |
Any supported repository version: |
Learn about the difference between containers and work items in Planview Hub here.
Supported Work Item Type |
Applicable Hub Versions |
Applicable Repository Version |
Unique URL? |
---|---|---|---|
Task |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Yes |
Incident |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Yes |
Incident Sub-object |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Yes |
Asset |
Planview Hub: All Tasktop Sync: 4.5 and later |
Any supported repository version: |
Yes |
Project Sub-Object |
Planview Hub: All Tasktop Sync: 4.7 and later |
Any supported repository version: |
Yes |
Labor Resources |
Planview Hub: 18.4.0.20180829 and later Tasktop Sync: 4.16 and later |
Any supported repository version: |
Yes |
Risk |
Planview Hub: 19.1.0.20181203 and later Tasktop Sync: 4.17 and later |
Any supported repository version: |
Yes |
Change Request |
Planview Hub: 19.1.0.20181203 and later Tasktop Sync: 4.17 and later |
Any supported repository version: |
Yes |
Issue |
Planview Hub: 19.1.0.20181203 and later Tasktop Sync: 4.17 and later |
Any supported repository version: |
Yes |
Project (Note: treated as a container beginning with Planview Hub 18.2) |
Planview Hub: 17.1 - 18.1 Tasktop Sync: 4.5 and later |
Any supported repository version: |
Yes |
Learn more about containment in Planview Hub here.
Containers that can synchronize between repositories |
Applicable Hub Versions |
Applicable Repository Versions |
Unique URL? |
Project Note: Beginning in Hub version 22.4, containers can be treated as work items. Learn more here. |
Planview Hub: 17.2 and later |
Any supported repository version: |
Yes |
Program Since programs are technically the same as projects, these can by synchronized utilizing the 'project' artifact type, and artifact filtering utilizing the 'program' boolean field (program = Y) Note: Beginning in Hub version 22.4, containers can be treated as work items. Learn more here. |
Planview Hub: 18.2 and later Tasktop Sync: 4.14 and later |
Any supported repository version: |
Yes |
Portfolio Note: Beginning in Hub version 22.4, containers can be treated as work items. Learn more here. |
Planview Hub: 18.2 and later Tasktop Sync: 4.14 and later |
Any supported repository version: |
Yes |
Containers used to define the boundary of a collection (by clicking 'Manage Projects' on the collection) |
|||
---|---|---|---|
N/A (entire repository selected as container) |
Planview Hub: All |
Any supported repository version: |
|
Containers used for artifact routing |
|
|
|
Projects (for Tasks only) N/A - entire repository is routed (for all other artifacts) |
Planview Hub: All |
Any supported repository version: |
Note: If one field of a given type is supported, others that are also that type in theory should also work. However, sometimes there are instances in which this is not the case due to the repository. So, while we can claim support for fields at the type level, there is a chance that some specific fields of a given type will not synchronize properly.
Standard Field Type |
Does Hub support custom fields of this type? |
How is field type referenced in the repository? |
Sample Repository Fields Supported |
Particular Repository Fields NOT Supported |
---|---|---|---|---|
String |
String |
ID Category Gantt Outline Level Short Name Name |
||
Single Select |
Lookup:
|
Cost Type EV Calculation Method |
Primary Role |
|
Multi Select |
Multi-valued lookup:
|
|||
Boolean |
Boolean |
Critical Fixed Duration Key Task Locked Open for Time Entry Program (to differentiate between programs and projects) |
||
Date |
Date |
Early Finish Early Start Late Finish Late Start |
||
Date Time |
Start Finish Created Date Last Updated Date |
|||
Duration |
||||
Double |
Percent Number (with decimal places) |
Duration % Complete |
||
Long |
Number |
Priority |
||
Person |
N/A |
Person Lookup:
|
Assigned Project Manager Assigned To Created By Last Updated By |
|
Persons |
Resource |
Assignees |
||
Relationship(s) Learn how to configure relationships in Planview Hub here. |
N/A |
Parent Task Related Project Portfolios (Read Only) Investments (Read Only) |
Plans Plan of Record |
|
Rich Text |
||||
Web Links |
URL |
|||
Other |
Category |
Limitation |
Applicable Hub Versions |
Applicable Repository Versions |
---|---|---|---|
Third Party Functional Limitation |
Projects Customers may notice the following behaviors when using Hub:
|
Planview Hub: All |
Any supported repository version: |
Third Party API Limitation |
Risks, Issues, and Change Requests Relationships and Multi-Relationships of and to Risk, Issue, and Change Request are read-only in the connector. |
Planview Hub: 19.1.0.20181203 and later Tasktop Sync: 4.17 and later |
Any supported repository version: |
Third Party API Limitation |
Portfolios Due to a bug in Clarity, custom fields on Portfolios that are marked as 'required' will only allow creation if there is a default value set. If no default value is set, creation will always fail, even if the required value is included in the payload the connector sends to Clarity. |
Planview Hub: 18.2 and later Tasktop Sync: 4.14 and later |
Any supported repository version prior to 15.4: |
Third Party API Limitation |
Unicode Characters Resources with unicode characters in their 'User Name' field cannot be written using XOG. The Clarity server will fail and cannot accept those value. If such a user is set in the webUI, however, Hub can correctly retrieve its value, and can also update it to a different value or update other fields. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Configuration Requirement |
Configuration When creating a new connection to Clarity, the repository URL should be the XOG API endpoint. On a standard Clarity server, this URL will be "http://[hostname]:[port]/niku/xog", but the "/niku/xog" path may be customized on some servers. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Configuration Requirement |
ID Field Clarity objects (task, incident, incident sub-objects) must have a non-empty ID for the Clarity connector to be able to update or delete them. In Clarity, the ID field of a task is editable and optional. So it is possible to have a task with an empty ID. However, the API used by the Clarity connector uses this ID field to identify tasks to be updated or deleted. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
ID Field If users change the ID of tasks/sub-objects, or change the ID or name of projects/incidents, the connector may create a duplicate task, create a duplicate project, or rename a project. If a user changes the ID of a task or the ID of a project, and the connector uses the old ID in an API call, a new task or project will be created. If a user changes the name of a project, and the connector uses the old name in an API call, the project will be renamed to its old name. Hub minimizes the chances of this occurring by fetching the latest task ID, project ID, and project name before making API calls. However, there is still a small window (of a couple seconds at most) in which, if a task ID, project ID, or project name is changed, this may occur. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
Date, Date/Time Fields Once a date or date time field's value is set, the connector cannot remove the value. The values can be modified but not removed. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
URL Fields Hub treats all fields of URL type as strings. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
Dynamic Lookup Single-Select Fields Hub supports "Dynamic" lookup single-select fields but special per-field setup steps are required. See manual for instructions on enabling dynamic lookups with NSQL scripts. |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Third Party API Limitation |
Charge Code Field The Charge Code field (single-select) on a task is read-only. Note that this field is a also a "Dynamic Lookup" single-select and requires special steps to be enabled. An example is in the NSQL Script section, above. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
Assignees Clarity assignees become read only as soon as a time sheet with a time entry for that assignee becomes read only. If assignee synchronization is set up, removing such read-only assignee from the proxy artifact will result in the Clarity connector to silently ignore this removal, the assignee will remain. No error will be reported. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
Performance Under load, the Clarity server might return "Success" on an update operation when in fact no update is written to the task. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
Multi-Select Fields Hub cannot clear multi-select fields once one or more values are selected. Hub requests to clear multi-select fields are ignored. The API allows adding and removing one or more values but does not work when removing all values. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
Singe Select Fields Single-select stock (not custom) fields like Task.Cost_Type cannot be cleared once they have value. Hub requests to clear these fields are ignored. |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Third Party API Limitation |
Relationships Task parent relationships cannot be removed. Hub can change a task's parent but cannot move from a child task to a root task. The API doesn't reliably allow removing such relationships (without updating every single task in the entire project). |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Configuration Requirement |
Person Fields Clarity person fields are identified by the numerical (internal) ID, thus any synchronization feature using people (i.e. person/multi-person fields, time-worked) requires a person mapping, even in LDAP environments. See more details above. |
Tasktop Sync: 4.1 and later |
Any supported repository version: |
Known Issue |
Date Fields Unlike all other date fields, Clarity provides Creation Date and Last Update Date fields in the server's time zone instead of in UTC. Hub currently handles these dates like all others and so incorrectly assumes they are UTC. This means that these date values will be incorrect in all time zones that are not UTC. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Best Practice |
Date Fields We recommend setting up Clarity task sync to only set start and finish dates on initialization. Task start and finish dates cannot be updated through the XOG API if the task's ETC value is greater than 0. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Known Issue |
Person Fields Person fields in the connector are backed by an NSQL script that simply fetches all Resources. In Clarity, those fields use custom dynamic lookup queries that further restrict the available options depending on the field's context. This means that Hub may provide resource values that Clarity then rejects on write. In practice this shouldn't be an issue for Hub since the resources are driven by person mapping anyway. At present the only fields affected by this are writable Person fields on Incident (Assign To, Assigned Project Manager, and Reported By) and Task Assignees. |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Third Party API Limitation |
Person Fields Custom person fields are not supported. See known issue above. Because a Clarity Person field is just another lookup, Hub has no way of knowing if the associated lookup query is for Person data or not. |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Third Party API Limitation |
Person Fields Once a Person value is set, Hub cannot remove the value. It can only change the value. |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Best Practice |
Incidents By default, writing to the Incident artifact's Priority field is ignored. A system-calculated priority is assigned based on the Urgency and Impact fields. To override this with a user-defined Priority, one has to enable the "Override Priority Calculation" flag (boolean field). Therefore Hub mappings that intend to write the Incident Priority field need to also map the "Override Priority Calculation" field, likely to a Literal castor with the value "true". Once written, the flag stays set unless changed from the Clarity UI, so you can configure the attribute mapping to only sync on creation. Do this if you don't want to step-over users that have deliberately disabled the override post-creation. |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Best Practices |
% Complete Calculation Method Every project has a "% Complete Calculation Method" setting. When it's set to "Manual", % complete could be written to. All other settings could result in the value being overwritten by the server. Also, % complete depends on the status field. If status is set to "not started", % complete is automatically set to 0%. If status is set to "completed", % complete is automatically set to 100%. Clarity silently fails all attempts to write to % complete unless the project's "% Complete Calculation Method" is set to manual and the task's status is "Started". This is the only state the connector can guarantee the value of % complete. |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Known Defects |
Errors Deadlock errors from the Clarity server result in an error, rather than pending state. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Configuration Requirement |
Custom Number Fields Custom Number fields need to have the "Decimals" field set in the Object / Attribute configuration on the Clarity server. If that field remains empty, the Clarity connector will ignore this custom field. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
Tasks Tasks with empty External IDs can only be one-way synced out of Clarity. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
Tasks Tasks that have sub-tasks are not synced. The sub-tasks are synced, but not the parent of those tasks. This is due to these Parent tasks being summary tasks and not real tasks. |
Planview Hub: All Tasktop Sync: 4.2 and later |
Any supported repository version: |
Third Party API Limitation |
Projects The Project field "Department Name" cannot be written to with the Clarity connector, as the XOG API does not include this field. |
Planview Hub: All Tasktop Sync: 4.5 and later |
Any supported repository version: |
Third Party API Limitation |
Projects Clarity Project has a multi-link field Tasks, which links to all the tasks on the project. This field is read only and does not have change detection. Manually refresh the artifact to receive changes. |
Planview Hub: All Tasktop Sync: 4.5 and later |
Any supported repository version: |
Third Party Functional Limitation |
Tasks Clarity Task has a single-link field Project, which links to its project. The field is only writable when the task is created. Hub does not support moving a task to a different project. |
Planview Hub: All Tasktop Sync: 4.5 and later |
Any supported repository version: |
Configuration Requirement |
Partitions The repository user must be added to all partitions being accessed. Failing to so will result in Clarity writing partial data. A debug message will be logged in this instance. |
Planview Hub: All Tasktop Sync: 4.7 and later |
Any supported repository version: |
Configuration Requirement |
Custom Fields All custom fields of artifacts the connector writes to must be added to the corresponding Hub R(retrieve) NSQL. Failing to do so will cause the connector to clear the field value. |
Planview Hub: All Tasktop Sync: 4.1 and later |
Any supported repository version: |
Feature Unsupported |
Status Fields To configure state transitions in Planview Hub, the following possible transitions can be used in the graph:
|
Planview Hub: 18.2 and later |
Any supported repository version: |
Third Party Functional Limitation |
Status Fields Investments (e.g. Project, Program, Asset) have a workflow around the Status field. Due to limitations in the XOG API, some status transformations cannot be performed (i.e.: Rejected -> Approved, Cancelled -> Approved, Approved -> Rejected). All other transformations can be performed |
Planview Hub: 18.2 and later Tasktop Sync: 4.14 and later |
Any supported repository version: |
Configuration Requirement |
Time Tracking The "Do not synchronize time worked before" setting (Clarity Repository Settings Page, Advanced section) must be set to a day that matches the start date of a time period on the Clarity server (or it can be blank). The "Do not synchronize time worked before" feature has undefined behavior when the date specified does not fall on the start date of a Clarity time period. |
Tasktop Sync: 4.4 and later |
Any supported repository version: |
Best Practices |
Time Tracking If the timesheet entry rounding repository setting is changed to a finer precision, there is a potential that previously equivalent worklogs are now considered non-equivalent and thus will get synchronized. This could cause errors if that happens to be on read-only timesheets. If users use a customized precision though, there is still a potential for synchronization errors. |
Tasktop Sync: 4.4 and later |
Any supported repository version: |
Known Defect |
Time Tracking Tasktop Sync cannot add multiple worklogs to a Time Period that currently has no time logged for the user. |
Tasktop Sync: 4.1 and later |
Any supported repository version: |
Best Practices |
Time Tracking Retrieving timesheets causes high I/O and CPU load on the data base server of Clarity. Besides ensuring proper sizing of that server, Tasktop Sync and Broadcom strongly recommend performing regular data base maintenance listed here. |
Tasktop Sync: 4.1 and later |
Any supported repository version: |
Third Party API Limitation |
Time Tracking Split time sheet entries are not supported. They are ignored when reading in time sheet data, and an error happens when attempting to write to a split entry. |
Tasktop Sync: 4.1 and later |
Any supported repository version: |