Readme for Micro Focus Connect Silk Central Connector 24.1.1

This readme describes how to configure Micro Focus Silk Central Connector. Refer to the Micro Focus community and to the Micro Focus Connect Help Center for additional configuration instructions.

The Micro Focus Silk Central Connector for Micro Focus Connect (Micro Focus Silk Central Connector) lets you synchronize Silk Central assets like requirements and tests with assets in other Micro Focus Connectors, for example assets found in the Micro Focus Azure DevOps Connector.

Copyright

Copyright 2018 - 2024 Open Text.

The only warranties for products and services of Open Text and its affiliates and licensors ("Open Text") are as may be set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. Open Text shall not be liable for technical or editorial errors or omissions contained herein. The information contained herein is subject to change without notice.

Except as specifically indicated otherwise, this document contains confidential information and a valid license is required for possession, use or copying. If this work is provided to the U.S. Government, consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license.

Contents
  Installation and Upgrade Information Technical Notes
Prerequisites Known Issues Need assistance with the product?

Features

Supported Versions

This version of Connector is certified with Silk Central 21.1.

Unless otherwise specified, for any given MF Connect connector from OpenText, all versions of the connector product that are officially released and supported by it's vendor both four months before the time of the release of the connector as well as at the time of using the connector, are supported by OpenText. Not all product versions will be tested and validated by OpenText for each connector release. Instead, OpenText chooses a subset of versions that we deem representative or most important to run validation and certification tests against. These selected versions are mentioned in the respective connector read-me, clearly identifying them as "validated" or "certified". As stated above, this does not mean that Micro Focus Connect does not support other product versions - it only means that no validation test cycle was executed for the other versions.

Supported Assets

This version of Connector supports requirement, test, and issue-related asset types.

For Silk Central 20.5 and earlier, only requirement-related and test-related asset types are supported, as well as issues assigned to tests.

 

Top

Prerequisites

This connector requires at least build 24.1.1 of Micro Focus Connect and can be configured using the Micro Focus Connect UI.

Copy the file thesaurus.properties to the folder AppData\data on the Micro Focus Connect machine.

This version of Connector is an update to previous versions.

If a previous version of Connector is already installed, replace the following .jar file with the provided .jar file:

AppData\connectors\mfcConnectorSCTM\mfcConnectorSCTM*.jar

Silk Central 20.5 and earlier

For Silk Central 20.6, it is no longer required to configure the following parameters. These are now optional. However, to use Silk Central Connector with older versions, make sure to configure the following three reports in Silk Central:

To do so, follow these steps:

TestRunsReport

SQLServer

SELECT 
	edr.ExecDefRunID_pk_fk PlanRunId, tde.TestDefExecID_pk_fk Id,tde.TestDefID_fk TestId, tde.TestDefName TestName, tde.TestDefDescription Description, tde.Status, sn.StatusName, sr.ReasonText StatusReason,
	COALESCE(mtr.IsBlocked, 0) IsBlocked, tde.Duration, CAST(DATEDIFF(s, '1970-01-01', tde.ExecutionTimestamp) AS   BIGINT)*1000 ExecutionTimestamp,
	edr.ProductName, edr.VersionName, edr.BuildName, mtr.ChangedBy ExecutedBy, CAST(DATEDIFF(s, '1970-01-01', tde.DbChangedAt) AS BIGINT)*1000 ChangedAt
FROM TM_TestDefExecutions tde
INNER JOIN TM_ExecDefinitionRuns edr ON tde.ExecDefRunID_fk = edr.ExecDefRunID_pk_fk
INNER JOIN TM_TestDefStatusNames sn ON tde.Status = sn.StatusID_pk
LEFT JOIN TM_ManualTestResults mtr ON   (mtr.TestDefExecID_pk_fk = tde.TestDefExecID_pk_fk AND mtr.ChangedAt > mtr.CreatedAt)
LEFT JOIN TM_StatusReasons sr On tde.StatusReasonID_fk = sr.StatusReasonID_pk
WHERE tde.TestDefID_fk IS NOT NULL AND edr.ProjectID_fk = ${$PROJECTID}

Oracle

