IBM Security Identity Adapter for CyberArk 10.0.1 is available. Compatibility, installation, and other getting-started issues are addressed.
Copyright
International Business Machines Corporation 2025. All rights reserved.
US Government Users Restricted Rights -- Use, duplication or disclosure
restricted by GSA ADP Schedule Contract with IBM Corp.
Installation and Configuration Notes
Customizing or Extending Adapter Features
Welcome to the IBM Security Identity Governance and Intelligence CyberArk Adapter.
These Release Notes contain information for the following products that was not available when the IBM Security Identity Governance and Intelligence manuals were printed:
IBM Security Identity Governance and Intelligence CyberArk Adapter Installation and Configuration Guide
The CyberArk Adapter is designed to create and manage User Accounts on the CyberArk platform. The adapter runs in "agentless" mode and communicates using REST API to the systems being managed.
The Identity Adapters are powerful tools that require Administrator Level authority. Adapters operate much like a human system administrator, creating accounts, permissions and home directories. Operations requested from the Identity Manager server will fail if the Adapter is not given sufficient authority to perform the requested task.
Review and agree to the terms of the IBM Security Identity Adapter License prior to using this product. The license can be viewed from the "license" folder included in the product package.
|
Version |
|
|
Build Date |
2025 April 23 04.58.06 |
|
Adapter Version |
10.0.1 |
|
Component Versions |
Adapter build: 10.0.1.10 Profile: 10.0.1.10 Connector: 10.0.1.10 Dispatcher 7.1.39 or higher (packaged separately) |
|
Documentation |
The following guides are available in the IBM Knowledge Center
IBM Security Identity Manager adapter for IBM Cloud Identity Installation and Configuration Guide |
New Features
|
Internal# |
Enhancement # (RFE) |
Description |
|
|
|
Items included in current release version 10.0.1 |
|
SVGAD-3404 |
ADAPT-171 |
ISVG adapter upgrade to support SDI 10: CyberArk |
|
SVGAD-4130 |
|
Add support for CyberArk SCIM Server 2.0 in CyberArk adapter |
|
|
|
Items included in release version 7.1.2 |
|
SVGAD-4053 |
ADAPT-53 |
Certify CyberArk adapter with CyberArk 14.x |
|
RTC 185893 |
Internal - Add filter recon support for ISIM CyberArk adapter |
|
|
|
Items included in release version 7.1.1 |
|
|
|
RTC 185233 |
Internal - Add support on ISIM for CyberArk adapter |
|
|
|
Items included in release version 7.1.0 |
|
|
|
Initial Release |
Closed Issues
|
Internal# |
APAR# |
Description |
|
|
|
Items closed in current release version 10.0.1 |
|
SVGAD-4197 |
|
Internal - CyberArk adapter doesn't support User Type modification and field is editable |
|
|
|
Items closed in current release version 7.1.2 |
|
|
|
None |
|
|
|
Items closed in release version 7.1.1 |
|
|
|
None |
|
|
|
Items closed in release version 7.1.0 |
|
|
|
Initial Release |
Known Issues
|
Internal# |
APAR# |
PMR# / Description |
|
|
|
Password is shown in clear text by REST API while executing user add and password change operation. |
|
|
|
Currently, Resource does not allow to add or modify userType, displayName and nickName attributes. |
|
SVGAD-4175 |
|
Master user account details are not reconciled |
|
SVGAD-4172/SVGAD-4169 |
|
Assigning containers to user account will only assign default rights of container for that user |
|
SVGAD-4172/SVGAD-4169 |
|
User Account's container entitlements as a part of assigned groups is not displayed against given user account, only explicit containers entilement assigned to user account is displayed |
|
|
|
For CyberArk SCIM Server 2.0, emails & middlename user account attribute are not getting reconciled |
|
|
|
For CyberArk SCIM Server 2.0, displayName user account attribute is not in sync with CyberArk Password Vault Web Administrator UI |
See the IBM Security Identity Governance and Intelligence Adapter Installation and Configuration Guide for detailed instructions.
The Adapter Installation and Configuration Guide can be obtained from the IBM Knowledge Center at IBM Knowledge Center
No updates for the current release
No updates for the current release
Directory Integrator:
(Update the description as below:)
Refer the release notes for the currently supported versions
IBM Security Verify server:
(Update the description as below:)
Refer the release notes for the currently supported versions
CyberArk SCIM Server:
(Update the description as below:)
Refer the release notes for the currently supported versions
(Replace existing content under
with below content)
Download Jars listed below (refer release notes for the supported
jar versions) and copy them to the Security Directory Integrator environment:
· httpclient
· httpcore
· jackson-annotations
· jackson-core
· jackson-databind
· commons-codec
(Please add new section "Installing ILMT-Tags" File under the section Installing >
Installing ILMT-Tags in install guide.)
Before you begin
- The Dispatcher must be installed
Procedure:
- Copy the files in the ILMT-Tags folder to the specified location:
· Windows: <SDI-HOME>/swidtag
· Unix/Linux: <SDI-HOME>/swidtag
(Replace jars list with below ones)
· httpclient-*.jar
· httpcore-*.jar
· jackson-annotations-*.jar
· jackson-core-*.jar
· jackson-databind-*.jar
· commons-codec-*.jar
Under Connection Details section
(Add below detail)
Enable CyberArk SCIM Server 2.0
Check this option if CyberArk SCIM Server 2.0 service needs to be used
About this task
This procedure is applicable to install this adapter on the virtual appliance.
Procedure
1. Download the adapter package from the IBM Passport Advantage.
For example, Adapter-<Adaptername>.zip.
The adapter package includes the following files:
|
Table 1. Adapter package contents |
|
|
Files |
Description |
|
bundledefinition.json |
The adapter definition file. It specifies the content of the package, and the adapter installation and configuration properties that are required to install and update the adapter. |
|
Adapter JAR profile |
A Security Directory Integrator adapter always include a JAR profile which contains:
· targetProfile.json · Service provider configuration · Resource type configuration · List of assembly lines · A set of assembly lines in XML files · A set of forms in XML files · Custom properties that include labels and messages for supported languages.
Use the Target Administration module to import the target profile. |
|
Additional adapter specific files |
Examples of adapter specific files:
· Connector jar files · Configuration files · Script files · Properties files
The file names are specified in the adapter definition file along with the destination directory in the virtual appliance. |
2. From the top-level menu of the Appliance Dashboard, click Configure > SDI Management.
3. Select the instance of the Security Directory Integrator for which you want to manage the adapters and click Manage > SDI Adapters
The SDI Adapters window is displayed with a table that list the name, version, and any comments about the installed adapters.
4. On the SDI Adapters window, click Install.
5. On the File Upload window, click Browse to locate the adapter package and then click OK.
For example, Adapter-<Adaptername>.zip.
6. Provide the missing 3rd party libraries when prompted.
a. On the File Upload for Pre-requisite files window, click Select Files.
A new File Upload window is displayed.
b. Browse and select all the missing libraries. For example, httpclient-4.0.1.jar
c. Click Open.
The selected files are listed in the File Upload for Pre-requisite files window.
d. Click OK.
The missing files are uploaded, and the adapter package is updated with the 3rd party libraries.
7. Enable secure communication.
a. Select the instance of the Security Directory Integrator for which you want to manage the adapter.
b. Click Edit.
c. Click the Enable SSL check box.
d. Click Save Configuration.
8. Import the SSL certificate to the IBM® Security Directory Integrator server.
a. Select the instance of the Security Directory Integrator for which you want to manage the adapter.
b. Click Manage > Certificates.
c. Click the Signer tab.
d. Click Import.
The Import Certificate window is displayed.
e. Browse for the certificate file.
f. Specify a label for the certificate. It can be any name.
g. Click Save.
Note: While uploading the Adapter package, you may receive System Error: A file included in the SDI Adapter zip already exists on the system and the Server Message log under Appliance tab of VA will have a reference to error com.ibm.identity.sdi.SDIManagementService E File ibm.com_IBM_Verify_Identity_Governance_xxxx.swidtag found in the adapter zip at location ILMT-Tags/ already exists in system. This is because, you can install the same swidtags only once. So, if another adapter of the same type is installed, remove the swidtags.
The ibm.com_IBM_Verify_Identity_Governance_Enterprise-xxxx.swidtag file is common to all adapters. In addition to the common swidtag file, an application adapter needs ibm.com_IBM_Verify_Identity_Governance_Application_Adapters-xxxx.swidtag file and an infra adapter needs ibm.com_IBM_Verify_Identity_Governance_Lifecycle-xxxx.swidtag and ibm.com_IBM_Verify_Identity_Governance_Compliance-xxxx.swidtag files. So, if an application adapter is already installed and this is an infra adapter, then only install the infra-specific swidtags and the other way around. Please visit Security Verify Governance Adapters v10.x link to identify the adapter type of the installed adapters.
Before you begin
The steps to install adapter and related files into the container can be performed using the adapterUtil.sh script, which is shipped with the dispatcher package. This script should be staged on the machine running Kubernetes cli. The adapterUtil.sh script is also readily available in the bin directory of ISIM IBM Security Verify Governance Identity Manager Container Starter Kit installation directory (If ISVDI was selected for installation during the ISIM container installation steps).
If, for any reason, the adapter util script cannot be executed or used, the below manual instructions must be followed to copy the files to the persistent volume.
Note: The container must be restarted after installing or uninstalling the adapter and any changes to the configuration yaml. To activate changes and restart the container run the following commands:
· <path_to_starterkit>/bin/createConfigs.sh isvdi
· For OpenShift container: oc -n isvgim rollout restart deployment isvdi
· For Kubernetes container: kubectl -n isvgim rollout restart deployment isvdi
Note: This document only describes the adapterUtil.sh command options that are required to install this adapter. For other command options, such as listing installed connectors and 3rd party jars, please refer to the Dispatcher10 Installation and Configuration Guide.
Installing / Upgrading / Re-installing / Downgrading the adapter
Using Script
Use below command to install / upgrade/ re-install / downgrade the adapter:
/path/to/adapterUtil.sh -loadAdapter "/path/to/Adapter-cyberark-*.zip" accept
Where /path/to/adapterUtil.sh is the location where the adapterUtil.sh script is installed and /path/to/Adapter-cyberark-*.zip is the location where the Adapter zip file is staged on the machine running Kubernetes cli.
Manually copying files to Persistent Volume
Copy the files to the persistent volume mapped to the /opt/IBM/svgadapters directory of the container image as per the given directory structure:
CyberArkConnector.jar
Copy this file to <Persistent_Volume>/jars/connectors directory.
ILMT-Tags
Copy below files to <Persistent_Volume>/swidtag directory:
· ibm.com_IBM_Verify_Identity_Governance_Compliance-11.0.0.swidtag
· ibm.com_IBM_Verify_Identity_Governance_Enterprise-11.0.0.swidtag
· ibm.com_IBM_Verify_Identity_Governance_Lifecycle-11.0.0.swidtag
Copying 3rd party libraries:
Using Script
Use below command to copy 3rd party jars:
/path/to/adapterUtil.sh -copyToPatches "/path/to/httpclient-*.jar"
/path/to/adapterUtil.sh -copyToPatches "/path/to/httpcore-*.jar"
/path/to/adapterUtil.sh -copyToPatches "/path/to/jackson-annotations-*.jar"
/path/to/adapterUtil.sh -copyToPatches "/path/to/jackson-core-*.jar"
/path/to/adapterUtil.sh -copyToPatches "/path/to/jackson-databind-*.jar"
/path/to/adapterUtil.sh -copyToPatches "/path/to/commons-codec-*.jar"
This command will copy the 3rd party jars to <Persistent_Volume>/jars/patches directory.
Manually copying files to Persistent Volume
Copy below 3rd party jar files to <Persistent_Volume>/jars/patches directory (Refer release notes for the supported jar versions):
· httpclient-*.jar
· httpcore-*.jar
· jackson-annotations-*.jar
· jackson-core-*.jar
· jackson-databind-*.jar
· commons-codec-*.jar
Configuring the SSL connection between the IBM Security Verify Directory Integrator Container and the CyberArk Target
Uploading the certificates
For non-ISVG-IM container env, download the root certificate / Signer Certificate from the secured URL of the CyberArk Target and place the certificate in the certs directory of config volume which contains the config.yaml file. The default location for this config volume is /opt/IBM/dispatcher/config.
For ISVG-IM container env, copy the downloaded root certificate files to the machine that runs the adapter in the <path_to_starterkit>/config/certs directory:
cp <path_to_certificate_that_was_downloaded_from_cyberark_target> <path_to_starterkit>/config/certs
e.g.
cp /home/ibmuser/DigiCertGlobalRootCA.pem /root/isvg/config/certs
Refer https://www.ibm.com/docs/api/v1/content/SSCQGF_10.0.0/container/html/verify-directory-integrator.html#keyfile_trusted-certificates page from SVDI.
If the config.yaml file which is used as the YAML_CONFIG_FILE environment variable for the container doesn't have a trusted-certificates element, follow the instructions that are provided in https://www.ibm.com/docs/api/v1/content/SSCQGF_10.0.0/container/html/verify-directory-integrator.html#keyfile_trusted-certificates to add a trusted-certificates section to the config.yaml file.
Provide this path of the certificate in config.yaml file as shown in the example below:
keyfile:
trusted-certificates:
- '@/opt/IBM/dispatcher/config/certs/ca_cert.pem'
Updating the container
Using Script
To update the dispatcher container with the new certificate using the ISVG-IM starter kit, run the following commands:
· <path_to_starterkit>/bin/createConfigs.sh isvdi
· For OpenShift container: oc -n isvgim rollout restart deployment isvdi
· For Kubernetes container: kubectl -n isvgim rollout restart deployment isvdi
Manually
To update the dispatcher container with the new certificate on Kubernetes/OpenShift, now run the following commands to create a config map and update the dispatcher specific yaml:
<kubectl or oc > create configmap <namespace> --from-file=<path to main isvdi config yaml> --from-file=<directory where certificates are stored> --dry-run=client -o yaml –namespace=<namespace where dispatcher container resides> > <path_to_dispatcher_container_that_runs_this_adapter_yaml>
e.g.
kubectl create configmap isvgimsdi --from-file=/root/isvg/config/adapters/isvdi_config.yaml --from-file=/root/isvg/config/certs --dry-run=client -o yaml --namespace=isvgim > /root/isvg/yaml/045-config-adapters.yaml
Then apply the updated dispatcher that runs this adapter yaml.
<kubectl or oc> apply -f <path_to_dispatcher_container_that_runs_this_adapter_yaml>
e.g.
oc apply -f /root/isvg/yaml/045-config-adapters.yaml
Finally restart the container
<kubectl or oc> rollout restart deployment <isvdi container deployment>
e.g.
oc -n isvgim rollout restart deployment isvdi
Enabling TLS 1.2
Refer https://www.ibm.com/docs/api/v1/content/SSCQGF_10.0.0/container/html/verify-directory-integrator.html#advanced page from SVDI.
If the config.yaml file which is used as the YAML_CONFIG_FILE environment variable for the container doesn't have an advanced configuration element, follow the instructions that are provided in https://www.ibm.com/docs/api/v1/content/SSCQGF_10.0.0/container/html/verify-directory-integrator.html#advanced to add an advanced configuration section to the config.yaml file.
To enable TLSv1.2, add 2 attr and value (key pair as mentioned in the SVDI guide) as below:
- attr: com.ibm.di.SSLProtocols
value: 'TLSv1.2'
- attr: com.ibm.di.SSLServerProtocols
value: 'TLSv1.2'
Note: The container must be restarted after making these changes to the configuration yaml. To activate changes and restart the container run the following commands:
· <path_to_starterkit>/bin/createConfigs.sh isvdi
· For OpenShift container: oc -n isvgim rollout restart deployment isvdi
· For Kubernetes container: kubectl -n isvgim rollout restart deployment isvdi
Enabling debug logs and disabling json-logging
Refer https://www.ibm.com/docs/api/v1/content/SSCQGF_10.0.0/container/html/verify-directory-integrator.html#general_logging page from SVDI.
If the config.yaml file which is used as the YAML_CONFIG_FILE environment variable for the container doesn't have root-level and json-logging configuration elements, follow the instructions that are provided in https://www.ibm.com/docs/api/v1/content/SSCQGF_10.0.0/container/html/verify-directory-integrator.html#general_logging to the add root-level and json-logging configuration elements section to the config.yaml file.
To enable debug logs, set value for root-level to debug and to disable json logging, set value for json-logging element to false.
Note: The container must be restarted after making these changes to the configuration yaml. To activate changes and restart the container run the following commands:
· <path_to_starterkit>/bin/createConfigs.sh isvdi
· For OpenShift container: oc -n isvgim rollout restart deployment isvdi
· For Kubernetes container: kubectl -n isvgim rollout restart deployment isvdi
Uninstalling the adapter
Using Script
Use below command to remove the adapter:
/path/to/adapterUtil.sh -removeAdapter Adapter-cyberark
Manually copying files to Persistent Volume
Remove files from the given directory structure of the persistent volume mapped to /opt/IBM/svgadapters directory of the container image.
Note: Some 3rd party jars and ILMT-Tags files might be common with other installed adapters, and hence should not be removed while uninstalling this adapter:
CyberArkConnector.jar
Remove this file from <Persistent_Volume>/jars/connectors directory.
ILMT-Tags
Remove below files from <Persistent_Volume>/swidtag directory:
· ibm.com_IBM_Verify_Identity_Governance_Compliance-11.0.0.swidtag
· ibm.com_IBM_Verify_Identity_Governance_Enterprise-11.0.0.swidtag
· ibm.com_IBM_Verify_Identity_Governance_Lifecycle-11.0.0.swidtag
3rd party jars
Remove appropriate version of 3rd party jar files used by this adapter listed below from <Persistent_Volume>/jars/patches directory:
· httpclient-*.jar
· httpcore-*.jar
· jackson-annotations-*.jar
· jackson-databind-*.jar
· jackson-core-*.jar
· commons-codec-*.jar
(Add this section Adapter Installation and Configuration Guide)
Enabling TLSv1.2 in Security Directory Integrator
Procedure:
1. Apply recommended fix packs and limited availability (LA) versions on the Security Directory Integrator. See Recommended fixes for IBM Tivoli Directory Integrator (TDI) & IBM Security Directory Integrator (SDI).
2. After applying the appropriate updates, modify the /solution.properties file by appending the following text to the bottom of the file:
Enabling DEBUG Logs on SDI Server
Procedure:
1. Stop the SDI Server process
Pre-7.2.0-ISS-SDI-FP0008
2. Edit the <SDI_Solution_Directory>/etc/log4j.properties
3. Modify the following line:
log4j.rootCategory=INFO, Default
to
log4j.rootCategory=DEBUG, Default
Post-7.2.0-ISS-SDI-FP0008
2. Edit the <SDI_HOME>/etc/log4j2.xml
3. Modify the following line:
<Root level="info">
to
<Root level="debug">
Post-7.2.0-ISS-SDI-FP0011 (To enable TCB block in debug)
4. Append the line com.ibm.di.logging.close=false in the <SDI_HOME >/etc/global.properties file.
5. Start the SDI Server process
6. Re-create the problem and collect the /logs/ibmdi.log
Logs are not getting printed in FP13 in Windows OS
Procedure:
1. Copy log4j2.xml file from <SDI_Home_Dir>/etc and add to the <SDI_Solution_Dir>/etc (which was missing there).
2. Configure <SDI_Solution_Dir>/ibmdiservice.props with below parameter:
jvmcmdoptions=-Dlog4j2.configurationFile=etc\log4j2.xml
3. Restart SDI Server process
No updates for the current release
No updates for the current release
The IBM Security Identity Manager adapters can be customized and/or extended. The type and method of this customization may vary from adapter to adapter.
Refer to the ‘IBM Security Identity Adapter Development and Customization Guide’
Support for Customized Adapters
The integration to the IBM Security Identity Manager server "the adapter framework" is supported. However, IBM does not support the customizations, scripts, or other modifications. If you experience a problem with a customized adapter, IBM Support may require the problem to be demonstrated on the GA version of the adapter before a Case is opened.
Supported third-party client libraries:
· httpclient-4.5.14.jar
https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient/4.5.14
· httpcore-4.4.16.jar
https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore/4.4.16
· jackson-annotations-2.18.0.jar
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.18.0/jackson-annotations-2.18.0.jar
· jackson-core-2.18.0.jar
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core/2.18.0
· jackson-databind-2.18.0.jar
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.18.0
· commons-codec-1.18.0.jar
https://mvnrepository.com/artifact/commons-codec/commons-codec/1.18.0
Installation Platform
The CyberArk Adapter was built and tested on the following product versions.
Adapter Installation Platform
IBM Security Directory Integrator 7.2 + FP14
IBM Security Verify Directory Integrator 10.0.0
+ LA0002*
* The Dispatcher version 10.0.2 doesn't support installation using LA0002, please
install the Dispatcher10 prior to installing LA0002.
Earlier versions of SDI that are still supported may function properly, however to resolve any communication errors, you must upgrade your SDI releases to the officially supported versions by the adapters.
Managed Resource
CyberArk Self-Hosted PAM 14.0.0
IBM Verify Identity Governance v11.0
IBM Security Verify Governance Identity Manager v10.0*
IBM Security Verify Governance v10.0
*Unless this document specifies a specific fix pack version of ISVG Identity Manager v10, we expect the adapter to work with ISIM 6 as well. However, it will only be debugged and fixed from the perspective of ISVG-IM v10
This information was developed for products and services offered in
the U.S.A. IBM may not offer the products, services, or features discussed in
this document in other countries. Consult your local IBM representative for
information on the products and services currently available in your area. Any
reference to an IBM product, program, or service is not intended to state or
imply that only that IBM product, program, or service may be used. Any
functionally equivalent product, program, or service that does not infringe any
IBM intellectual property right may be used instead. However, it is the user's
responsibility to evaluate and verify the operation of any non IBM product,
program, or service.
IBM may have patents or pending patent applications covering subject matter
described in this document. The furnishing of this document does not give you
any license to these patents. You can send license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785 U.S.A.
For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual Property Department in your country or send inquiries, in writing, to:
Intellectual Property Licensing
Legal and Intellectual Property Law
IBM Japan, Ltd.
1623-14, Shimotsuruma, Yamato-shi
Kanagawa 242-8502 Japan
This information could include
technical inaccuracies or typographical errors. Changes are periodically made
to the information herein; these changes will be incorporated in new editions
of the publication. IBM may make improvements and/or changes in the product(s)
and/or the program(s) described in this publication at any time without notice.
Any references in this information to non-IBM Web sites are provided for
convenience only and do not in any manner serve as an endorsement of those Web
sites. The materials at those Web sites are not part of the materials for this
IBM product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it
believes appropriate without incurring any obligation to you.
Licensees of this program who wish to have information about it for the purpose
of enabling: (i) the exchange of information between independently created
programs and other programs (including this one) and (ii) the mutual use of the
information which has been exchanged should contact:
IBM Corporation
2ZA4/101
11400 Burnet Road
Austin, TX 78758 U.S.A.
Such information may be available, subject to appropriate terms
and conditions, including in some cases, payment of a fee.
The licensed program described in this information and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Program License Agreement, or any equivalent agreement
between us.
Any performance data contained herein was determined in a controlled
environment. Therefore, the results obtained in other operating environments
may vary significantly. Some measurements may have been made on
development-level systems and there is no guarantee that these measurements
will be the same on generally available systems. Furthermore, some measurements
may have been estimated through extrapolation. Actual results may vary. Users
of this document should verify the applicable data for their specific
environment.
Information concerning non-IBM products was obtained from the suppliers of
those products, their published announcements or other publicly available
sources. IBM has not tested those products and cannot confirm the accuracy of
performance, compatibility or any other claims related to non-IBM products.
Questions on the capabilities of non-IBM products should be addressed to the
suppliers of those products.
Trademarks
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of
International Business Machines Corp., registered in many jurisdictions
worldwide. Other product and service names might be trademarks of IBM or other
companies. A current list of IBM trademarks is available on the Web at
"Copyright and trademark information" at www.ibm.com/legal/copytrade.shtml.
Microsoft, Windows, and the Windows logo are trademarks of Microsoft
Corporation in the United States, other countries, or both.
Java and all Java-based trademarks and logos are trademarks or registered
trademarks of Oracle and/or its affiliates.