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 2018 - 2023 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? |
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.
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.
This connector requires at least build 23.4 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
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:
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}
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}
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}
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}
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}
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}
This section provides additional notes regarding installation. It does not replace the usual installation and upgrade process.
To be able to use this Connector, collect and enter the following information in the Micro Focus Connect user interface:
Custom enumerated requirement fields are exposed as strings. Future versions may discriminate between enums and strings
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.
When selecting a fallback user a message will state there are no users.
Get support enables you to open a support incident or to submit a bug. You can also browse many helpful support resources.