SELECT 
	edr.ExecDefRunID_pk_fk PlanRunId, tde.TestDefExecID_pk_fk Id, tde.TestDefID_fk TestId, tde.TestDefName TestName, tde.TestDefDescription Description, tde.Status, sn.StatusName, sr.ReasonText StatusReason,
	COALESCE(mtr.IsBlocked, 0) IsBlocked, tde.Duration,
	extract(day from(tde.ExecutionTimestamp - to_timestamp('1970-01-01', 'YYYY-MM-DD'))) * 86400000 + to_number(to_char(tde.ExecutionTimestamp, 'SSSSSFF3')) ExecutionTimestamp,
	edr.ProductName, edr.VersionName, edr.BuildName, mtr.ChangedBy ExecutedBy,
	extract(day from(tde.DbChangedAt - to_timestamp('1970-01-01', 'YYYY-MM-DD'))) * 86400000 + to_number(to_char(tde.DbChangedAt, 'SSSSSFF3')) ChangedAt
FROM TM_TestDefExecutions tde
INNER JOIN TM_ExecDefinitionRuns edr ON tde.ExecDefRunID_fk = edr.ExecDefRunID_pk_fk
INNER JOIN TM_TestDefStatusNames sn ON tde.Status = sn.StatusID_pk
LEFT JOIN TM_ManualTestResults mtr ON (mtr.TestDefExecID_pk_fk = tde.TestDefExecID_pk_fk AND mtr.ChangedAt > mtr.CreatedAt)
LEFT JOIN TM_StatusReasons sr On tde.StatusReasonID_fk = sr.StatusReasonID_pk
WHERE 
	tde.TestDefID_fk IS NOT NULL AND edr.ProjectID_fk = ${$PROJECTID} 

TestPlansReport

SQL Server

WITH ExecPaths(ExecTreeNodeID, PathString, Level)
AS
(
	SELECT 
		NodeID_pk, CONVERT(NVARCHAR(500), '') PathString, 1 AS Level
	FROM 
		TM_ExecTreeNodes
	WHERE
		ParentFolderID_fk IS NULL AND ProjectID_fk IS NOT NULL
	UNION ALL
	SELECT 
		etn.NodeID_pk, CONVERT(NVARCHAR(500), PathString + '/' + etn.NodeName) AS PathString, Level + 1
	FROM 
		TM_ExecTreeNodes etn
	INNER JOIN ExecPaths ep ON ep.ExecTreeNodeID = etn.ParentFolderID_fk
	WHERE 
		Level < 100
)
SELECT 
	etn.NodeID_pk Id, etn.NodeName Name, etn.Description, paths.PathString Path, at.AssignedTests,
	enu.UserID_pk_fk ManualTester, c.Name Configuration, tc.Name TestContainer,
	CAST(DATEDIFF(s, '1970-01-01', cycleConfigSuite.CycleStartDate) AS BIGINT)*1000 CycleStartDate,
	CAST(DATEDIFF(s, '1970-01-01', cycleConfigSuite.CycleEndDate) AS BIGINT)*1000 CycleEndDate,
	cycleConfigSuite.AvailableTimeInCycle,
	CASE WHEN cycleConfigSuite.AvailableTimeInCycle IS NULL THEN NULL ELSE CASE WHEN edr.ExecDefID_fk IS NULL THEN 0 ELSE 1 END   END CycleIsStarted,
	CASE WHEN   cycleConfigSuite.AvailableTimeInCycle IS NULL THEN NULL ELSE CASE WHEN edr.Status = 7 THEN 0 ELSE 1 END END CycleIsFinished,
	enp.ParameterValue AS bc_testplan_iteration,
	CAST(DATEDIFF(s, '1970-01-01', etn.CreatedAt) AS BIGINT)*1000 CreatedAt,
	etn.CreatedBy,
	CAST(DATEDIFF(s, '1970-01-01', etn.ChangedAt) AS BIGINT)*1000 ChangedAt,
	etn.ChangedBy
FROM 
	TM_ExecutionDefinitions ed
