From b6210bb528604667d1f28d14fea25a19b9dca349 Mon Sep 17 00:00:00 2001 From: kesavan Date: Thu, 18 Apr 2019 13:05:16 +0530 Subject: [PATCH 1/2] Fix to support EI-6.5.0. Fixed integration tests to support EI. Automated the process of certificate addition to keystore. Created the git documentation. --- .gitignore | 30 +- README.md | 36 +- docs/aggregate.md | 141 +++ docs/config.md | 74 ++ docs/fault_handler_sequence.md | 92 ++ docs/import_set.md | 249 +++++ docs/table.md | 890 ++++++++++++++++++ pom.xml | 317 +++++-- ...py of ESB here.txt => copy of EI here.txt} | 0 .../esb-connector-servicenow.properties | 4 + src/main/assembly/assemble-connector.xml | 1 + src/test/INTEGRATION-TEST.md | 65 ++ src/test/INTEGRATION-TEST.txt | 75 -- .../ServiceNowConnectorIntegrationTest.java | 10 +- src/test/resources/TestOrder | 1 + .../connector/config/servicenow.properties | 8 +- src/test/resources/automation.xml | 271 ++++++ src/test/resources/automationXMLSchema.xsd | 573 +++++++++++ .../modules/addressing-1.6.1-wso2v10.mar | Bin 31350 -> 0 bytes .../modules/addressing-1.6.1-wso2v23.mar | Bin 0 -> 31666 bytes .../client/modules/rampart-1.6.1-wso2v26.mar | Bin 0 -> 9366 bytes .../client/modules/rampart-1.6.1-wso2v8.mar | Bin 9708 -> 0 bytes src/test/resources/instrumentation.txt | 69 +- .../keystores/products/client-truststore.jks | Bin 36573 -> 102330 bytes .../resources/keystores/products/store.jks | Bin 6377 -> 0 bytes .../keystores/products/wso2carbon.jks | Bin 34593 -> 44122 bytes src/test/resources/log4j.properties | 43 + src/test/resources/testng.xml | 12 +- 28 files changed, 2766 insertions(+), 195 deletions(-) create mode 100644 docs/aggregate.md create mode 100644 docs/config.md create mode 100644 docs/fault_handler_sequence.md create mode 100644 docs/import_set.md create mode 100644 docs/table.md rename repository/{copy of ESB here.txt => copy of EI here.txt} (100%) create mode 100644 repository/esb-connector-servicenow.properties create mode 100644 src/test/INTEGRATION-TEST.md delete mode 100644 src/test/INTEGRATION-TEST.txt create mode 100644 src/test/resources/TestOrder create mode 100644 src/test/resources/automation.xml create mode 100644 src/test/resources/automationXMLSchema.xsd delete mode 100755 src/test/resources/client/modules/addressing-1.6.1-wso2v10.mar create mode 100644 src/test/resources/client/modules/addressing-1.6.1-wso2v23.mar create mode 100644 src/test/resources/client/modules/rampart-1.6.1-wso2v26.mar delete mode 100755 src/test/resources/client/modules/rampart-1.6.1-wso2v8.mar mode change 100755 => 100644 src/test/resources/keystores/products/client-truststore.jks delete mode 100755 src/test/resources/keystores/products/store.jks mode change 100755 => 100644 src/test/resources/keystores/products/wso2carbon.jks create mode 100644 src/test/resources/log4j.properties diff --git a/.gitignore b/.gitignore index 32858aa..56481b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,32 @@ +# Ignore everything in this directory +target +.classpath +.settings +.project +*.iml +*.iws +*.ipr +.idea *.class -# Mobile Tools for Java (J2ME) -.mtj.tmp/ # Package Files # -*.jar *.war *.ear -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* +# ignore Intellij-IDEA files +*.iml +*.ipr +*.iws +*.classpath +*.settings +*.project +*.idea +.DS_Store + +# ignore logs +*.log + +# ignore target directories +target/ +*.*~ diff --git a/README.md b/README.md index bfae359..adeefae 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,35 @@ -###ServiceNow ESB Connector +### ServiceNow WSO2 EI Connector -The ServiceNow connector allows you to access the ServiceNow REST API through the WSO2 ESB. ServiceNow is a software platform that supports IT service management and automates common business processes. +The ServiceNow [connector](https://docs.wso2.com/display/EI640/Working+with+Connectors) allows you to access the [ServiceNow REST API](https://developer.servicenow.com/app.do#!/rest_api_doc?v=madrid&id=c_TableAPI) through WSO2 EI. ServiceNow is a software platform that supports IT service management and automates common business processes. This software as a service (SaaS) platform contains a number of modular applications that can vary by instance and user. +## Compatibility -###Build +| Connector version | Supported ServiceNow API version | Supported WSO2 ESB/EI version | +| ------------- | ------------- | ------------- | +| [1.0.1](https://github.com/wso2-extensions/esb-connector-servicenow/tree/org.wso2.carbon.connector.servicenow-1.0.1) | v32.0 | ESB 4.9.0, 5.0.0 | -mvn clean install +## Getting started -###How You Can Contribute +#### Download and install the connector -You can create a third party connector and publish in WSO2 Connector Store. +1. Download the connector from the [WSO2 Store](https://store.wso2.com/store/assets/esbconnector/details/74999163-6706-41f6-a564-61479b99918f) by clicking the Download Connector button. +2. Then you can follow this [Documentation](https://docs.wso2.com/display/EI640/Working+with+Connectors+via+the+Management+Console) to add and enable the connector via the Management Console in your EI instance. +3. For more information on using connectors and their operations in your EI configurations, see [Using a Connector](https://docs.wso2.com/display/EI640/Using+a+Connector). +4. If you want to work with connectors via EI tooling, see [Working with Connectors via Tooling](https://docs.wso2.com/display/EI640/Working+with+Connectors+via+Tooling). -https://docs.wso2.com/display/ESBCONNECTORS/Creating+a+Third+Party+Connector+and+Publishing+in+WSO2+Connector+Store +#### Configuring the connector operations + +To get started with ServiceNow connector and their operations, see [Configuring ServiceNow Operations](docs/config.md). + + +## Building From the Source + +Follow the steps given below to build the ServiceNow connector from the source code: + +1. Get a clone or download the source from [Github](https://github.com/wso2-extensions/esb-connector-servicenow). +2. Run the following Maven command from the `esb-connector-servicenow` directory: `mvn clean install`. +3. The ServiceNow connector zip file is created in the `esb-connector-servicenow/target` directory + +## How You Can Contribute + +As an open source project, WSO2 extensions welcome contributions from the community. +Check the [issue tracker](https://github.com/wso2-extensions/esb-connector-servicenow/issues) for open issues that interest you. We look forward to receiving your contributions. diff --git a/docs/aggregate.md b/docs/aggregate.md new file mode 100644 index 0000000..d3467e8 --- /dev/null +++ b/docs/aggregate.md @@ -0,0 +1,141 @@ +# Working with Aggregate API in ServiceNow + +The getAggregateRecord operation Allow to compute aggregate statistics about existing table and column data. + +**getAggregateRecord** +```xml + + {$ctx:tableName} + {$ctx:sysparmAvgFields} + {$ctx:sysparmMinFields} + {$ctx:sysparmMaxFields} + {$ctx:sysparmCount} + {$ctx:sysparmSumFields} + +``` + +**Properties** +* tableName: Name of the table you want to retrieve a record. +* sysparmAvgFields: A comma-separated list of fields for which to calculate the average value. +* sysparmMinFields: A comma-separated list of fields for which to calculate the minimum value. +* sysparmMaxFields: A comma-separated list of fields for which to calculate the maximum value. +* sysparmCount: You can set this parameter to true for the number of records returned by the query. +* sysparmSumFields: A comma-separated list of fields for which to calculate the sum of the values. + +**Sample request** + +Following is a sample request that can be handled by the getAggregateRecord operation. + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableName":"incident", + "sysparmAvgFields":"category,active", + "sysparmMinFields":"number", + "sysparmMaxFields":"number", + "sysparmCount":"true", + "sysparmSumFields":"priority" +} +``` +**Sample response** + +Given below is a sample response for the getAggregateRecord operation. + +```json +{ + "result":{ + "stats":{ + "count":"89" + } + } +} +``` + +**Related ServiceNow documentation** + +https://developer.servicenow.com/app.do#!/rest_api_doc?v=jakarta&id=r_AggregateAPI-GET + +### Sample configuration + +Following example illustrates how to connect to ServiceNow with the init operation and getAggregateRecord operation. + +1. Create a sample proxy as below : + +```xml + + + + + + + + + + + + + + + {$ctx:serviceNowInstanceURL} + {$ctx:username} + {$ctx:password} + + + {$ctx:tableName} + {$ctx:sysparmAvgFields} + {$ctx:sysparmMinFields} + {$ctx:sysparmMaxFields} + {$ctx:sysparmCount} + {$ctx:sysparmSumFields} + + + + + + + + + + +``` + +2. Create a json file named getAggregateRecord.json and copy the configurations given below to it: + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableName":"incident", + "sysparmAvgFields":"category,active", + "sysparmMinFields":"number", + "sysparmMaxFields":"number", + "sysparmCount":"true", + "sysparmSumFields":"priority" +} +``` +3. Replace the credentials with your values. + +4. Execute the following curl command: + +```bash +curl http://localhost:8280/services/getAggregateRecord -H "Content-Type: application/json" -d @getAggregateRecord.json +``` +5. ServiceNow returns a json response similar to the one shown below: + +```json +{ + "result":{ + "stats":{ + "count":"89" + } + } +} +``` diff --git a/docs/config.md b/docs/config.md new file mode 100644 index 0000000..ce1e148 --- /dev/null +++ b/docs/config.md @@ -0,0 +1,74 @@ +# Configuring Salesforce REST Operations + +[[Prerequisites]](#Prerequisites) [[Initializing the connector]](#initializing-the-connector) + +## Prerequisites + +To use the ServiceNow connector, add the element in your configuration before carrying out any other ServiceNow operations. + +The ServiceNow API requires all requests to be authenticated as a user. User has to create a own instance with his user credentials. When u create a account in ServiceNow Developer page then you are enable to create your own instance. For more information, see https://developer.servicenow.com/app.do#!/home + +### Obtaining user credentials + +* **Create a ServiceNow instance using serviceNow developer site and derive the username and password** + + 1. Using the URL "https://developer.servicenow.com/app.do#!/home" register a ServiceNow account. + 2. Login to the created Service-Now account and go to Manage >> Instance and request an instance. + 3. Then you will get a username and password for your instance with instance URL. you can change your password by going Action >> Reset admin password. + 4. In your instance you will get three types of APIs and some pre defined tables. + + +### Importing the ServiceNow Certificate + +Before you start configuring the connector, import the ServiceNow certificate to your EI client keystore. + +* Follow the steps below to import the ServiceNow certificate into the EI client keystore: + + 1. To view the certificate, log in to your ServiceNow account using your browser (e.g., https://dev62519.service-now.com/), and click the lock on the address bar. + 2. Export the certificate to the file system. + 3. Import the certificate to the EI client keystore using either the following command or the EI Management Console: + ``` + keytool -importcert -file -keystore /repository/resources/security/client-truststore.jks -alias "ServiceNow" + ``` + 4. Restart the server and deploy the ServiceNow configuration. + +## Initializing the connector + +Add the following method in your configuration: + +#### init +```xml + + {$ctx:serviceNowInstanceURL} + {$ctx:username} + {$ctx:password} + +``` +**Properties** +* serviceNowInstanceURL: The base endpoint URL of the ServiceNow API. +* username : The user Name of the own instance. +* password : The Password of the own instance. + +**Sample Request** + +Following is a sample REST request that can be handled by the init operation. + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345" +} +``` + +**Related documentation** + +http://wiki.servicenow.com/index.php?title=REST_API#gsc.tab=0 + +Now that you have connected to ServiceNow, use the information in the following topics to perform various operations with the connector. Also, see [Configuring the ServiceNow Connector Fault Handler Sequence]((fault_handler_sequence.md)). + +[Working with Aggregate API in ServiceNow](aggregate.md) + +[Working with Import Set API in ServiceNow](import_set.md) + +[Working with Table API in ServiceNow](table.md) diff --git a/docs/fault_handler_sequence.md b/docs/fault_handler_sequence.md new file mode 100644 index 0000000..d6f0e47 --- /dev/null +++ b/docs/fault_handler_sequence.md @@ -0,0 +1,92 @@ +# Configuring the ServiceNow Fault Handler Sequence + +Following is a sample proxy service and fault handler sequence that you can use as a starting point for handling faults when integrating with ServiceNow. You can customize this sample based on your requirement. + +**Sample Proxy** +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` +**faultHandlerSeq** +```xml + + + + + + {"error_code":"$1", "error_message":"$2"} + + + + + + + + + + + + + + + $1 + $2 + + + + + + + + + + + + +``` diff --git a/docs/import_set.md b/docs/import_set.md new file mode 100644 index 0000000..fa9fa4c --- /dev/null +++ b/docs/import_set.md @@ -0,0 +1,249 @@ +# Working with Import Set API in ServiceNow + +[[Overview]](#overview) [[Operation details]](#operation-details) [[Sample configuration]](#sample-configuration) + +### Overview + +The following operations allow you to work with Import Set API. Click an operation name to see details on how to use it. +For a sample proxy service that illustrates how to work with Import Set API, see [Sample configuration](#sample-configuration). + +| Operation | Description | +| ------------- |-------------| +| [getRecordsStagingTable](#retrieving-the-associated-record) | This method retrieves the associated record and resulting transformation result. | +| [queryEventMonitoringData](#Inserts-incoming-data-into-a-specified-staging-table) | This method inserts incoming data into a specified staging table and triggers transformation based on predefined transform maps in the import set table. | + +### Operation details + +This section provides more details on each of the operations related to Import Set API. + +#### Retrieving the associated record + +The getRecordStagingTable operation retrieves the associated record and resulting transformation result. + +**getRecordsStagingTable** +```xml + + {$ctx:tableNameStaging} + {$ctx:sysIdStaging} + +``` +**Properties** + +* tableNameStaging : Name of the staging table you want to retrieve records. +* sysIdStaging : The Id which is automatically generated by ServiceNow. It is unique value for each record. + +**Sample request** + +Following is a sample request that can be handled by the getRecordsStagingTable operation. + +```json + +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableNameStaging":"imp_computer", + "serialNumber":"282", + "cpuCount":"234", + "name":"Mac", + "operatingSystem":"ubunthu", + "manufacturer":"IBM", + "diskSpace":"400Gb", + "ram":"ram 1500", + "apiColumns": {"sys_mod_count":"2","sys_import_state_comment":"wwww"} +} +``` +**Sample response** + +Given below is a sample response for the getRecordsStagingTable operation. + +```json +{ + "import_set":"ISET0010001", + "staging_table":"imp_computer", + "result":[ + { + "transform_map":"Computer", + "table":"cmdb_ci_computer", + "display_name":"name", + "display_value":"Mac", + "record_link":"https://dev17686.service-now.com/api/now/table/cmdb_ci_computer/201bea46dbb033004f281120399619c1", + "status":"inserted", + "sys_id":"201bea46dbb033004f281120399619c1", + "status_message":"wwww" + } + ] +} +``` + +**Related ServiceNow documentation** + +https://developer.servicenow.com/app.do#!/rest_api_doc?v=jakarta&id=r_ImportSetAPI-GET + +#### Inserts incoming data into a specified staging table + +To retrieve the field values from a record, use salesforcerest.queryEventMonitoringData and specify the following properties. + +**postRecordStagingTable** +```xml + + {$ctx:tableNameStaging} + {$ctx:serialNumber} + {$ctx:cpuCount} + {$ctx:manufacturer} + {$ctx:name} + {$ctx:operatingSystem} + {$ctx:diskSpace} + {$ctx:ram} + {$ctx:apiColumns} + +``` +**Properties** +* tableNameStaging : Name of the staging table you want to retrieve records.. +* serialNumber : This is an attribute in the table. Specify the row value for serialNumber . +* cpuCount : This is an attribute in the table. Specify the row value for cpuCount . +* manufacturer : This is an attribute in the table. Specify the row value for manufacturer. +* name: This is an attribute in the table. Specify the row value for name. +* operatingSystem: This is an attribute in the table. Specify the row value for operatingSystem . +* diskSpace: This is an attribute in the table. Specify the row value for diskSpace . +* ram: This is an attribute in the table. Specify the row value for ram. +* apiColumns : The attribute values of your table in your instance. + + +**Sample request** + +Following is a sample request that can be handled by the postRecordStagingTable operation. + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableNameStaging":"imp_computer", + "serialNumber":"282", + "cpuCount":"234", + "name":"Mac", + "operatingSystem":"ubunthu", + "manufacturer":"IBM", + "diskSpace":"400Gb", + "ram":"ram 1500", + "apiColumns": {"sys_mod_count":"2","sys_import_state_comment":"wwww"} +} +``` +**Sample response** + +Given below is a sample response for the postRecordStagingTable operation. + +```json +{ + "import_set":"ISET0010001", + "staging_table":"imp_computer", + "result":[ + { + "transform_map":"Computer", + "table":"cmdb_ci_computer", + "display_name":"name", + "display_value":"Mac", + "record_link":"https://dev62519.service-now.com/api/now/table/cmdb_ci_computer/201bea46dbb033004f281120399619c1", + "status":"ignored", + "sys_id":"201bea46dbb033004f281120399619c1", + "status_message":"wwww;No field values changed" + } + ] +} +``` + +**Related ServiceNow documentation** + +https://developer.servicenow.com/app.do#!/rest_api_doc?v=jakarta&id=r_ImportSetAPI-POST + +**NOTE** + +You have to give Access Control List (ACL) permission to access the records in import set tables. You can find more information on http://wiki.servicenow.com/index.php?title=REST_API#gsc.tab=0 + +### Sample configuration + +Following example illustrates how to connect to ServiceNow with the init operation and getRecordsStagingTable operation. + +1. Create a sample proxy as below : + +```xml + + + + + + + + + + {$ctx:serviceNowInstanceURL} + {$ctx:username} + {$ctx:password} + + + {$ctx:tableNameStaging} + {$ctx:sysIdStaging} + + + + + + + + + + +``` + +2. Create a json file named getRecordsStagingTable.json and copy the configurations given below to it: + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableNameStaging":"imp_computer", + "serialNumber":"282", + "cpuCount":"234", + "name":"Mac", + "operatingSystem":"ubunthu", + "manufacturer":"IBM", + "diskSpace":"400Gb", + "ram":"ram 1500", + "apiColumns": {"sys_mod_count":"2","sys_import_state_comment":"wwww"} +} +``` +3. Replace the credentials with your values. + +4. Execute the following curl command: + +```bash +curl http://localhost:8280/services/getRecordsStagingTable -H "Content-Type: application/json" -d @getRecordsStagingTable.json +``` + +5. ServiceNow returns a json response similar to the one shown below: + +```json +{ + "import_set":"ISET0010001", + "staging_table":"imp_computer", + "result":[ + { + "transform_map":"Computer", + "table":"cmdb_ci_computer", + "display_name":"name", + "display_value":"Mac", + "record_link":"https://dev17686.service-now.com/api/now/table/cmdb_ci_computer/201bea46dbb033004f281120399619c1", + "status":"inserted", + "sys_id":"201bea46dbb033004f281120399619c1", + "status_message":"wwww" + } + ] +} +``` diff --git a/docs/table.md b/docs/table.md new file mode 100644 index 0000000..ffd7bf5 --- /dev/null +++ b/docs/table.md @@ -0,0 +1,890 @@ +# Working with Table API in ServiceNow + +[[Overview]](#overview) [[Operation details]](#operation-details) [[Sample configuration]](#sample-configuration) + +### Overview + +The following operations allow you to work with Table API. Click an operation name to see details on how to use it. +For a sample proxy service that illustrates how to work with tables, see [Sample configuration](#sample-configuration). + +| Operation | Description | +| ------------- |-------------| +| [getRecords](#retrieving-a-set-of-records-from-a-table) | Retrieves set of records from table. | +| [getRecordById](#retrieves-a-record-according-to-the-sys_id-from-a-table) | Retrieves a record according to the sys_id from table.| +| [postRecord](#insert-a-record-into-a-table) | Insert a record into a table.| +| [patchRecordById](#patch-a-record-from-table-by-specifying-sys_id-from-a-table) | Patch a record from table by specifying sys_id. | +| [putRecordById](#put-a-record-from-table-by-specifying-sys_id-from-a-table) | Put a record to table by specifying sys_id. | +| [deleteRecordById](#delete-a-record-from-table-by-specifying sys_id) | Delete a record from table by specifying sys_id.| + +### Operation details + +This section provides more details on each of the operations related to table API. + +#### Retrieving a set of Records from a table +The getRecords operation retrieves set of records from a table. + +**getRecords** +```xml + + {$ctx:tableName} + {$ctx:sysparmQuery} + {$ctx:sysparmDisplayValue} + {$ctx:sysparmFields} + {$ctx:sysparmView} + {$ctx:sysparmLimit} + {$ctx:sysparmOffset} + {$ctx:sysparmExcludeReferenceLink} + {$ctx:sysparmReadReplicaCategory} + {$ctx:KeyValuePairs} + +``` +**Properties** +* tableName: Name of the table you want to retrieve records. +* sysparmQuery: Optional Parameter. The encoded query provides support for order by and filter out records. +* sysparmDisplayValue: Optional Parameter. Data retrieval operation for reference and choice fields. +* sysparmFields: Optional Parameter. Comma-separated field names to return in the response. +* sysparmView: Optional Parameter. UI view to determine fields returned in the response. +* sysparmLimit: Optional Parameter. Limit to be applied on pagination. The default is 10000. +* sysparmOffset: Optional Parameter. A number of records to skip before returning records. +* sysparmExcludeReferenceLink: Optional Parameter. Additional information provided for reference fields. +* sysparmReadReplicaCategory: Optional Parameter. The category value to read data from read replicas. +* KeyValuePairs: Optional Parameter. Can filter a query using key-value pairs where the key is the name of a field. + +**Sample request** + +Following is a sample request that can be handled by the getRecords operation. + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableName":"incident", + "sysparmQuery":"active=true", + "sysparmDisplayValue":"true", + "sysparmFields":"short_description,number,sys_id", + "sysparmView":"short_description,number,sys_id", + "sysparmLimit":"10", + "sysparmOffset":"4", + "sysparmExcludeReferenceLink":"", + "sysparmReadReplicaCategory":"", + "KeyValuePairs":"active=true" + +} +``` +**Sample response** + +Given below is a sample response for the getRecords operation. + +```json +{ + "result": [ + { + "sys_import_state_comment": "wwww", + "template_import_log": "", + "sys_updated_on": "2019-04-15 15:09:40", + "sys_class_name": "imp_computer", + "cpu_count": "234", + "manufacturer": "owner", + "sys_target_sys_id": { + "link": "https://dev62519.service-now.com/api/now/table/cmdb_ci_computer/201bea46dbb033004f281120399619c1", + "value": "201bea46dbb033004f281120399619c1" + }, + "sys_id": "601bea46dbb033004f2811203996199d", + "sys_updated_by": "admin", + "sys_created_on": "2019-04-15 15:09:39", + "cpu_type": "", + "sys_import_set": { + "link": "https://dev62519.service-now.com/api/now/table/sys_import_set/681bea46dbb033004f2811203996199d", + "value": "681bea46dbb033004f2811203996199d" + }, + "operating_system": "ubunthu", + "sys_transform_map": { + "link": "https://dev62519.service-now.com/api/now/table/sys_transform_map/4e3548e2c0a80094002e0c1550d11a26", + "value": "4e3548e2c0a80094002e0c1550d11a26" + }, + "sys_created_by": "admin", + "ram": "", + "sys_import_row": "1", + "sys_row_error": "", + "sys_target_table": "cmdb_ci_computer", + "sys_mod_count": "1", + "cpu_speed": "", + "serial_number": "282", + "import_set_run": { + "link": "https://dev62519.service-now.com/api/now/table/sys_import_set_run/e01bea46dbb033004f2811203996199f", + "value": "e01bea46dbb033004f2811203996199f" + }, + "model_id": "", + "disk_space": "", + "sys_tags": "", + "sys_import_state": "inserted", + "name": "Mac" + } + ] +} +``` + +**Related ServiceNow documentation** + +[https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_create.htm](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_create.htm) + +#### Retrieves a record according to the sys_id from a table. + +The getRecordById operation retrieves a record according to the sys_id from a table. + +**getRecordById** +```xml + + {$ctx:tableName} + {$ctx:sysId} + {$ctx:sysparmDisplayValue} + {$ctx:sysparmFields} + {$ctx:sysparmView} + {$ctx:sysparmExcludeReferenceLink} + +``` +**Properties** +* tableName: Name of the table you want to retrieve a record. +* sysId: The Id which is automatically generated by ServiceNow. It is unique value for each record. +* sysparmDisplayValue: Optional Parameter. Data retrieval operation for reference and choice fields. +* sysparmFields: Optional Parameter. Comma-separated field names to return in the response. +* sysparmView: Optional Parameter. UI view to determine fields returned in the response. +* sysparmExcludeReferenceLink: Optional Parameter. Additional information provided for reference fields. + +**Sample request** + +Following is a sample request that can be handled by the getRecordById operation. + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableName":"incident", + "sysId":"46e57642a9fe1981000b96a5dca501ff", + "sysparmDisplayValue":"true", + "sysparmFields":"short_description,number,sys_id", + "sysparmView":"short_description,number,sys_id", + "sysparmExcludeReferenceLink":"" +} +``` +**Sample response** + +Given below is a sample response for the getRecordById operation. + +```json + +``` + +**Related ServiceNow documentation** + +https://developer.servicenow.com/app.do#!/rest_api_doc?v=jakarta&id=r_TableAPI-GETid + +#### Insert a record into a table. + +The postRecord operation insert a record with given attributes into a table. + +**postRecord** +```xml + + {$ctx:tableName} + {$ctx:sysparmDisplayValue} + {$ctx:sysparmFields} + {$ctx:sysparmView} + {$ctx:sysparmExcludeReferenceLink} + {$ctx:sysparmInputDisplayValue} + {$ctx:number} + {$ctx:shortDescription} + {$ctx:active} + {$ctx:approval} + {$ctx:category} + {$ctx:contactType} + {$ctx:apiColumns} + +``` +**Properties** + +* tableName: Name of the table you want to retrieve a record. +* sysparmDisplayValue: Optional Parameter. Data retrieval operation for reference and choice fields. +* sysparmFields: Optional Parameter. Comma-separated field names to return in the response. +* sysparmView: Optional Parameter. UI view to determine fields returned in the response. +* sysparmExcludeReferenceLink: Optional Parameter. Additional information provided for reference fields. +* sysparmInputDisplayValue:Data insert or update operations. +* number: This is an attribute in the table. Specify the row value for number. +* shortDescription: This is an attribute in the table. Specify the row value for short_description. +* active: This is an attribute in the table. Specify the row value for active. +* approval: This is an attribute in the table. Specify the row value for approval. +* category: This is an attribute in the table. Specify the row value for category. +* contactType: This is an attribute in the table. Specify the row value for contactType. +* apiColumns: The attribute values of your table in your instance. + +**Sample request** + +Following is a sample request that can be handled by the postRecord operation. + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableName":"incident", + "sysparmDisplayValue":"true", + "sysparmFields":"short_description,number,sys_id", + "sysparmView":"short_description,number,sys_id", + "sysparmExcludeReferenceLink":"", + "sysparmInputDisplayValue":"true", + "number":"42", + "shortDescription":"Test of Post Method", + "active":"true", + "approval":"owner", + "category":"inquiry", + "contactType":"phone", + "apiColumns": {"close_notes":"close","correlation_display":"abc"} + } +``` +**Sample response** + +Given below is a sample response for the postRecord operation. + +```json +{ + "result": { + "upon_approval": "proceed", + "location": "", + "expected_start": "", + "reopen_count": "0", + "close_notes": "", + "additional_assignee_list": "", + "impact": "2", + "urgency": "2", + "correlation_id": "", + "sys_tags": "", + "sys_domain": { + "link": "https://instance.service-now.com/api/now/table/sys_user_group/global", + "value": "global" + }, + "description": "", + "group_list": "", + "priority": "3", + "delivery_plan": "", + "sys_mod_count": "0", + "work_notes_list": "", + "business_service": "", + "follow_up": "", + "closed_at": "", + "sla_due": "", + "delivery_task": "", + "sys_updated_on": "2016-01-22 14:28:24", + "parent": "", + "work_end": "", + "number": "INC0010002", + "closed_by": "", + "work_start": "", + "calendar_stc": "", + "category": "inquiry", + "business_duration": "", + "incident_state": "1", + "activity_due": "", + "correlation_display": "", + "company": "", + "active": "true", + "due_date": "", + "assignment_group": { + "link": "https://instance.service-now.com/api/now/table/sys_user_group/287ebd7da9fe198100f92cc8d1d2154e", + "value": "287ebd7da9fe198100f92cc8d1d2154e" + }, + "caller_id": "", + "knowledge": "false", + "made_sla": "true", + "comments_and_work_notes": "", + "parent_incident": "", + "state": "1", + "user_input": "", + "sys_created_on": "2016-01-22 14:28:24", + "approval_set": "", + "reassignment_count": "0", + "rfc": "", + "child_incidents": "0", + "opened_at": "2016-01-22 14:28:24", + "short_description": "Unable to connect to office wifi", + "order": "", + "sys_updated_by": "admin", + "resolved_by": "", + "notify": "1", + "upon_reject": "cancel", + "approval_history": "", + "problem_id": "", + "work_notes": "", + "calendar_duration": "", + "close_code": "", + "sys_id": "c537bae64f411200adf9f8e18110c76e", + "approval": "not requested", + "caused_by": "", + "severity": "3", + "sys_created_by": "admin", + "resolved_at": "", + "assigned_to": "", + "business_stc": "", + "wf_activity": "", + "sys_domain_path": "/", + "cmdb_ci": "", + "opened_by": { + "link": "https://instance.service-now.com/api/now/table/sys_user/6816f79cc0a8016401c5a33be04be441", + "value": "6816f79cc0a8016401c5a33be04be441" + }, + "subcategory": "", + "rejection_goto": "", + "sys_class_name": "incident", + "watch_list": "", + "time_worked": "", + "contact_type": "phone", + "escalation": "0", + "comments": "" + } +} +``` + +**Related ServiceNow documentation** + +https://developer.servicenow.com/app.do#!/rest_api_doc?v=jakarta&id=r_TableAPI-POST + +#### Patch a record from table by specifying sys_id from a table. + +The patchRecordById operation patch a record which is already in table according to the sys_id from a table. + +**update** +```xml + + {$ctx:sysId} + {$ctx:tableName} + {$ctx:sysparmDisplayValue} + {$ctx:sysparmFields} + {$ctx:sysparmView} + {$ctx:sysparmExcludeReferenceLink} + {$ctx:sysparmInputDisplayValue} + {$ctx:number} + {$ctx:shortDescription} + {$ctx:active} + {$ctx:approval} + {$ctx:category} + {$ctx:contactType} + {$ctx:apiColumns} + +``` + +**Properties** + +* tableName: Name of the table you want to retrieve a record. +* sysId: The Id which is automatically generated by ServiceNow. It is unique value for each record. +* sysparmDisplayValue: Optional Parameter. Data retrieval operation for reference and choice fields. +* sysparmFields: Optional Parameter. Comma-separated field names to return in the response. +* sysparmView: Optional Parameter. UI view to determine fields returned in the response. +* sysparmExcludeReferenceLink: Optional Parameter. Additional information provided for reference fields. +* number: This is an attribute in the table. Specify the row value for number. +* shortDescription: This is an attribute in the table. Specify the row value for short_description. +* active: This is an attribute in the table. Specify the row value for active. +* approval: This is an attribute in the table. Specify the row value for approval. +* category: This is an attribute in the table. Specify the row value for category. +* contactType: This is an attribute in the table. Specify the row value for contactType. +* apiColumns: The attribute values of your table in your instance. + +**Sample request** + +Following is a sample REST/JSON request that can be handled by the patchRecordById operation. + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableName":"incident", + "sysId":"bfdc80fd4fce920021eeeb118110c74e", + "sysparmDisplayValue":"true", + "sysparmFields":"short_description,number,sys_id", + "sysparmView":"short_description,number,sys_id", + "sysparmExcludeReferenceLink":"", + "sysparmInputDisplayValue":"true", + "number":"42", + "shortDescription":"Test of Post Method", + "active":"true", + "approval":"owner", + "category":"inquiry", + "contactType":"phone", + "apiColumns": {"close_notes":"close","correlation_display":"abc"} +} +``` +**Sample response** + +Given below is a sample response for the patchRecordById operation. + +```json +{ + "result": { + "upon_approval": "proceed", + "location": { + "link": "https://instance.service-now.com/api/now/table/cmn_location/108752c8c611227501d4ab0e392ba97f", + "value": "108752c8c611227501d4ab0e392ba97f" + }, + "expected_start": "", + "reopen_count": "", + "close_notes": "", + "additional_assignee_list": "", + "impact": "1", + "urgency": "1", + "correlation_id": "", + "sys_tags": "", + "sys_domain": { + "link": "https://instance.service-now.com/api/now/table/sys_user_group/global", + "value": "global" + }, + "description": "", + "group_list": "", + "priority": "1", + "delivery_plan": "", + "sys_mod_count": "7", + "work_notes_list": "", + "business_service": "", + "follow_up": "", + "closed_at": "", + "sla_due": "2017-07-05 05:58:24", + "delivery_task": "", + "sys_updated_on": "2016-01-22 14:12:37", + "parent": "", + "work_end": "", + "number": "INC0000050", + "closed_by": "", + "work_start": "", + "calendar_stc": "", + "category": "hardware", + "business_duration": "", + "incident_state": "2", + "activity_due": "2016-01-22 16:12:37", + "correlation_display": "", + "company": { + "link": "https://instance.service-now.com/api/now/table/core_company/31bea3d53790200044e0bfc8bcbe5dec", + "value": "31bea3d53790200044e0bfc8bcbe5dec" + }, + "active": "true", + "due_date": "", + "assignment_group": { + "link": "https://instance.service-now.com/api/now/table/sys_user_group/8a5055c9c61122780043563ef53438e3", + "value": "8a5055c9c61122780043563ef53438e3" + }, + "caller_id": { + "link": "https://instance.service-now.com/api/now/table/sys_user/5b7c200d0a640069006b3845b5d0fa7c", + "value": "5b7c200d0a640069006b3845b5d0fa7c" + }, + "knowledge": "false", + "made_sla": "true", + "comments_and_work_notes": "", + "parent_incident": "", + "state": "2", + "user_input": "", + "sys_created_on": "2015-11-02 18:05:40", + "approval_set": "", + "reassignment_count": "0", + "rfc": "", + "child_incidents": "", + "opened_at": "2015-11-02 21:58:24", + "short_description": "Can't access Exchange server - is it down?", + "order": "", + "sys_updated_by": "admin", + "resolved_by": "", + "notify": "1", + "upon_reject": "cancel", + "approval_history": "", + "problem_id": "", + "work_notes": "", + "calendar_duration": "", + "close_code": "", + "sys_id": "ef43c6d40a0a0b5700c77f9bf387afe3", + "approval": "not requested", + "caused_by": "", + "severity": "3", + "sys_created_by": "glide.maint", + "resolved_at": "", + "assigned_to": { + "link": "https://instance.service-now.com/api/now/table/sys_user/681b365ec0a80164000fb0b05854a0cd", + "value": "681b365ec0a80164000fb0b05854a0cd" + }, + "business_stc": "", + "wf_activity": "", + "sys_domain_path": "/", + "cmdb_ci": { + "link": "https://instance.service-now.com/api/now/table/cmdb_ci/281190e3c0a8000b003f593aa3f20ca6", + "value": "281190e3c0a8000b003f593aa3f20ca6" + }, + "opened_by": { + "link": "https://instance.service-now.com/api/now/table/sys_user/glide.maint", + "value": "glide.maint" + }, + "subcategory": "", + "rejection_goto": "", + "sys_class_name": "incident", + "watch_list": "", + "time_worked": "", + "contact_type": "phone", + "escalation": "3", + "comments": "" + } +} +``` + +**Related ServiceNow documentation** + +https://developer.servicenow.com/app.do#!/rest_api_doc?v=jakarta&id=r_TableAPI-PATCH + +#### Put a record from table by specifying sys_id from a table. + +The putRecordById operation put a record which is already in table according to the sys_id from a table. + +**putRecordById** +```xml + + {$ctx:tableName} + {$ctx:sysId} + {$ctx:sysparmDisplayValue} + {$ctx:sysparmFields} + {$ctx:sysparmView} + {$ctx:sysparmExcludeReferenceLink} + {$ctx:sysparmInputDisplayValue} + {$ctx:number} + {$ctx:shortDescription} + {$ctx:active} + {$ctx:approval} + {$ctx:category} + {$ctx:contactType} + {$ctx:apiColumns} + +``` +**Properties** + +* tableName: Name of the table you want to retrieve a record. +* sysId: The Id which is automatically generated by ServiceNow. It is unique value for each record. +* sysparmDisplayValue: Optional Parameter. Data retrieval operation for reference and choice fields. +* sysparmFields: Optional Parameter. Comma-separated field names to return in the response. +* sysparmView: Optional Parameter. UI view to determine fields returned in the response. +* sysparmExcludeReferenceLink: Optional Parameter. Additional information provided for reference fields. +* number: This is an attribute in the table. Specify the row value for number. +* shortDescription: This is an attribute in the table. Specify the row value for short_description. +* active: This is an attribute in the table. Specify the row value for active. +* approval: This is an attribute in the table. Specify the row value for approval. +* category: This is an attribute in the table. Specify the row value for category. +* contactType: This is an attribute in the table. Specify the row value for contactType. +* apiColumns: The attribute values of your table in your instance. + +**Sample request** + +Following is a sample request that can be handled by the putRecordById operation. + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableName":"incident", + "sysId":"bfdc80fd4fce920021eeeb118110c74e", + "sysparmDisplayValue":"true", + "sysparmFields":"short_description,number,sys_id", + "sysparmView":"short_description,number,sys_id", + "sysparmExcludeReferenceLink":"", + "sysparmInputDisplayValue":"true", + "number":"42", + "shortDescription":"Test of Post Method", + "active":"true", + "approval":"owner", + "category":"inquiry", + "contactType":"phone", + "apiColumns": {"close_notes":"close","correlation_display":"abc"} +} +``` +**Sample response** + +Given below is a sample response for the putRecordById operation. + +```json +{ + "result": { + "upon_approval": "proceed", + "location": { + "link": "https://instance.service-now.com/api/now/table/cmn_location/108752c8c611227501d4ab0e392ba97f", + "value": "108752c8c611227501d4ab0e392ba97f" + }, + "expected_start": "", + "reopen_count": "", + "close_notes": "", + "additional_assignee_list": "", + "impact": "1", + "urgency": "1", + "correlation_id": "", + "sys_tags": "", + "sys_domain": { + "link": "https://instance.service-now.com/api/now/table/sys_user_group/global", + "value": "global" + }, + "description": "", + "group_list": "", + "priority": "1", + "delivery_plan": "", + "sys_mod_count": "7", + "work_notes_list": "", + "business_service": "", + "follow_up": "", + "closed_at": "", + "sla_due": "2017-07-05 05:58:24", + "delivery_task": "", + "sys_updated_on": "2016-01-22 14:12:37", + "parent": "", + "work_end": "", + "number": "INC0000050", + "closed_by": "", + "work_start": "", + "calendar_stc": "", + "category": "hardware", + "business_duration": "", + "incident_state": "2", + "activity_due": "2016-01-22 16:12:37", + "correlation_display": "", + "company": { + "link": "https://instance.service-now.com/api/now/table/core_company/31bea3d53790200044e0bfc8bcbe5dec", + "value": "31bea3d53790200044e0bfc8bcbe5dec" + }, + "active": "true", + "due_date": "", + "assignment_group": { + "link": "https://instance.service-now.com/api/now/table/sys_user_group/8a5055c9c61122780043563ef53438e3", + "value": "8a5055c9c61122780043563ef53438e3" + }, + "caller_id": { + "link": "https://instance.service-now.com/api/now/table/sys_user/5b7c200d0a640069006b3845b5d0fa7c", + "value": "5b7c200d0a640069006b3845b5d0fa7c" + }, + "knowledge": "false", + "made_sla": "true", + "comments_and_work_notes": "", + "parent_incident": "", + "state": "2", + "user_input": "", + "sys_created_on": "2015-11-02 18:05:40", + "approval_set": "", + "reassignment_count": "0", + "rfc": "", + "child_incidents": "", + "opened_at": "2015-11-02 21:58:24", + "short_description": "Can't access Exchange server - is it down?", + "order": "", + "sys_updated_by": "admin", + "resolved_by": "", + "notify": "1", + "upon_reject": "cancel", + "approval_history": "", + "problem_id": "", + "work_notes": "", + "calendar_duration": "", + "close_code": "", + "sys_id": "ef43c6d40a0a0b5700c77f9bf387afe3", + "approval": "not requested", + "caused_by": "", + "severity": "3", + "sys_created_by": "glide.maint", + "resolved_at": "", + "assigned_to": { + "link": "https://instance.service-now.com/api/now/table/sys_user/681b365ec0a80164000fb0b05854a0cd", + "value": "681b365ec0a80164000fb0b05854a0cd" + }, + "business_stc": "", + "wf_activity": "", + "sys_domain_path": "/", + "cmdb_ci": { + "link": "https://instance.service-now.com/api/now/table/cmdb_ci/281190e3c0a8000b003f593aa3f20ca6", + "value": "281190e3c0a8000b003f593aa3f20ca6" + }, + "opened_by": { + "link": "https://instance.service-now.com/api/now/table/sys_user/glide.maint", + "value": "glide.maint" + }, + "subcategory": "", + "rejection_goto": "", + "sys_class_name": "incident", + "watch_list": "", + "time_worked": "", + "contact_type": "phone", + "escalation": "3", + "comments": "" + } +} +``` + +**Related ServiceNow documentation** + +https://developer.servicenow.com/app.do#!/rest_api_doc?v=jakarta&id=r_TableAPI-PUT + +#### Delete a record from table by specifying sys_id. + +The deleteRecordById operation retrieves a record according to the sys_id from a table. + +**deleteRecordById** +```xml + + {$ctx:tableName} + {$ctx:sysId} + +``` +**Properties** +* tableName: Name of the table you want to retrieve a record. +* sysId: The Id which is automatically generated by ServiceNow. It is unique value for each record. + +**Sample request** + +Following is a sample request that can be handled by the deleteRecordById operation. + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableName":"incident", + "sysId":"a54ea0844f4e520021eeeb118110c75e" + +} +``` + +**Related ServiceNow documentation** + +https://developer.servicenow.com/app.do#!/rest_api_doc?v=jakarta&id=r_TableAPI-DELETE + +### Sample configuration + +Following example illustrates how to connect to ServiceNow with the init operation and getRecords operation. + +1. Create a sample proxy as below : +```xml + + + + + + + + + + + + + + + + + + {$ctx:serviceNowInstanceURL} + {$ctx:username} + {$ctx:password} + + + {$ctx:tableName} + {$ctx:sysparmQuery} + {$ctx:sysparmDisplayValue} + {$ctx:sysparmFields} + {$ctx:sysparmView} + {$ctx:sysparmLimit} + {$ctx:sysparmOffset} + {$ctx:sysparmExcludeReferenceLink} + {$ctx:sysparmReadReplicaCategory} + {$ctx:KeyValuePairs} + + + + + + + + + + +``` + +2. Create a json file named getRecords.json and copy the configurations given below to it: + +```json +{ + "serviceNowInstanceURL":"https://dev17686.service-now.com", + "username":"admin", + "password":"12345", + "tableName":"incident", + "sysparmQuery":"active=true", + "sysparmDisplayValue":"true", + "sysparmFields":"short_description,number,sys_id", + "sysparmView":"short_description,number,sys_id", + "sysparmLimit":"10", + "sysparmOffset":"4", + "sysparmExcludeReferenceLink":"", + "sysparmReadReplicaCategory":"", + "KeyValuePairs":"active=true" + +} +``` +3. Replace the credentials with your values. + +4. Execute the following curl command: + +```bash +curl http://localhost:8280/services/getRecords -H "Content-Type: application/json" -d @getRecords.json +``` +5. ServiceNow returns a json response similar to the one shown below: + +```json +{ + "result": [ + { + "sys_import_state_comment": "wwww", + "template_import_log": "", + "sys_updated_on": "2019-04-15 15:09:40", + "sys_class_name": "imp_computer", + "cpu_count": "234", + "manufacturer": "owner", + "sys_target_sys_id": { + "link": "https://dev62519.service-now.com/api/now/table/cmdb_ci_computer/201bea46dbb033004f281120399619c1", + "value": "201bea46dbb033004f281120399619c1" + }, + "sys_id": "601bea46dbb033004f2811203996199d", + "sys_updated_by": "admin", + "sys_created_on": "2019-04-15 15:09:39", + "cpu_type": "", + "sys_import_set": { + "link": "https://dev62519.service-now.com/api/now/table/sys_import_set/681bea46dbb033004f2811203996199d", + "value": "681bea46dbb033004f2811203996199d" + }, + "operating_system": "ubunthu", + "sys_transform_map": { + "link": "https://dev62519.service-now.com/api/now/table/sys_transform_map/4e3548e2c0a80094002e0c1550d11a26", + "value": "4e3548e2c0a80094002e0c1550d11a26" + }, + "sys_created_by": "admin", + "ram": "", + "sys_import_row": "1", + "sys_row_error": "", + "sys_target_table": "cmdb_ci_computer", + "sys_mod_count": "1", + "cpu_speed": "", + "serial_number": "282", + "import_set_run": { + "link": "https://dev62519.service-now.com/api/now/table/sys_import_set_run/e01bea46dbb033004f2811203996199f", + "value": "e01bea46dbb033004f2811203996199f" + }, + "model_id": "", + "disk_space": "", + "sys_tags": "", + "sys_import_state": "inserted", + "name": "Mac" + } + ] +} +``` diff --git a/pom.xml b/pom.xml index 9ab4136..5a4a766 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,8 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + 4.0.0 org.wso2.carbon.connector org.wso2.carbon.connector.servicenow @@ -26,23 +27,24 @@ http://wso2.org servicenow - 4.2.0 - 4.9.0 - 4.4.1 + 6.5.0-m4 + 4.4.17 + 4.4.2 + 4.4.3 2.1.5320 - 2.1.3-wso2v11 - 4.4.10 - 2.0.0.wso2v1 - 4.0.0 + 2.1.7-wso2v95 + 4.6.123 + 3.0.0.wso2v1 6.1.1 - 1.0.1 + 0.9.4 + 1.55 + 1.6.1-wso2v18 + 1.6.1.wso2v18 + 2.18.1 + 1.0.4 + true - - org.wso2.carbon.mediation - org.wso2.carbon.mediation.initializer - ${carbon.mediation.version} - org.apache.synapse synapse-core @@ -59,45 +61,66 @@ ${json.version} - org.wso2.carbon.mediation - org.wso2.carbon.connector.core - ${carbon.mediation.version} + org.wso2.carbon.automation + org.wso2.carbon.automation.engine + ${automation.framework.version} + test - org.wso2.carbon.mediation - org.wso2.carbon.mediation.library.stub - ${carbon.mediation.version} - test + org.wso2.carbon.automation + org.wso2.carbon.automation.extensions + ${automation.framework.version} - javax.servlet - servlet-api + org.apache.jmeter + ApacheJMeter + + + org.apache.jmeter + ApacheJMeter_core + test - org.wso2.carbon - org.wso2.carbon.integration.framework - ${carbon.integration.framework} - test + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.admin.client + ${automation.framework.utils.version} + compile - org.wso2.carbon.automation - org.wso2.carbon.automation.api - ${test.framework.version} - test + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.extensions + ${automation.framework.utils.version} + compile - org.wso2.carbon.automation - org.wso2.carbon.automation.core - ${test.framework.version} - test + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.utils + ${automation.framework.utils.version} - org.wso2.carbon.automation - org.wso2.carbon.automation.utils - ${test.framework.version} + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.tests + ${automation.framework.utils.version} + + + + org.wso2.carbon.mediation + org.wso2.carbon.connector.core + ${carbon.mediation.version} + + + org.wso2.carbon.mediation + org.wso2.carbon.mediation.library.stub + ${carbon.mediation.version} test + + + javax.servlet + servlet-api + + emma @@ -118,12 +141,48 @@ aar test + - org.wso2.esb - org.wso2.carbon.esb.common - 4.8.0 + org.wso2.carbon.automation + org.wso2.carbon.automation.test.utils + ${automation.framework.version} test + + org.wso2.carbon + org.wso2.carbon.logging + ${carbon.kernel.version} + + + org.apache.httpcomponents + httpmime + 4.3.6 + + + org.json + json + 20080701 + + + org.wso2.ei + org.wso2.ei.samples + ${product.ei.version} + + + org.wso2.carbon.mediation + org.wso2.carbon.integrator.core + ${carbon.mediation.version} + + + org.wso2.ei + integration-test-utils + ${product.ei.version} + + + org.wso2.ei + automation-extensions + ${product.ei.version} + org.wso2.esb.integration integration-base @@ -132,9 +191,12 @@ - scm:git:https://github.com/wso2-extensions/esb-connector-servicenow.git + scm:git:https://github.com/wso2-extensions/esb-connector-servicenow.git + https://github.com/wso2-extensions/esb-connector-servicenow.git - scm:git:https://github.com/wso2-extensions/esb-connector-servicenow + + scm:git:https://github.com/wso2-extensions/esb-connector-servicenow + HEAD @@ -142,14 +204,35 @@ org.apache.maven.plugins maven-compiler-plugin - 2.0 - 1.5 - 1.5 + 1.8 + 1.8 org.apache.maven.plugins + maven-assembly-plugin + + + email-library + compile + + attached + + + ${connector.name}-connector-${version} + false + + src/main/assembly/filter.properties + + + src/main/assembly/assemble-connector.xml + + + + + + maven-dependency-plugin @@ -171,27 +254,30 @@ - - - - org.apache.maven.plugins - maven-assembly-plugin - - email-library + copy-emma-dependencies compile - attached + copy-dependencies - ${connector.name}-connector-${version} - false - - src/main/assembly/filter.properties - - - src/main/assembly/assemble-connector.xml - + ${project.build.directory}/emma + jar + emma, + + + + + copy-secVerifier + compile + + copy-dependencies + + + ${basedir}/target/security-verifier + aar + SecVerifier + true @@ -201,12 +287,11 @@ 2.12.4 false - + ${skip-tests} -Xms512m -Xmx1024m -XX:MaxPermSize=128m - true false false + true src/test/resources/testng.xml @@ -216,9 +301,6 @@ ${basedir}/src/test/resources/ - - 4.4.1 - server.list @@ -230,36 +312,115 @@ usedefaultlisteners false + ${basedir}/target/security-verifier/ false - ${basedir}/repository/wso2esb-${esb.version}.zip + ${basedir}/repository/wso2ei-${product.ei.version}.zip - ${basedir}/target/emma ${basedir}/src/test/resources/instrumentation.txt ${basedir}/src/test/resources/filters.txt - ${basedir}/target/emma connector_repo ${basedir}/target + + connector_name + ${connector.name} + + + connector_version + ${project.version} + ${basedir}/target - maven-dependency-plugin + maven-resources-plugin + 2.6 - copy-emma-dependencies + copy-resources-jks compile - copy-dependencies + copy-resources - ${project.build.directory}/emma - jar - emma,org.wso2.carbon.automation.core - + ${basedir}/src/test/resources/keystores/products + + + + + ${basedir}/target/tobeCopied/wso2ei-${product.ei.version}/repository/resources/security/ + + + **/*.jks + + + + + + + copy-stratos-jks + compile + + copy-resources + + + ${basedir}/src/test/resources/keystores/stratos + + + + + ${basedir}/target/tobeCopied/wso2ei-${product.ei.version}/repository/resources/security/ + + + **/*.jks + + + + + + + copy-axis2files + compile + + copy-resources + + + ${basedir}/src/test/resources/axis2config + + + + + ${basedir}/target/tobeCopied/wso2ei-${project.version}/wso2/business-process/conf/axis2/ + + + **/*.xml + + + + + + + copy-resources-mar + compile + + copy-resources + + + ${basedir}/src/test/resources/client/modules + + + + + ${basedir}/target/tobeCopied/wso2ei-${project.version}/wso2/business-process/repository/deployment/client/modules + + + **/*.mar + + + diff --git a/repository/copy of ESB here.txt b/repository/copy of EI here.txt similarity index 100% rename from repository/copy of ESB here.txt rename to repository/copy of EI here.txt diff --git a/repository/esb-connector-servicenow.properties b/repository/esb-connector-servicenow.properties new file mode 100644 index 0000000..a6c74cd --- /dev/null +++ b/repository/esb-connector-servicenow.properties @@ -0,0 +1,4 @@ +serviceNowInstanceURL=https://dev61119.service-now.com +username=admin +password=JKsdetVwr +sysIdStaging=601bea46dbb033004f2811203996199d diff --git a/src/main/assembly/assemble-connector.xml b/src/main/assembly/assemble-connector.xml index 709c2ac..8fa1cff 100755 --- a/src/main/assembly/assemble-connector.xml +++ b/src/main/assembly/assemble-connector.xml @@ -1,5 +1,6 @@ + connector zip diff --git a/src/test/INTEGRATION-TEST.md b/src/test/INTEGRATION-TEST.md new file mode 100644 index 0000000..7f735e3 --- /dev/null +++ b/src/test/INTEGRATION-TEST.md @@ -0,0 +1,65 @@ +Integration tests for WSO2 EI ServiceNow connector + +Pre-requisites: + + - Maven 3.x + - Java 1.6 or above + - The org.wso2.esb.integration.integration-base project is required. The test suite has been configured to download this project automatically. If the automatic download fails, download the following project and compile it using the mvn clean install command to update your local repository: + https://github.com/wso2-extensions/esb-integration-base + +Tested Platform: + + - UBUNTU 15.10 + - WSO2 EI 6.5.0-m4 + +Steps to follow in setting integration test. + + 1. Download EI 6.5.0-m4-m4 from official website. + + 3. Compress modified EI as wso2ei-6.5.0-m4.zip and copy that zip file in to location "{SERVICENOW_CONNECTOR_HOME}/repository/". + + 4. Follow the below mentioned steps for adding valid certificate to access serviceNow API over https. + + i) Extract the certificate from browser(Mozilla Firefox) by navigating to https://{instance_name}.service-now.com + ii) Place the certificate in {SERVICENOW_CONNECTOR_HOME}/repository/ directory. + + 5. Create a ServiceNow instance using serviceNow developer site and derive the username and password. + + i) Using the URL "https://developer.servicenow.com/app.do#!/home" register a ServiceNow account. + ii) Login to the created Service-Now account and go to Manage >> Instance. + iii) Then you will get a username and password for your instance with instance URL. you can change your password by going Action >> Reset admin password. + iv) In your instance you will get three types of APIs and some pre defined tables. + + 6. Update the ServiceNow properties file at location "{SERVICENOW_CONNECTOR_HOME}/src/test/resources/artifacts/EI/connector/config" and esb-connector-servicenow.properties in repository directory as below. + + i) serviceNowInstanceURL - Use "https://instancename.service-now.com". + ii) username - Use the username obtained under Step 5 (iii). + iii) password - Use the password obtained under Step 5 (iii). + iv) tableName - Use a tablename which is available on your instance. + v) sysIdStaging - Use a valid sys_id from the Import set API table (https://{instance name}.service-now.com/sys_import_set.do). + vi) tableNameStaging - Use a valid table name from the Import set API table. + vii) number - Use a valid number in the format of Integer. + viii) shortDescription - Use a valid string as the short description of the record. + ix) active - Use true or false. + x) approval - Use a valid string as the short description of the record. + xi) category - Use a valid category in the format of String. + xii) sysparmQuery - Use a valid attribute name and value in the table. + xiii) sysparmDisplayValue - Use true or false. + xiv) sysparmFields - Use valid attribute names of the table. + xv) sysparmView - Use valid attribute names of the table. + xvi) sysparmLimit - Use a valid integer number within 10,000. + xvii) sysparmOffset - Use a valid integer number within 10,000. + xviii) KeyValuePairs - Use valid attribute names and values in the table. + xix) sysparmInputDisplayValue - Use true or false. + xx) sysparmAvgFields - Use valid attribute names of the table. + xxi) sysparmMinFields - Use valid attribute names of the table. + xxii) sysparmMaxFields - Use valid attribute names of the table. + xxiii) sysparmSumFields - Use valid attribute names of the table. + xxiv) sysparmCount - Use true or false. + + 7. Navigate to "{SERVICENOW_CONNECTOR_HOME}/" and run the following command.
+ `$ mvn clean install -Dskip-tests=false` + + + + diff --git a/src/test/INTEGRATION-TEST.txt b/src/test/INTEGRATION-TEST.txt deleted file mode 100644 index a9a3ebe..0000000 --- a/src/test/INTEGRATION-TEST.txt +++ /dev/null @@ -1,75 +0,0 @@ -Product: Integration tests for WSO2 ESB ServiceNow connector - -Pre-requisites: - - - Maven 3.x - - Java 1.6 or above - - The org.wso2.esb.integration.integration-base project is required. The test suite has been configured to download this project automatically. If the automatic download fails, download the following project and compile it using the mvn clean install command to update your local repository: - https://github.com/wso2-extensions/esb-integration-base - -Tested Platform: - - - UBUNTU 15.10 - - WSO2 ESB 4.9.0 - -Steps to follow in setting integration test. - - 1. Download ESB 4.9.0 from official website. - - 3. Compress modified ESB as wso2esb-4.9.0.zip and copy that zip file in to location "{SERVICENOW_CONNECTOR_HOME}/repository/". - - 4. Follow the below mentioned steps for adding valid certificate to access serviceNow API over https. - - i) Extract the certificate from browser(Mozilla Firefox) by navigating to https://{instance_name}.service-now.com - ii) Go to new ESB 4.9.0 folder and place the downloaded certificate in both "/repository/resources/security/" and "{SERVICENOW_CONNECTOR_HOME}/src/test/resources/keystores/products/" folders. - iii) Navigate to "/repository/resources/security/" using command prompt and execute keytool -importcert -file CERT_FILE_NAME -keystore client-truststore.jks -alias "CERT_NAME" in command line to import servicenow certificate in to keystore. - Give "wso2carbon" as password. Press "Y" to complete certificate import process. - - NOTE : CERT_FILE_NAME is the file name which was extracted from servicenow. (e.g. *.servicenow.com) - CERT_NAME is an arbitrary name for the certificate. (e.g. servicenow) - - iv) Navigate to "{SERVICENOW_CONNECTOR_HOME}/src/test/resources/keystores/products/" using command prompt and execute keytool -importcert -file CERT_FILE_NAME -keystore wso2carbon.jks -alias "CERT_NAME" in command line to import Shopify certificate in to keystore. - Give "wso2carbon" as password. - - NOTE : CERT_FILE_NAME is the file name which was extracted from servicenow, change it accordingly. (e.g. *.servicenow.com) - CERT_NAME is an arbitrary name for the certificate. (e.g. servicenow) - - 5. Create a ServiceNow instance using serviceNow developer site and derive the username and password. - i) Using the URL "https://developer.servicenow.com/app.do#!/home" register a ServiceNow account. - ii) Login to the created Service-Now account and go to Manage >> Instance. - iii) Then you will get a username and password for your instance with instance URL. you can change your password by going Action >> Reset admin password. - iv) In your instance you will get three types of APIs and some pre defined tables. - - 6. Update the ServiceNow properties file at location "{SERVICENOW_CONNECTOR_HOME}/src/test/resources/artifacts/ESB/connector/config" as below. - - i) serviceNowInstanceURL - Use "https://instancename.service-now.com". - ii) username - Use the username obtained under Step 5 (iii). - iii) password - Use the password obtained under Step 5 (iii). - iv) tableName - Use a tablename which is available on your instance. - v) sysIdStaging - Use a valid sys_id from the Import set API table. - vi) tableNameStaging - Use a valid table name from the Import set API table. - vii) number - Use a valid number in the format of Integer. - viii) shortDescription - Use a valid string as the short description of the record. - ix) active - Use true or false. - x) approval - Use a valid string as the short description of the record. - xi) category - Use a valid category in the format of String. - xii) sysparmQuery - Use a valid attribute name and value in the table. - xiii) sysparmDisplayValue - Use true or false. - xiv) sysparmFields - Use valid attribute names of the table. - xv) sysparmView - Use valid attribute names of the table. - xvi) sysparmLimit - Use a valid integer number within 10,000. - xvii) sysparmOffset - Use a valid integer number within 10,000. - xviii) KeyValuePairs - Use valid attribute names and values in the table. - xix) sysparmInputDisplayValue - Use true or false. - xx) sysparmAvgFields - Use valid attribute names of the table. - xxi) sysparmMinFields - Use valid attribute names of the table. - xxii) sysparmMaxFields - Use valid attribute names of the table. - xxiii) sysparmSumFields - Use valid attribute names of the table. - xxiv) sysparmCount - Use true or false. - - 7. Navigate to "{SERVICENOW_CONNECTOR_HOME}/" and run the following command. - $ mvn clean install - - - - diff --git a/src/test/java/org/wso2/carbon/connector/integration/test/serviceNow/ServiceNowConnectorIntegrationTest.java b/src/test/java/org/wso2/carbon/connector/integration/test/serviceNow/ServiceNowConnectorIntegrationTest.java index 2e3e367..7eceed6 100644 --- a/src/test/java/org/wso2/carbon/connector/integration/test/serviceNow/ServiceNowConnectorIntegrationTest.java +++ b/src/test/java/org/wso2/carbon/connector/integration/test/serviceNow/ServiceNowConnectorIntegrationTest.java @@ -41,7 +41,15 @@ public class ServiceNowConnectorIntegrationTest extends ConnectorIntegrationTest */ @BeforeClass(alwaysRun = true) public void setEnvironment() throws Exception { - init("servicenow-connector-1.0.2-SNAPSHOT"); + + String connectorName = System.getProperty("connector_name") + "-connector-" + + System.getProperty("connector_version") + ".zip"; + + log.info("=================================== "+ connectorName +" ==================================="); + init(connectorName); + getApiConfigProperties(); + //init("servicenow-connector-1.0.2-SNAPSHOT.zip"); + esbRequestHeadersMap.put("Accept-Charset", "UTF-8"); esbRequestHeadersMap.put("Content-Type", "application/json"); apiRequestHeadersMap.putAll(esbRequestHeadersMap); diff --git a/src/test/resources/TestOrder b/src/test/resources/TestOrder new file mode 100644 index 0000000..aa8e76a --- /dev/null +++ b/src/test/resources/TestOrder @@ -0,0 +1 @@ +LogForwardTest \ No newline at end of file diff --git a/src/test/resources/artifacts/ESB/connector/config/servicenow.properties b/src/test/resources/artifacts/ESB/connector/config/servicenow.properties index 8b732c8..cb8a657 100644 --- a/src/test/resources/artifacts/ESB/connector/config/servicenow.properties +++ b/src/test/resources/artifacts/ESB/connector/config/servicenow.properties @@ -1,15 +1,11 @@ -proxyDirectoryRelativePath=/../src/test/resources/artifacts/ESB/config/proxies/servicenow/ -requestDirectoryRelativePath=/../src/test/resources/artifacts/ESB/config/restRequests/servicenow/ +proxyDirectoryRelativePath=artifacts/ESB/config/proxies/servicenow/ +requestDirectoryRelativePath=artifacts/ESB/config/restRequests/servicenow/ -serviceNowInstanceURL=https://dev17686.service-now.com tableName=incident tableNameNegative=negative -sysIdStaging=9183a3164f92960021eeeb118110c78f tableNameStaging=imp_computer sysIdNegative=negative -username=admin -password=12345 number=42 shortDescription=hai servicenow diff --git a/src/test/resources/automation.xml b/src/test/resources/automation.xml new file mode 100644 index 0000000..aec9b63 --- /dev/null +++ b/src/test/resources/automation.xml @@ -0,0 +1,271 @@ + + + + + + + + 60000 + + standalone + + false + + false + + + + + + + http://10.100.2.51:4444/wd/hub/ + + + + firefox + + /home/test/name/webDriver + + + + + + + jdbc:mysql://localhost:3306 + root + root123 + com.mysql.jdbc.Driver + + + jdbc:h2:testDB + wso2carbon + wso2carbon + org.h2.Driver + + + jdbc:h2:testDB + wso2carbon + wso2carbon + org.h2.Driver + + + + + + + keystores/products/wso2carbon.jks + + JKS + + wso2carbon + + wso2carbon + + wso2carbon + + + + + client-truststore.jks + + JKS + + wso2carbon + + + + + + https://wso2.org/repo + file:///home/krishantha/test + + + + + + + + + + admin + admin + + + + + testuser11 + testuser11 + + + testuser21 + testuser21 + + + + + + + + + admin + admin + + + + + + + + + + + + + + + esb.wso2con.com + mgt.esb.wso2con.com + + + 8443 + 8480 + + + + + + + + localhost + + + 9964 + 9644 + 9646 + 8480 + + + + + + + + localhost + + + 9963 + 9643 + 8443 + 8480 + + + + + + + + localhost + + + 9965 + 9645 + 9646 + 8480 + + + + + + + + + + + + + + org.wso2.connector.integration.test.base.KeyStoreManagerExtension + + + org.wso2.esb.integration.common.extensions.carbonserver.CarbonServerExtension + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/automationXMLSchema.xsd b/src/test/resources/automationXMLSchema.xsd new file mode 100644 index 0000000..1342c56 --- /dev/null +++ b/src/test/resources/automationXMLSchema.xsd @@ -0,0 +1,573 @@ + + + + + + + ================================================= + Parameters ================================================= + Browser type with used by framework to execute UI test, supported types + - chrome|firefox|opera|ie|htmlUnit + + + + + + + Change this to edit wait time for test + artifact deployment + + + + + + Change this to product|platform/cloud to + execute test on specific environment + + + + + + + Change this to true if you want to generate + coverage statistics + + + + + + Change this to true if you want to enable + framework dashboard + + + + + + + + + + + + + + + Change to enable remote webDriver + URL of remote webDriver server + + + + + + + + + + + + + Type of the browser selenium tests + are running" + + + + + + + + path to webDriver + executable - required only for + chrome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KeyStore which will be used for + encrypting/decrypting passwords + and other sensitive information. + + + + + + + Keystore file location + + + + + + Keystore type (JKS/PKCS12 etc.) + + + + + + Keystore password + + + + + + Private Key alias + + + + + + Private Key password + + + + + + + + + + System wide trust-store which is used to + maintain the certificates of all + the trusted parties. + + + + + + + trust-store file location + + + + + + trust-store type (JKS/PKCS12 + etc.) + + + + + + trust-store password + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/client/modules/addressing-1.6.1-wso2v10.mar b/src/test/resources/client/modules/addressing-1.6.1-wso2v10.mar deleted file mode 100755 index 57f857642523329ef13c8bf2e2f440a8b0c7480c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31350 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 TaEM>7P~U&_e|>WPb@cxLBN-UW diff --git a/src/test/resources/client/modules/addressing-1.6.1-wso2v23.mar b/src/test/resources/client/modules/addressing-1.6.1-wso2v23.mar new file mode 100644 index 0000000000000000000000000000000000000000..0020fc16c9a5abae6907d0fa1fe69a52ad938549 GIT binary patch literal 31666 zcmb5U1CVAxv?f@#ZQJ~dUAAr8w$)|Z=(1haW!tuGTiY}5&6|C(8xy-3aWgX_zsxu{ z^4uHeeBV)!1_grw`X5cxicjW$PX4ol{x`~sstD3c%84;5{3i?wNaG*O#uQu7?BBA_ zzX$FA4wDs>lN1wGR$-78dyt)+kddZmn1h$5rMYf}FZ%XIj^r0vqb>y) zb%6a9>>-Sbs>h(m0QA4?0{WkJ{WImi8rZ*?y_5NWS^ob-!2Tz~(818y!u0tU zLk~-5mj44B=l>0EVQ6P!W9sDmf7nO}+ZGzhCJ;E~6ny_uCc`2uPm} z2ngxl5&v~(GLpiga>}AxTH4MV!{~l5wX04g%9ao%Ic%1=ClU3Bq1D2cB5igQNnzx5 zM6D2YqYOlmUr)c%x&n(#+~3t?OV}kZ*BVdmb8fPSVDH*`L>VV?P;Okyxl8qU9}fAG zUDsXqFWxSMK4sksn;`F=E>?DU+blTXzOvM7pFh5I<^j&et+hDY<6T~Xus5|gep*pO z=Tek0YC^Mm3lVnM?$a$E1B_U0(u8Xl4EDygG10 z*4)Qo6reHA_lOQTFQb=!O1?U?ooPdJ@W5=^n^7>_w7o_*h?NCwO-XAcA0tqV!yw77 zQsT)ap|t|AcQqM@dqMRCtMTmNA@Hj#VTh|?2yv9!dlz~J@c{f*Lj;3kV!oTF^?)pBOYRT5xOrLQIp^J1ZW{Y9)ejhzr%VPY5Xg8J2JFrP=qT^L{G+>XR#fSW14YqKpbacNhWPPd|xpitH<}3!e z2-_qT)Pv(!2>Gmia%+0z`CF`r?Xzj~4PM|-(SC{WiT~HwhKk?HTI;oba}1#g0UAVc zj>|_WG~kat&QCptQk|!S4)d@4G)EU1i7Y*1A#9~-LTA_nAoGA)O33LsSh@G!(<=pp z6T3=LKl0%RTA&bO$I>`r?4=er6+(y0g!EEluEfUWu(yS=4*}fntz3 zG|;+azGRcZ-vM?85FVWUxY{rT%O+}Ea2nd9LW0_i`ydGU1g0AU({)Js`2E?K`$U9sKWXi_RX=5fTy9xQF5>Z@rCs2 zBwI3Cos7LJWJmVUKD}6(Et8RC4qPlFEd+GD@ie*W~h~l^v4g4;=sHgApzyWxxg_ z&Mc))S+OD_8sH9k$l)kMBHm;b&;;Y>FZD(u9SN+s)4MDiV9Q|##KY?Wwk5 zBxuP7{5h3mX6fyc?RVU(E3eyV?~GFJWB0SQOdzfhWsrf3C7@L3J;>P=74I0GLe?$m`_5q0gORjeuS*PEO6T|~2Mhl8z6TMa+pR}z z{6@?PM@jfI$|l;teRW;beRHU^>RT?d!JK@Hum; zqF0YpX>rT@wm)s$IO|BD$EtB18-p)h<+NniG_?itX6LBzt@LwWF|Se94Hl^Nk%7Mh z5=7MGCt@)}Kpn#_D(TB+$m}b!cZ}j{pqlL%QrX}6pM?$1ntPbWr$92 zU!qj%NLpKl+tN&!c*QKm4&^_wc^O4XU+fk^37QqP89)r`^L_Tg#LHgsdKG02hH~ti zld@U3PLN{JKj%=C!I@=-N)oWBlr6-3OG3m*kJ1@E163Ved(lL1erqH!Ahp1B!}VcS z!_L>qS7E_)XGHO&$cG*`xzZv+uf-}tIVeEdvGx_3YY?=7S(4fSKt>huhzkRMIO<8{ zH_RCJn>%%dEPYfzTc%#w7e{=^FJww9YP9v7Iep=-2ByU;~nxBYn}>K z`-L7`xIX)A+O(xn6_iW^*~59cU)dc92cM8(gVQb@oh{S!=0p@^wXln5_yo?V~_pk z>{8>>)Ytvh6I|krBayf9`rEH~C-aZPwG_eL3>mI^x;I)>bS-&kzGU>Lbn4SZ%|;R` z$?OL+Bi=G(mRrG7sG+n~c2wu>e)B7-J_r^Za{LzMx8!X`$u*ckD1a~OVzS_f$%RRQ zq)MB)>nk7RgJk@X=P!H#XkE(ezQi_J^jnqg`l0d^(_OE%urLN!IWT-GL-Js%!=70QPMsQV&+pTOsZF59qfH1Cqf_UPX zW8m;Yu?#{R$3zxrPBYRWSMNB#SDECuw6ob2&uPM2=Ie5yd*^m(oxx%5PDWLS6SBpY zxeeRQv3zi@a@tsonAda@%4aN;i<-*IHF;hA3Ft>yCb_DPPqd|b|BVn)-=wb^^2U5Gck%ol6U|PxO_p^uEIND)g!^?Fg`}SsZ z|3GoSVI7AF&qBlq7Zm}PDt5%K?BnY4d2XRoU7V=V{1*0~*sMU+Ahs3zfxBpp76Oyj zliqAbOLjT*;ir>dKyQi7zA`mOi5=3 zp^q8zz33`Efw&G8^f^Xl^2Z!ZL^v}#)_}+JYgY|9{X*rZTb^)bx*j?DisK->9vT_i z+A?zO>C}tL>iE?9KF-mo^26}guc-;Rw&(`-8$2tMrko3*RRvJUVv9H{VLO}y$ueX_ z;*fa5)Ei8G9DRLUfK+vRwdr(qXxDsueJwnlcO&uZ?sR=2H|c!V`Sf)DWC)#Z-TS$A z9j`!Q=nY@(Bj7#neeKI_`u*+b($sfuKHBJqu*VSiApk77TnKQmZlcQ#fb*Km+Oy9) zb34G#{f<-kBp;kQF6Om$LEuCt;OK333%Q(5=585-JO9p2DXD)Gy|84RsDDZ0@JlQygWDXEMF*8nOo;7bwP9hPU))Z&Z|lyC zeKb5aV}9@z6ag~*h}%UhBtCBINPv7p-=7NF9k_ey_UYrt~E$#97ApwDx%h2J?;Q-2Ybo-1w|gdU(g?$cfI{&B(A>j z$Q31y!XqoPEU!zHwgM85V_Bq5@ZR02t3F&>$iQI7aIh~Aq!ZIY!}clyHr>SK?^ZGKorDr#%ol3!gELR3BC}}+$*kbmlD~Kj2i)h?uLMvJRxLz&);>ylWDbD zyS(X)-97Wbg2usjg=@x?gViQ%SZl1P+0)|oO)j!-xF}q$Js1VVH9t6kY<*N`(lV4= zf5=4Slm5`beac{YQ|Pkt8TUJPC)u7`WJxW}*4)Av3@>HOwKdTbD-x~DMN;R8TQAsV z0V(I6^DEwtSo?~aLa&jQoO+u)3S@d;o%Ec16-?S=A zoIqf}$asRkA?&HqMUF4i^v#i9Em-y{w}`<|3o35j8|1tg7;0o*!d|-tQVRuNZy3N` zFBVI<^D&X21?~z7x_L&&-P|~$+V&9wPU7xJk~6*3fE++D00@j_ua^9j@Kka$PMZSB z#KuQ0Q5I%|k&b`0w#pvIVYcESWbqiX1D)9ZioxX?R;O?Kyr=0a$U^br-yC!u^>2!a-^3Hl}y#bQ*nZ;C!I7wW;%!C(MxUkoL3#1A|z07nuy%YTXu=4#vQ7IwU z@1M=vC-}}`MN5iVl-qIWmk$06EX8{Lk>~-vqiC#7$t*((%C>+Xgu|=eh(&S`fX=6L z8L@wUvy|MwxPH_@Qu_h^Uwp)Wq~XcVCFj*Dvi9o& zNL||d{FBTo!wRQi;Zo%JmcKbbz!3g)WkaSb4bH&dSJ<$&DF-1lrjHol&ru z?2}-!4*6?_?OW_*s#Sti(tymxssqCry>Ny+OG*n`6PB{WGm1DlA`y(9rF7qQO=ub9di4ayajj7#l+3S-6?uE6GU^Ka*r7=G4KJV zeWh;>_e8HA9?CL*j&l&QbD|CamL9L_I+iio=`HS%MIOSai`2#zeVK6p;?!&nKB-}k zX=p3+#T~ic0-phjC#5R#YvdHvl1G|x1kCH=UNgCjee9`vFH%L%E?_By##p*vt6_P0 zHf8(?sK5faD#4)po^sgkw&2b*41FF96 zP@||*M*kDucA^s6OzxMG;{mrc&kp3H5H~^G3<3g0$|P>0Y#od| z=($`}gb;+e2{2QeKn}IuhJrcl29iz(C&wA*HVzMn9n+`I9A)>xy9ro(xpjHfYtOBh zV2;P{MWw?tN++;rGw_LdKkcw4O}D|_mW!Q%q=SRBxx30j2b8Nn4<4w@^rjbtn|+y& zR1uw&oF?*vJUWi_wHe)MOabIdzix7J zl4Sk*T&LiQRRxZv&}QJn?V46DQ;&IN5Yjq}bY9HKf`* zKc`gIw1WTwr=k0;UZ|avFkPsIdHp%*CSB^C)jGjmRn-2exB5n`y*sf_giP;wW*x@g zCPFWNE{&fg_k#Prt<~IYUUV3*dqQ=Co47BR>(u>Nv^C3UY1prgc&eoilIL~x$2z&dzLEixq!IkwjN5dZr(8swzPDuV|EL?Q?TB>(@FycPT} z9#`JgMdCkLVKQ}PK?zes6H_O3CrcMoCkA61Lucn|EocKB(`LSt8L}5Mr!0zv65I9? z+@d7Y_SPcUB5xw;Gbw4!lCdUi?hHwD3f)z(H8e#3caP@9 ztL*~E3Y2mu(4=XpD0%}uV ztYyBlZQeYw9jkGNFpK`mMKVg=kyCfm4LvFOh(^{*-LZ4*^y<4m#P}pF+5y^hGZE8$ zqUd}oJAH(`>`<>a8EoCteM&nw$r;@{-UzzYtzI%V4e!4w{FOub4encI{ALfsWWHO* z5GTUL;rtd4M>an>`S&RJ^=+L>$8_!ZM#GAFHV!F|(89Jp@xN;v_NWan7Cb+H`BB96 z%*-6$A--}Y#f>7&bi9Rql2XS?-35*D1KvcF{1e4n@1$AwO_Tg-9(za_`B~ri58o=r z_|s0%DSm`rUoxX#<%9h#?=OTFapzxYsr~4O>}9?gll*CgzH<70u8wye2u+3wA6{j@ zlg9i3Z;T+hJ>$DQl6UUGJ5CF-pZs=ySwHI256NRcqX+)?Jf5EnBXEB5(=Xj)gz29J z+4tmJpUfOTQE}3D31fsEZy_Yg%q6toRb_NG6*~8swiS3>`{Y!~hBON*Z6!{ij5ISU zspX+Z9I?;o+OLJGuKj#|Ntn17~w?%f3AK$dUVy1xe z{Pmdt8!HwsZ|7ccx`QSV{oWu264n8hTD6u582WVk_D|LJWqKX+*uSy4rhxsGiN@JX z1MaLJv7!NPueb*Zr+y{npm6%8i2bjBa>FbwVjxNPuoe#C%wfPm_x{dc2el1-my}SI zKo0O+d}%-igTikxLa_~hOpjc@_7pI1Aw7tjq|Y3dclGv++`zsK@c3RFD7qL~_*tE{ zOF$J4Ll{>E8TyxTFQ5c~#tcQbw`lknV?{>{eeIQ;bE<7@V~hlRTI92b6aY3HHWm9E zjLWL24G5Z0H&!ZK5EByU#5adwMX8MO5yN4Q$qBN<@9zR^VWS z(yyd*2GdBo3+TIt35X`>5JH3Rie=K0zxkK3S*Tj~_4RXSRtFEY2rNNbLsuXM0^eIw zuL4gYexBn~6^rHw*AL?$jBn}v|=h35KE5u9g8X)NXfKa=BmmiR? zU86h)WfxHa#IM+^G95UPbP4W9jDX=d4;GwlwQ8FMBdjb#27~LLY&W!nun3?_iRrZ! zT9B{+$@ciOv)5Pacs+&9qJrhLTN&!2Rxt0kH?(N zQzDr*X zVM>gGpU=i55g^sy43v9jAE>>Ld09o zOldB>Yf1#Fm~j@39#jj-9XTBwOxQ?02fP&_4M#xcehD%&Z1-_!*vILbl+}mgn3vr_ z;RV&7>n%5NgN?FX)oz2*H&?%u!5OS^gT}IXyJMM~;*@^8ygfIE`0Ry%Kju)sLd1Y~ zU9le)>XxqBdI#>&D^wU*Q<<(h?WP^r0^MoL7-t5_c9rW;!vgJKOQ4QBF==EKK|@=w z4(!y%kOV{yBg3>A^}z}T%w@0sC5jorxe3iQAXWVnmE3&yEN10@ErWadl+a>fY@n*J zs+m33p)y`mM-E!R&yM)5IgK2r`N;Z?7^PS2PWMjTWmFcCnkmBA@2^oIA{+Wqw}{4` zV(DTJptpt%eH4uJerv8kq4d)-Dz~(1N23fBBwx>=59ChfM1X(lPt;?8x8)+=Uu1eS zQMD?^9=D!zKcoK3DxFg96qQ?YgI&?Dlrjz($814lHP`qEDm|srNaqzB%cSZngdr>K zX^t$iJ~4Uh(b+tH5@lG9;a`Pvo3ce~8r;RabD6<<@@~c;qn&HHO}VAxjFP#}Tgs(< zz17j`bc5H0+LE#2j2q=AB2Le)Jym~-{oY-CT;Um-X=-+0kU_8ary>Bn zd34{>ikSpLnqEd>260{6a&{O5K5P3)`|^b)Y>Z#>{7tK%zjuYG zVTwjkzdYn45sy?Quk@9)Wp1!4mX%y978RaSt>TSqR4aiWOg>HOAn^8EhFM zEa;y!xANf3QfA$Lx6kjR&`OfWI>6w)=YMxK@ca0M}GSXku zouePAr4ZT9PCt1``-;Zis?HVf`x#Sl-LJs81{ZhN*ojO6H1M=lgI1@NILfo&mk_q$ zuxho>1KPon&1G$L2}7mz@NI*W?NxUKW-ZD$LM~b>dFDa44=n;5vWu@(M&&CYDVf)_ z6192(7FjE`WxsFQq_=F#y$2=o`aQbTw?>*wZXHzB>>@6ax1`rm#GmMv3a-sFnUh6D zzOq&u!vXY90q?2B1S*Jq;s{vXYAIES zgHO=fUXP5(8 zsbiRtmz&fZOJYpD3oj7R5kCs7ViHoB<>o~Kq zY|7V*rDJ2Lb=$A=)u66fcM?K$q|zSJ&G<@-$Np3-MiL;LzKpHEMD=gWY7JbXrLgum(*45y#Y` zx$za)n<~wORZbp)C7C3A??XPQDVDLnt$lK_Bh%Xjab`FS&-wJ*>#1aF9`SCjxwsdO zv0#({k)s;tX#ol7X)P?dhd2a%;}&?QZ3uIV`PpfLb^71FjXe}dR!cib^-GbD9dD`$ z7Pa*<9V|rMdG_MLe_U^)Oi**NQmvNhK4|shcn)ndT#l7()@CTnl33`ARR@R}`&#z; zQkNyza>=sJI^m8xM*1M`c!hUi)9X92V=-ZNcFdjsyhCms) zsW=biNpZ6FfH<1jnELc2L>(1GDJhAC8}sOt8Yii!ziSNz-dv4HT!6HiIli!lUV`tjZFIZr{t{ z?9t!+Nyt$-eBu)n-C~P$e4fi;6WbPdQFNq?d6KiBTwv`EZuo`DW0}a>5K^8*QONh^ zi9>H|eECc*wa#=dZ67tLhPr0I4wQZFptx#0Msz%GR>adqQIsbpS*yMyizcIebVZJU?QfA`3ESlQrsE%Nw}};8 zynMVGmM%##*LfTJgvz92kEjM7%bHfI(xhY0s2Dk#5tc^8S&K`SA5R)8ei_&n4-A4L z<@U03MJT!`Jz-B`SrJd%qj`FusVlaK>wMT#g2>sfrnKuq>r=mXnqLC$^TLm|URaYJ zU;>_S&V;4>v#5^@u1*N9^x2r<|2oBq{a2)y$=x?pI zK(I6i0&PA);|>c~+qDNam?zIGwojz$@|5ESh6-vPA?2>zg+_#VY{)VVwpry3QP-Wq zGuLgFnX@CvazAI72xXDwN5tftp#2wtyN~>5EL9+M)kkJ}NJAk*=wWqW;+q2#sWJx( zc1vboAkD^9SBCNfHfXxsNI^o1^vdfN$rDVQd0eYz(ab{nc`e1I`DD=s+2IT(=3G~* zag-LbE|ToYn3qUUm)Kuc1IX=5<*swXT8}4Vw8J*@JU$f7!n_9vS>9K(g8jp5S8U79 zY8e37s9)MB*<0&^DY^7+&IKn`O~-S&jaSE?O=h*`S@gmB7Fs^kS|z4MN7>Po)&G)Z z=LHJuguE5e6T*Dku(6(@#xEpxf})bru;C{G#@y2*w<4sbYRsUTk})J(jErpAp*ksP zt~9Gv*$b|?Y160{XFlCta2I6E`7Pc|f?eiEPRs$XnBT>j0^*(|U86~->D@;h&wT)$j41?_hGrfO980Jc0GcRXWjh`-zl@)4E@xi7d04w-PS{-E42KpM#qL( zGaY9hRj*%y+S?%0W4ZZo*CntGWi_2Lyc@*pOR~g$t48MYz#hm~*YRtvs342nf6F9~ zwn7fCp<)_n%iF3Wm2~u_1_ZaPvTfisb%eovAY_lZX%4)!2Caz$S<6#b<|wuWfVU+S zUw=z`uq0P5#yF@)^>Rk8FBi?yfl5sLg*6pqL`9zERN-r7ONG zYdD1<@bZjCdU=bVZ&zt(3wdvLAtFs3caIR~GqyqqZGw*-kEkh3sD?N{}O&f4Lh`VGK zbxlpO- z!dKJ)tF8o9Fa}gGe)E*k$SAoM2rqGFRm?1UF;wD){J9XEQx}+9sb7gdZr4%h8M=6@l2s1I9Da-pb}@zYJa6La#yQ3^(R*Oy z=A)$1w+ky;uzmHmnIHkYK3pAoEoxuC(VefXtED-XMAZFN=c3G(9}wuL=iI9f_^{o5 z(X9h@pGE6NO}N|&xccRSvm*`fLuh;W0sIDOkU%JP{)0Atg3OB|o*|B2=O*6#%|X%T z)G~m+H{{`z)4R-ly}t)`8#m4`x6qeiysOOZEH*H_F{!UU=2P)PlW2#y);OH8vQ(3|6AlMU6G$;?EChNq!FErRVFxWt4D$F5jjr#P77xIBJYsz9c zraV*PlhNNVJ%#Ygvm5Ce9}JcJ$rT^m%!8}~%d=C*b%$Q!h09QKQkketU*!Zpcv`y_ z-Ce*~m{+QV>qmO^6za)9yOO%{R93{)U!!crV-c9MJxZdV#`ll3|H#r(iiqEV!jq~J_!%(!2Vm0V5Eo;i8I2D4f_e8V{<&NV%rm%b&8 zD1|h$N_BG6Zrb{jY1DOf*tbu0zq3B3E77d8 z!J+INCw0v5#}P(vidd1yjqH44jT>!}mAkg8oTFTj0;yoxT-N{S_mI5m)Q2a3$S`|A znLA-Op80g%Ae$2T!N_9gFupN!W=6;*{``tOb1FWSN|9YD$7?6RsMO7Pgin!vq2+L` za8FVwH_d9TKi^H&9b?4~g(=FP4YbEwCeN?OEvt}v=mKxH%0GTg(l0LU8_Siq*- zt5k1BAxp>v_tR3{;caCF&yHTR$KNfTZ`&L`sNcDiwZTTW1x8j*yptKB`N2lRKK10WK6`c30xy}dEe%7Z(K^-y!(R%Y&wnfV1Gntb$V+Gtel~>= z=~*zilX*kq)U2G;waL|$Iw4o~8mz%!9?&%W5Z?=nzmuAkUKEj-8dh%$d4$%MiePd? zAo({*{K%;?s%j7gl|W|yOoxhznvq&nj;kUlv|K7P-{(-3)v_j2G-}C4tN2(cCR5&e z31qzlqkk-0=tC7w!^lO>+XF`jF!&v;WD;O3( zj&ZK>q}a@R!Hj>d*x7*@Ay;m3q_p1OC-UokT`))RcSY*B>Mzv_h|JREc_mj0_A*z6 zy%lZXUmUC70J>Ek|`v^V8Mz{P9JuJ4$h3!QMI){ZA9jBJXhzADH>5#MYz;d zXOl$*Ha;BqD(@vof#5{`5_1AjSIZEyZL~5@Ql+GE#Wtzk&`Kxq1=GbOu6)l=N%FR( z;1vnWWfbdw+!RoA1s_Eh!QXomW!?f{cwDe#&AG;gMYxmFPE88KTke(kR15#G)2~tG zSH+RL@x>Uz$hRs-Tj?E#`;`tO%z=H7xTHHHdkJJWEq0uZxy)Q36IEc0Qpyl4NgXWN z$!=45Clv8g%(4`Vb?OXscvT-I@a^97j3vv#bKn1R33($a-a3x4cYJL zG`Cyx;;($(Yo<53B!2Vz6WQ*G!ygQ<9)sI0ik*XEz3-~U8~TEaSH7eki~BUV?j31I zg5)U#$+Nn&xLZ(`%d+Hdn|t-cuY5R<(ZjIf`*7a61@)sZ{`=R=G5xd`!3+->EG@%Z zN8&5Rq#oj1|Ak%qj89u)qq-2gLvPvd*v=m7`xleV7g@i_!x7Vjf0CnclE2A)+)=!r z(Y-wQ@4Spp=Oll_d&c5tTI|;z3dW?DTG{WIH2(>Ctk0scAIe=`@?byn`vr<0y-5Gt zd)80!;GaPgmnOZrrh+{oicyM`nuw9aatFF*aya2ax0_$-b?HqZ2N0HCFnLuYlh6R@Ba5(sb2ovE$OB0H#p6!XFa4j4rJ^|bfx zU|y@cgMD)WO8sP0(lkoanYIUs0VJDs%FtW_`Mbu0B!Af6)(ZWN0wz=&N30!JxT|fLjAXU*hQfs(@L&X0JBSKOKE>j z2O#u=T?~RBHVWKO`gs`gkM30c)}3y;W|BDvp3nGpR>clfbpNksoYHn5f{^}=v`fbe znFl#(24(WKGd7x4+hO&{p=gt4(rons&E&@O}tn zfa|L!b`>P3M%rr!t6TlLuwxiRNxEqn=GR&oWm|E5=b<*9+*4=t zma9juvDPh#1QcdQ%vJnBb@79oj`ZW)dy7W_Vt$&;4G;nYLlS{}dnk0K+-b)HGzz#Y zE7`o0NnScpQa3u)8-zZx^>8>HX}JbSgS#=+zunn(X#YA(f8G8%Ru-3lPSGTshsvpfV|% zPTKQkP}A$zVP%VPV>-rFmHY$|drTcyA@~!vv^uvnsowRhEn-r>G00UZanJ}2!cIduKE1!hn}X;<{YPsxh9;t za@r9wmW{k2>CkpJ4#;g!`jk$W175!G#r;q)C9&BgbIodBM<^y{W5V41Y_z@@*j#9? z*uzi@6$_@G+ZJ;3cj0aOb~OS0oX8!mzxd)$o3cnyBIT!1byvnJFn-CzX*>eqH=j;C zqDK)Fh0$@##r69||8{Zfasi~^CAQm)OX|XXcMLJ!^TU0Y4l&+MK=c^hRr>VrCSmkY z@DP@ehLT9v3mvmtz9v)?go`vkWF_;nYgv|q93_Ys6h|f-QY)hi_iWB-D(zKkL(T_f zuqCf3k&g#ix2lxW1UmpI8-tO--T#=lYgXuJ$}Bw4ui#17nw7(_$DZxS>hZ)wUJBTA zVy{|m)CY9PsO#pF6PyxA6nV{U+}MO-2mVU1V2g*jX#o9F)Og?)DE3LMP&t5S?^8lu zB9oR?^Anb>U(~dsSx81cN#;TkmId7xQr}e>Bk&npex}>gHo$E*QiJ1%FCjOl!fMPU zsdqp-9`~I&mo0u5etPnLzAWEpER$2y=Jfwge1Ds8!Vp?FC_l4;2(pp}7hy01X5_#C z*Ko=DY2#?dM1nlQOTT~yQvc;k%EzoWeUW^QwJx0xtSO7u-FI?VaS6gf_{D7iNNUc zynvG>ApC8!k?mD7uXIjVixnV68Ia&1dM4c!8*&9E%Z^BnilsFRY;Wg|`WBecuu9Fe zz2oAYP;y?>85JOq2K`qAO~)<|o?(`kI@F-j%o0ykqTAo#{{+&zZ}i*`BVDDI?MM}l zuyqSY&H*HhL?nhWz@nH{Y?aTcGsTWEvl}q$l{qziNpr(wEv`# zza@88xVo;Fbp)6_dW3xJ0(O%;Rlb}ZDMocvz(a{r^A_ulE5CL@tLDRt8hL&if=qOp zouF?P>dUWDqD7wnxmfIgOg0U)+_qE%H4=Dx_dgkC_iQXuAkrTPt&uJW%IFK&_u-Q0 zp&H)yN)LFCu2|N;B$Gt99Z-Uo*3HMEYu2J*ASAVf0oOrOOh_6sg$li$6z~QyvtgS+u{YlLtC~d10BePU^NYQ3( zUf!;umJ2X*iH&aK;$q1&(DH~3Aw|<5ou>l1#KK&wlWm@GwKM{HbSs;hO;N6Cn9hN_ zbhSx{%M_rntWHWFbOqtI43JzS+4sD*@C0=`JzYf`6?+RO0+H**)_|5*1aJi8^B+D+ zg3dHAs%hRY?5{QWTH@l2y;Ccog%>3P<9iH%L-s@S7`!|QYl8+N+_`p;I?@jZ4ho>j zuhd6;m-?1C2bYd?5HMogG%(Y_?NDb~$apn>X>ZP`e&@r^7{}FfXkptY{*2~(qE*2ZLGAfTk z(`*$a)Yxbll;Nkg>*yvhs!Wox$lyMdnEfHXUa}?HUgL_7cPN29Ne>SxM79kdsPBb3 zDb!s~Nri!(bSP|RpuOLuJZ`ffyowstBo(tV<2V35A3nNn9(r?Y*l+4-ot$_{F(o7O8hFAwv(rMB zbnD#&T%+?7N{YS^e@u)Vx*g)bVQ%dDG$$EL3??k8xUKO(dTlO;TCjDGTnjC8KELq! zjx?%K0ES)E%6gg%7ydZ-_uvaR0~j9*i$)E6t(Kna+ox1`bB1GT$D?!$j*YSKu15&l zP_WZ%b@9dDu|ofPaIXUfCe-Y(=2|z~8m9e}GPA<+K5@|j>^2r7739C#9!|1B;wH^2 zIv?%bQ>~+~S_&Q8q;i$nbz+^_d43^G0Kwhe-3E7e zcLo9kcMlfa3GVLh5InfMyTc{_KKo>!{q67m_tf+}(=$)6^;Xw(SG`qT^)5@U$?#92 z!L-b~X|}?#5vVQ*Oibq1*xixgPEKx2ZulA`bMq5kfRKH)+=6~t5ZxX`ZOg6@+D4Sn z+?z(Cfncf$re_=0#pO=?RMK1oUu1#34I3ko*kc!i`ZTks0VJHE9^4OO16b>f2v%~J z3pJJ0anW4_y%NEdlAM#3XVUFt?5_JRl%I2m9P*L0W!cbr&Fw^G1jT@x9vMA-+hx0) z3yMjbc!&kw;v`Zo)Y$XbF-*g)uIXAV2Zhjgb9Nw6TB_u++9dkWrRS1`m1PcP3Oy4bk$ zgeK_nhJIDY*G0jCaw*-*r9%!;L9(z3N?gbJj(;dO?FnDv&;J1d{5ilSo z&taQ0p-qr9bWP$3O>Tg3+kY<{b{Qey`d}rvfhyPW;XMZ?%-S|;{udM`rTNR(P%9${ z?&lq;+-th6=~L0?^wfve@2iQ5ufzwsLxrnR4|=lC z$Ol3D!L)q*V%Lvv9>}v-G(lH0sv%*%*x3`M#o@#lFbau)7!h+xj&k5u(TAJ+_CWpB zuONyWNZaWMi7_QfnWKEgQlmDe^}vZg)!xh{8`X5k%Ma-;>saxCjG^)vF2Kk(iv!53CYKr!)L3}Np^M_0u)$Yo@LUN>Pr~2b;x?OJgUL<4o43RL*_4gPb(<0-L5}cV^LIygo*(Wq!U~ zLLWCik^O$09FX}dvm(Xt`T<3azUGTdU}psTp6@0z0s<5CzSTgG?d*q9ucRG*2)|lnQJcb> zQOG_d#rO{%sUA&U3H+PcUa7RVkV5G=B>@X4MYNd-3m=uboxCH>GyT*vO}E4~Xh=p+ zJ3rExwms+%O}W3_b)XmDeSzz0ROM`12+ zo>gVI_azm6y2sodfsmeLml!S!wyJ2FJ>?LV60S#-S4U3D(ELavRjU*RB+R`x^-q*f zL>We!wBmN{91_XW^F)rq68 z%~q(zJ=zueGa^&MdFfS+3Mk5xxlya+O!O5RI{n^l^t0+-_RtUp3#61UDGNte`PNj% z$ES48;1_oCPNTIp>Mah*U2E{0EP0}!P$@PGh}b@sZ%Qht!)F{|?RnmR4y z5gvWnFx7UgcoO(B0a4Ndx)w5E+tQYb)OM4* zTD&_n9h+%b}F8-IhryBbw{M% zbUHwy05boG-WlTAcqa2p_2WwHwf(p}%y_w=PMatO@|a}9EVf-)HBr@!dueymcF9~()-#?Pk1P#BE)5e9 ztO>S(o~AS;@%8AuKxjU>(QeZ@aPakDc%*(hy9E-zrhYmf<_?g%P}*Ln7+UkD+;yBL zIU*i{6+_bTLa=y&7@q}uy`)wu^>yupe#TyxX*843kO8>M78k~)L$gUHrq8alh~Mwg zU8$Ps1~7Kct!8e-7e&8BDxkqFr=VFY*e8)RUO?9p+|=#%iNn20_MsNX1^1iR%X@_reR4Y! zOCpHH;bFCYs4<@+YZnf@h$#1nf9LhhL`g-3w#K0}*yF*aBp6YKq)Gi0e%1ovLOCq3 zq~yGmQ(ALfyGVp9)Y1dt`$3sOL9vE^OT&U%O$KFAZB?cr3ul$Xdoa14%kNlZb*YDg z{g>v9bou)&{w73Na2Ia$AwHW#6 zZwtcqFN7PR~(EJEf;tF%xp=RW04vsu%y7FJA zX9M5COdcp@PGkdotXIUf&5{CA&3nKe?^s_Etw<1V%0A$=ECK5F4?UC-NBSA*35Pp8 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 I|N8cS03H^~3IG5A literal 0 HcmV?d00001 diff --git a/src/test/resources/client/modules/rampart-1.6.1-wso2v26.mar b/src/test/resources/client/modules/rampart-1.6.1-wso2v26.mar new file mode 100644 index 0000000000000000000000000000000000000000..2dd6609af48552658fb4f2f96a6fbce0a01f3125 GIT binary patch literal 9366 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 cw|~|h!k3Qvds@mWnsTqD-i=fvcC(=Y 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 Rh!iM9rnBJ3075NF{~tu`p4$Kb delta 15121 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 diff --git a/src/test/resources/keystores/products/store.jks b/src/test/resources/keystores/products/store.jks deleted file mode 100755 index 02d7c4e5a4209a1df345953a0e2bc6070e4a220f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6377 zcmchb1ymL5+Q)a%C7^V7Gn9lNjkJJ(gh+R7N+qNlR9ZSWEhUYBn-ByE>F!ieKnw&n z+>Pg)`+3ei-?_2wy0g}-nP+CryJtW1{Qm#RCYxEgR zh1aYHeWwKohBN?#n7G`SU>KMSLJS6DfMCIp{J?>Cl`LzwuL~+HeX;~Al{UtU1Y?Z| z_XoMieRYx=3k2&cB-91Ww_#1$9ouPoaFY2-yb|vuKTR_}&fLtatg3r>8C9rcip)FC z&a3ahhLH*&hrgcBeh!IxEZ=pi>hnCG7~EeR_xN<&iKdIzg}3{ph9dx|~eOjBiaj$=HS{9dr7FMGifeI=LqZyg2&dJ7J)S1pn-e{)ib%k@rTc|8q7)9xl;-_m=EFtHh>>qUJ*$?$mcl&eI8MSwyTjRim703!{PT(;M8WF`8Fo z6Z%Br8T{`pcr9|?5HkwU8sBz~*03|`P@DZYdx#fSR#0g3^etmgbaa;H1o@LuXD3d= zl)!>oKKq&GwisbU>E4OycEaZ};7YcASjlN?zh$2%SpCeX#vFmr^HjvWy;1DP9PwOlUvnB+z4q#NeB zwDrQ({e9~6ii~RMQWrZPPyB(5=NTo>j}-b6#9e5-EA~+h`Cx_u`U-!{;spZMDsixhd*mFf z|F}I(WdJdSn_2%xLYy=eSw;{(7r(8N?6GBUaoDz3WUQ*Fdl#l;K*kSXR-72 zgiG-A+y9b1J_`#^bpH5UtUdWH-JSR?&H2y=wBVp0A_9ZYVK68JRt?Zz#Dp+1*k#;R z6H={vUa}?=GkDfKZ#R#Q1tJ0Zi`&dF3V>5=;x%N zKQ1&FjFviyQi+VolV|0;eo0BF8rB+?{42f8i7Cj!!UvnEa6?8TUtNdW^Osj;g483H z6vhzVCd0J;traoSVs=_OsWckOeR$h(r1#haG2)`SWGVv=OL6*>X0 zVvf4`L-%3suCAUxu86#6~WS19ri zwN)~he3BaWHXmPR5uvBA?;?`R0nvyBGCbs8$wXdlQ zh0{iyo>Wf0qEv9BuFz)5kQbf-YpV&@2NqAPYMbasJ=N6MnYY$KXV1rZT|DW}Z{wWN z)kgtBI-&})SK0hLCa*;$+Fz|3?V+y4*TcESVo3cokg(KaRT5uf(-tan{VH36OJ}te zIX9G|7v$m;%se_Z6uWTa@zapH_UNYln*0sV$NTPq<*_@t_w|e8f=+1l_Q0Cahzja! zO0%k|+T=B*Z2mgh)- zfMEbo^x^l!fiZs~Zs{yOxmRDAO$s?LF4cqcP5oGT_2(@A29)?+uf{Z=8>45fE4`!JOwIwT(yGz2;lyT6kjV0fk| zsS%P&Q*a2owo4a2uR|3s?NO69p>=1=(>9i1xNb(DLsb{++QXv=4X<6(T&!K)=8x$; z@;kw1&G*dM1n;NJK`oCA?s&T#@Jo~>eBU)}#&W_lj7$uX{s9!k()<^kUR(ViPEXJ{ z#h`KW_!TF^+#1CXuSL3(4sNNe9V|ZkLpJ|QIH8T`C-?dH{p_E?ltvqV!=1K?ecSqE zvm^R0qQFqJB%PqIiOr!5&wFrvx>7z=v)l%vMBFxl(OR_abggh!iAD3B)um!A=Zq7x znq?$-Uf8K?vhu+!83jgi9(ZK6*?&(rlDQ`luiRitk{HKow*5;J4`FYv0fjNUDqO+; zdecytV~hi9!mIh2GM@MES6YOQhmLBhc}xpB9cEGPyh`>2C5gr6Ij@CCtPq-TnjLBh@OtB?Jad7In#*bQhb=g_T_#V9Cam0ev>DY3HUHJ`vVousfaLEuVFQ?G zoFHHjAaZey9>xcttuLP=ob9iT??Q-8*>gY|$hi;SHz2h8#}6}K$UY@XPApBv@PIpFxA(~n_dJf z76mWMvoZVavrgv-@W|wy)%D8urUqyXecA)%Bka=8Og*M@u-^$MYNiX?Fmt+5FsHUj zlvfyi6q`xzyIpE)P~_zxYjK7Y!=IVH-g-KhlQ*!HT}|?1W(c)#wfLpcS!zHxI<06v zoBpKHK{VIP^mO)6-;bS>T3x9J6bi$iJ1u&u*i_H#MKcZ4w-&oR8;3-z26e+lx=s`H zEKaKrA0&UiLUiZGBrCr?Rd~(R*Xm<3>W^{q=ek}Co1{Ud>?GMYBH_cx$MuJ!6o*m? z2H)Fu>cA#E9Y;3WTdgmL@#s1;%ZD7uDq<|ybYzy+31k$%ad4TN69^5=azTi*$ zCPTzgmrR-+dqU}wDWXbW0;L^}9%l@nnPx-CgJp+ghbEt4&H!(;MsBRBX1^S)e8GKp z9>Y=c7@Kx0PYAPXF4n~-QZ?&_yfMI?)^f;9Vf&TeCv<59-a!Q>6-LWDy2)J=4h8}H>9iMFYWk=gQ5Bt!W<06$p9R_o z4d%}-Z{mH!EKc+95XAT95n7DF#gZT@a3wCNA9u1AgFlCH<3uT8k;+9=K+L;8x=O=m z8gb&;@sz_omNxKvY0TiCNqWt{V~>5iOj5#ls~PLjO*OAL2B@SNGc~pFFyoQ{W%nR; zoVM<*OtpQDaOwm2$(!OqxiO$QW!OdNlWK7j@R^mmO-vG}Qw1)i6!JREw==bHK969Wap)~dyXkQ;;t~gTR~=} z!c74sfQIJxtqvjDZgA0ao=?BpjhWcTxwB^(?XR;U#>y+*j{ayj|GqW+vsOpu|C0rQ+B{JWI_LeA5%dRI zcl=Tu?i5_MS^(=}|xtwgX@3#64Djocz$N=hFc z6YL_#4mA`&3?w6#Mpjj}Y>Pv35#P?z!Za}GMCjmmnQ1b*T&xm8uKjNs9g}VG&Cl-K z_sl`c3IUs>W72-xZU0fD6PZkfDx_%AZnp%{avFSm9;2^zHlWC>#v#0~b?Z=i#3z}$ zUV$X6ldHp#E>%R5)!3=I8_#1~f`WxSSOy`;&{{^02U+Ma6|mu_4!#7VdvLpz0k*RS zf}|?Img>4o@KP>?7fS_mCbt@dKtGFJ2~rg$Mj&K*1cY8dGc2xdJT33{)ShO>N(sO6 zq+;uRlaa5+)>zzK=wc&Hz33!+d*u3TxBhMa-F@54M0-yGKB|7I$n<>;=hr^e2~!jf_$N!6tG7^sv86?=)9^yMf)-G#3TCvKp` z{3QJN8^cvgl5TtB==^{KVh=})J$_l@odUGjx1q(p`A@{YkPY%!Ss2e0M4`ewGEx~E z>OPXMNN2I=d@BbpYB$lH`yoRYt-I?aJB>IY_B}!{{7DOBm{(nUmeTw-EuJ5ns&?Vxq@xcGcJ0CA%dd! zZA}aX#0ur^%s3%*|2$fLd1F@_nZhlcV~}NFe*jS+G79hp)_lr7@G~XGfju=6bgLm0d0T+(osW!s(}XdKSpv&qC4*ikXl{eOKkA z?e5WsfsIJ_gu*jtRReOteHr3_wR6kd)mKW5vgK3qSDZnx+yru@R98rp6b(?S;ebl% z=P>p`eUmwxa=3Oju9kE22IIU;GB(xJlPOC)2s3JJcTdjn!|Q&OIZd|Y=)4T5mmU=g zLHcgXydU4Be86t@5H)ny4TJwQ(?=jLL`G{dM{#-(QzkXxb)mJ*?9&g-f`=eLc5+Uyn^?{=;T|6c9?xUl6~DB-*% zX64oP?z+Y_(V*9VN$mvyLD8QUwl2bdzOY65FDz``_V7^A`b)i^2{1HbN1W%lwi6Ye z8P*yB2GM1N%}m$R2Uoq%M*2wyBR+9cXiRiyzMvb(71^vJ)lAqSHHA+k3AcoLQD&XH z>Su2b(l_a|^_PBZJ`MR^BVs6+$%!-B6Wt_@&Bv5;m4NO*5%vXtpH#}UmqlWyt!Lk7L4)&iQ=Lxm+-C#L5H-+#KxxBfa-A_UMycJ3%qc`!a9% zPCm=tB;V~I$Mq%6eZq78vEq>Ssh*-8wX+yIts&LszJ(}PN1VXjtYSbg!9)fB)ioN1VVn4AU_Ufkq^WMB?uO$yDBkNt6-{uO`Q~5sfDU$bbRoJyn08=mXTU+lljKt>@n% JbCxQ4e*P`$M$_ma5#byv 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 C!H0GL delta 1812 zcmbtUX;f237)>58F(ge8f-DM%tTEd3WnoVRX;3ynb`uc{_yh!l0*z3Qi2_1E1SE*U z5g`QxL_vt9vbmumSglc!SQS~^DuPx)IHIvZ@=p7&Kl)?N-1+9-nLFQn=leqm$npWP zYFssrLZJZlu=zUc>`G2#MDvrP5(TtqI4K2%LfdL*oR~#nHqh)KCpC2qln%H<>F5Rk z^jZyEgNRsdYL;i#G!cykF(@d8PJpzrS|K2o4EXxci4b9KfhU7uLH-On8Pc6w;>h?g zesXM_SP+wvD4;KdNOREzi)4(iwC*odG#A z9eGAN42B~Ea$?wN0{`u0?Z3_Z4=+*$!&F>L8f^Q7^KKszO&#mlskeP>Z|hH$#OL>l z#DS*SQOS3TJ$a?3k2h6{4p&aiYSa6rnP6rJiebX zJQS93hm^6)?R%=0zPql}7k8QGynlNGr^WA`u}l%wW|LdzXFQ}(NsVejmDtBbl~SJt3DQGr8bp`HZ2b|Iq!9AOIBgRh!xyj zWvm;_KH~gF=fqL#CfM4?o+E5#6HE8~V&-db#=fS=B+`GTrDqYY=gI5X&rr-MicJUgTq>+MsrRIHk9f1r@i8YwsxYeJ z)T(2h`*|MAaxPt`vakZf@K5_DvPUSAB_BH#C#HOjrVF6{FdrcYZ_H~0I~@&vfKU*H zwm!mgUjRsH^JSd2yXQ1Gp?x{iOFdjMVG%!sSb2;pt)W8~Z z3BNWmRCP7oQT`YF#4N_X`rF$Cx{CpAjY9U^gl(y`gmKZZAaR%4To4@TsozYuz(@l_7ikm;p-%IzB=VCy7Z78+ z1HM+Pe#J)QGH<>MVla0LA36Q))-L2RE%746qg|po!sR8sMxc-II07fqJQ3)!XA5#g zwU~=QAUzYYb08}KkecNqnPlfn5K?d9edLtt;t&L?j`V3sgKFkeA(6+|=z~l2gm6+^ za$JlcI)R^@%#2}1^VNBnYeN#bwTuQz#r2k&MAX(-0Qz@tnR9p|R3 - - - - - - + + + + + + From 84c5a296a454bbb30815e43ff39de192c4eaf431 Mon Sep 17 00:00:00 2001 From: kesavan Date: Thu, 18 Apr 2019 13:18:29 +0530 Subject: [PATCH 2/2] Fixed minor doc issues. --- README.md | 9 +++++---- docs/aggregate.md | 4 ++-- docs/config.md | 2 +- docs/import_set.md | 4 ++-- docs/table.md | 6 ++---- pom.xml | 4 ++-- src/test/INTEGRATION-TEST.md | 8 ++++---- 7 files changed, 18 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index adeefae..51f5c24 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ ### ServiceNow WSO2 EI Connector -The ServiceNow [connector](https://docs.wso2.com/display/EI640/Working+with+Connectors) allows you to access the [ServiceNow REST API](https://developer.servicenow.com/app.do#!/rest_api_doc?v=madrid&id=c_TableAPI) through WSO2 EI. ServiceNow is a software platform that supports IT service management and automates common business processes. This software as a service (SaaS) platform contains a number of modular applications that can vary by instance and user. +The ServiceNow [connector](https://docs.wso2.com/display/EI650/Working+with+Connectors) allows you to access the [ServiceNow REST API](https://developer.servicenow.com/app.do#!/rest_api_doc?v=madrid&id=c_TableAPI) through WSO2 EI. ServiceNow is a software platform that supports IT service management and automates common business processes. This software as a service (SaaS) platform contains a number of modular applications that can vary by instance and user. ## Compatibility | Connector version | Supported ServiceNow API version | Supported WSO2 ESB/EI version | | ------------- | ------------- | ------------- | +| [1.0.2](https://github.com/wso2-extensions/esb-connector-servicenow/tree/org.wso2.carbon.connector.servicenow-1.0.2) | v32.0 | EI 6.5.0 | | [1.0.1](https://github.com/wso2-extensions/esb-connector-servicenow/tree/org.wso2.carbon.connector.servicenow-1.0.1) | v32.0 | ESB 4.9.0, 5.0.0 | ## Getting started @@ -12,9 +13,9 @@ The ServiceNow [connector](https://docs.wso2.com/display/EI640/Working+with+Conn #### Download and install the connector 1. Download the connector from the [WSO2 Store](https://store.wso2.com/store/assets/esbconnector/details/74999163-6706-41f6-a564-61479b99918f) by clicking the Download Connector button. -2. Then you can follow this [Documentation](https://docs.wso2.com/display/EI640/Working+with+Connectors+via+the+Management+Console) to add and enable the connector via the Management Console in your EI instance. -3. For more information on using connectors and their operations in your EI configurations, see [Using a Connector](https://docs.wso2.com/display/EI640/Using+a+Connector). -4. If you want to work with connectors via EI tooling, see [Working with Connectors via Tooling](https://docs.wso2.com/display/EI640/Working+with+Connectors+via+Tooling). +2. Then you can follow this [Documentation](https://docs.wso2.com/display/EI650/Working+with+Connectors+via+the+Management+Console) to add and enable the connector via the Management Console in your EI instance. +3. For more information on using connectors and their operations in your EI configurations, see [Using a Connector](https://docs.wso2.com/display/EI650/Using+a+Connector). +4. If you want to work with connectors via EI tooling, see [Working with Connectors via Tooling](https://docs.wso2.com/display/EI650/Working+with+Connectors+via+Tooling). #### Configuring the connector operations diff --git a/docs/aggregate.md b/docs/aggregate.md index d3467e8..afc1ad7 100644 --- a/docs/aggregate.md +++ b/docs/aggregate.md @@ -106,7 +106,7 @@ Following example illustrates how to connect to ServiceNow with the init operati ``` -2. Create a json file named getAggregateRecord.json and copy the configurations given below to it: +2. Create a JSON file named getAggregateRecord.json and add the configurations given below: ```json { @@ -128,7 +128,7 @@ Following example illustrates how to connect to ServiceNow with the init operati ```bash curl http://localhost:8280/services/getAggregateRecord -H "Content-Type: application/json" -d @getAggregateRecord.json ``` -5. ServiceNow returns a json response similar to the one shown below: +5. ServiceNow returns a JSON response similar to the one shown below: ```json { diff --git a/docs/config.md b/docs/config.md index ce1e148..4ec3a22 100644 --- a/docs/config.md +++ b/docs/config.md @@ -65,7 +65,7 @@ Following is a sample REST request that can be handled by the init operation. http://wiki.servicenow.com/index.php?title=REST_API#gsc.tab=0 -Now that you have connected to ServiceNow, use the information in the following topics to perform various operations with the connector. Also, see [Configuring the ServiceNow Connector Fault Handler Sequence]((fault_handler_sequence.md)). +Now that you have connected to ServiceNow, use the information in the following topics to perform various operations with the connector. Also, see [Configuring the ServiceNow Connector Fault Handler Sequence](fault_handler_sequence.md). [Working with Aggregate API in ServiceNow](aggregate.md) diff --git a/docs/import_set.md b/docs/import_set.md index fa9fa4c..1dbe0a6 100644 --- a/docs/import_set.md +++ b/docs/import_set.md @@ -201,7 +201,7 @@ Following example illustrates how to connect to ServiceNow with the init operati ``` -2. Create a json file named getRecordsStagingTable.json and copy the configurations given below to it: +2. Create a JSON file named getRecordsStagingTable.json and add the configurations given below: ```json { @@ -227,7 +227,7 @@ Following example illustrates how to connect to ServiceNow with the init operati curl http://localhost:8280/services/getRecordsStagingTable -H "Content-Type: application/json" -d @getRecordsStagingTable.json ``` -5. ServiceNow returns a json response similar to the one shown below: +5. ServiceNow returns a JSON response similar to the one shown below: ```json { diff --git a/docs/table.md b/docs/table.md index ffd7bf5..2318d9e 100644 --- a/docs/table.md +++ b/docs/table.md @@ -69,7 +69,6 @@ Following is a sample request that can be handled by the getRecords operation. "sysparmExcludeReferenceLink":"", "sysparmReadReplicaCategory":"", "KeyValuePairs":"active=true" - } ``` **Sample response** @@ -811,7 +810,7 @@ Following example illustrates how to connect to ServiceNow with the init operati ``` -2. Create a json file named getRecords.json and copy the configurations given below to it: +2. Create a JSON file named getRecords.json and add the configurations given below: ```json { @@ -828,7 +827,6 @@ Following example illustrates how to connect to ServiceNow with the init operati "sysparmExcludeReferenceLink":"", "sysparmReadReplicaCategory":"", "KeyValuePairs":"active=true" - } ``` 3. Replace the credentials with your values. @@ -838,7 +836,7 @@ Following example illustrates how to connect to ServiceNow with the init operati ```bash curl http://localhost:8280/services/getRecords -H "Content-Type: application/json" -d @getRecords.json ``` -5. ServiceNow returns a json response similar to the one shown below: +5. ServiceNow returns a JSON response similar to the one shown below: ```json { diff --git a/pom.xml b/pom.xml index 5a4a766..1d9e4d0 100644 --- a/pom.xml +++ b/pom.xml @@ -22,12 +22,12 @@ org.wso2.carbon.connector org.wso2.carbon.connector.servicenow jar - 1.0.2-SNAPSHOT + 1.0.2 WSO2 Carbon - Mediation Library Connector For ServiceNow http://wso2.org servicenow - 6.5.0-m4 + 6.5.0 4.4.17 4.4.2 4.4.3 diff --git a/src/test/INTEGRATION-TEST.md b/src/test/INTEGRATION-TEST.md index 7f735e3..a1f19c3 100644 --- a/src/test/INTEGRATION-TEST.md +++ b/src/test/INTEGRATION-TEST.md @@ -9,14 +9,14 @@ Pre-requisites: Tested Platform: - - UBUNTU 15.10 - - WSO2 EI 6.5.0-m4 + - UBUNTU 16.04 + - WSO2 EI 6.5.0 Steps to follow in setting integration test. - 1. Download EI 6.5.0-m4-m4 from official website. + 1. Download EI 6.5.0 from official website. - 3. Compress modified EI as wso2ei-6.5.0-m4.zip and copy that zip file in to location "{SERVICENOW_CONNECTOR_HOME}/repository/". + 3. Compress modified EI as wso2ei-6.5.0.zip and copy that zip file in to location "{SERVICENOW_CONNECTOR_HOME}/repository/". 4. Follow the below mentioned steps for adding valid certificate to access serviceNow API over https.