INNER JOIN TM_ExecTreeNodes etn ON ed.ExecDefID_pk_fk = etn.NodeID_pk
LEFT JOIN TM_Configurations c ON ed.ConfigurationID_fk = c.ConfigurationID_pk
INNER JOIN TM_TestPlanNodes tc ON ed.TestContainerID_fk = tc.NodeID_pk
INNER JOIN TM_ExecTreeNodes cycleConfigSuite ON etn.ParentFolderID_fk = cycleConfigSuite.NodeID_pk
LEFT JOIN TM_ExecNodes_Users enu ON ed.ExecDefID_pk_fk = enu.ExecNodeID_pk_fk AND cycleConfigSuite.AvailableTimeInCycle IS NOT NULL
LEFT JOIN (SELECT ExecDefID_fk, Status
FROM TM_ExecDefinitionRuns) edr ON edr.ExecDefID_fk = CASE WHEN cycleConfigSuite.AvailableTimeInCycle IS NULL THEN NULL ELSE ed.ExecDefID_pk_fk END
LEFT JOIN TM_ExecNodeParameters enp ON enp.ExecNodeID_fk = ed.ExecDefID_pk_fk AND enp.ParameterName = 'bc_testplan_iteration'
INNER JOIN ExecPaths paths ON etn.ParentFolderID_fk = paths.ExecTreeNodeID
LEFT JOIN (SELECT DISTINCT tn.ExecNodeID,
(
	SELECT (CONVERT(NVARCHAR(MAX), TestDefID_pk_fk)) + ','
	FROM TM_V_ExecNodes_TestDefs edtd
	WHERE edtd.ExecNodeID = tn.ExecNodeID
	ORDER BY edtd.PositionNumber
	FOR XML PATH('')
) AssignedTests
FROM 
	TM_V_ExecNodes_TestDefs tn) at ON ed.ExecDefID_pk_fk = at.ExecNodeID
WHERE 
	etn.ProjectID_fk = ${$PROJECTID}

Oracle

SELECT 
	etn.NodeID_pk Id, etn.NodeName Name, etn.Description, paths.PathString Path, at.AssignedTests,
	enu.UserID_pk_fk ManualTester, c.Name Configuration, tc.Name TestContainer,
	extract(day from(cycleConfigSuite.CycleStartDate -   to_timestamp('1970-01-01', 'YYYY-MM-DD'))) * 86400000 +   to_number(to_char(cycleConfigSuite.CycleStartDate, 'SSSSSFF3'))   CycleStartDate,
	extract(day   from(cycleConfigSuite.CycleEndDate - to_timestamp('1970-01-01',   'YYYY-MM-DD'))) * 86400000 +   to_number(to_char(cycleConfigSuite.CycleEndDate, 'SSSSSFF3'))   CycleEndDate,
	cycleConfigSuite.AvailableTimeInCycle,
	CASE WHEN cycleConfigSuite.AvailableTimeInCycle IS   NULL THEN NULL ELSE CASE WHEN edr.ExecDefID_fk IS NULL THEN 0 ELSE 1 END   END CycleIsStarted,
	CASE WHEN   cycleConfigSuite.AvailableTimeInCycle IS NULL THEN NULL ELSE CASE WHEN   edr.Status = 7 THEN 0 ELSE 1 END END CycleIsFinished,
	enp.ParameterValue AS bc_testplan_iteration,
	extract(day from(etn.CreatedAt -   to_timestamp('1970-01-01', 'YYYY-MM-DD'))) * 86400000 +   to_number(to_char(etn.CreatedAt, 'SSSSSFF3')) CreatedAt,
	etn.CreatedBy,
	extract(day from(etn.ChangedAt -   to_timestamp('1970-01-01', 'YYYY-MM-DD'))) * 86400000 +   to_number(to_char(etn.ChangedAt, 'SSSSSFF3')) ChangedAt,
	etn.ChangedBy
FROM 
	TM_ExecutionDefinitions ed
INNER JOIN TM_ExecTreeNodes etn ON ed.ExecDefID_pk_fk = etn.NodeID_pk
LEFT JOIN TM_Configurations c ON ed.ConfigurationID_fk = c.ConfigurationID_pk
INNER JOIN TM_TestPlanNodes tc ON ed.TestContainerID_fk = tc.NodeID_pk
INNER JOIN TM_ExecTreeNodes cycleConfigSuite ON etn.ParentFolderID_fk = cycleConfigSuite.NodeID_pk
LEFT JOIN TM_ExecNodes_Users enu ON ed.ExecDefID_pk_fk = enu.ExecNodeID_pk_fk AND cycleConfigSuite.AvailableTimeInCycle IS NOT NULL
LEFT JOIN (SELECT ExecDefID_fk, Status
FROM TM_ExecDefinitionRuns) edr ON edr.ExecDefID_fk = CASE WHEN cycleConfigSuite.AvailableTimeInCycle IS NULL THEN NULL ELSE ed.ExecDefID_pk_fk END
LEFT JOIN TM_ExecNodeParameters enp ON enp.ExecNodeID_fk = ed.ExecDefID_pk_fk AND enp.ParameterName = 'bc_testplan_iteration'
LEFT JOIN (SELECT NodeID_pk, SYS_CONNECT_BY_PATH(REPLACE(etn.NodeName, '/', '-'), '/') AS PathString FROM TM_ExecTreeNodes etn
WHERE 
	etn.ISLEAF = 0 START WITH etn.ParentFolderID_fk IS NULL
CONNECT BY PRIOR NodeID_pk = ParentFolderID_fk) paths ON paths.NodeID_pk = etn.ParentFolderID_fk 
LEFT JOIN (SELECT ExecNodeID, xmlagg (xmlelement(e, TestDefID_pk_fk || ',')).extract ('//text()').GetClobVal()AssignedTests
FROM TM_V_ExecNodes_TestDefs
INNER JOIN TM_ExecTreeNodes ON ExecNodeID = NodeID_pk
WHERE ProjectID_fk = ${$PROJECTID}
GROUP BY ExecNodeID) at ON ed.ExecDefID_pk_fk = at.ExecNodeID
WHERE etn.ProjectID_fk = ${$PROJECTID}

TestPlanRunsReport

SQL Server

SELECT 
	edr.ExecDefRunID_pk_fk Id, edr.ExecDefID_fk testplanid, edr.BuildID_fk, edr.PassedCount, edr.FailedCount, edr.NotExecutedCount, edr.OverallCount,
CAST(DATEDIFF(s, '1970-01-01', edr.ExecutionTimestamp) AS BIGINT)*1000 ExecutionTimestamp,
CAST(DATEDIFF(s, '1970-01-01', edr.DbChangedAt) AS BIGINT)*1000 ChangedAt,
edr.Duration, edr.Status, edr.Starter, p.ParameterValue AS bc_testplan_iteration
FROM 
	TM_ExecDefinitionRuns edr
LEFT JOIN (select DISTINCT tde.ExecDefRunID_fk, eip.ParameterValue
FROM TM_TestDefExecutions tde
INNER JOIN TM_ExecInputParameters eip ON tde.TestDefExecID_pk_fk = eip.ExecutionID_pk_fk
WHERE eip.ParameterName_pk = 'bc_testplan_iteration') p ON p.ExecDefRunID_fk = edr.ExecDefRunID_pk_fk
where ProjectID_fk = ${$PROJECTID}

Oracle

SELECT 
	edr.ExecDefRunID_pk_fk Id, edr.ExecDefID_fk testplanid, edr.BuildID_fk, edr.PassedCount, edr.FailedCount, edr.NotExecutedCount, edr.OverallCount,
	extract(day from(edr.ExecutionTimestamp - to_timestamp('1970-01-01', 'YYYY-MM-DD'))) * 86400000 + to_number(to_char(edr.ExecutionTimestamp, 'SSSSSFF3')) ExecutionTimestamp,
	extract(day from(edr.DbChangedAt - to_timestamp('1970-01-01', 'YYYY-MM-DD'))) * 86400000 + to_number(to_char(edr.DbChangedAt, 'SSSSSFF3')) ChangedAt,
	edr.Duration, edr.Status, edr.Starter, p.ParameterValue AS bc_testplan_iteration
FROM 
	TM_ExecDefinitionRuns edr
LEFT JOIN (select DISTINCT tde.ExecDefRunID_fk, eip.ParameterValue
FROM TM_TestDefExecutions tde
INNER JOIN TM_ExecInputParameters eip ON tde.TestDefExecID_pk_fk = eip.ExecutionID_pk_fk
WHERE eip.ParameterName_pk = 'bc_testplan_iteration') p ON p.ExecDefRunID_fk = edr.ExecDefRunID_pk_fk
WHERE ProjectID_fk = ${$PROJECTID}

 

Top

Installation and Upgrade Information

This section provides additional notes regarding installation. It does not replace the usual installation and upgrade process.

Required Connection Information

To be able to use this Connector, collect and enter the following information in the Micro Focus Connect user interface:

 

Top

Known Issues

Silk Central Connector exposes enumerated fields as strings

Custom enumerated requirement fields are exposed as strings. Future versions may discriminate between enums and strings

Project configuration limitation

If you use custom fields for any supported Silk Central asset, the configured data source project will request the information of these custom fields. The configuration is project-specific, therefore you cannot configure multiple projects for one connection. The configured project must be identical to the project of the data source.

 

Fallback users are not supported

When selecting a fallback user a message will state there are no users.

Top

Technical Notes

 

Top

Need assistance with the product?

Get support enables you to open a support incident or to submit a bug. You can also browse many helpful support resources.

 

Top