Difference between revisions of "SQL Organisation Import"

From Hornbill
Jump to navigation Jump to search
Line 109: Line 109:
  
  
* CleanRequests : Set to true to remove all Service Manager Requests (and related entity data) from a Hornbill instance. Filter the requests to be deleted using the following parameters
+
== Execute ==
** RequestServices : An array containing Service ID Integers to filter the requests for deletion against. An empty array will remove the Service filter, meaning requests with any or no service associated will be deleted
 
** RequestStatuses : An array containing Status strings to filter the requests for deletion against. An empty array will remove the Status filter, meaning requests at any status will be deleted
 
** RequestTypes : An array containing Request Type strings to filter the requests for deletion against. An empty array will remove the Type filter, meaning requests of any Type will be deleted
 
** RequestLogDateFrom :  A date to filter requests against log date (requests logged after or equal to this date/time). Can take one of the following values:
 
*** An empty string will remove the Logged From filter.
 
*** A date string in the format YYYY-MM-DD HH:MM:SS.
 
*** A duration string, to calculate a new datetime from the current datetime:
 
**** Example: <code>-P1D2H3M4S</code> This will subtract 1 day (1D), 2 hours (2H), 3 minutes (3H) and 4 seconds (4S) from the current date & time.
 
**** See the CalculateTimeDuration function documentation in https://github.com/hornbill/goHornbillHelpers for more details
 
** RequestLogDateTo : A date to filter requests against log date (requests logged before or equal to this date/time). Can take one of the following values:
 
*** An empty string will remove the Logged Before filter.
 
*** A date string in the format YYYY-MM-DD HH:MM:SS.
 
*** A duration string, to calculate a new datetime from the current datetime:
 
**** Example: <code>-P1D2H3M4S</code> This will subtract 1 day (1D), 2 hours (2H), 3 minutes (3H) and 4 seconds (4S) from the current date & time.
 
**** See the CalculateTimeDuration function documentation in https://github.com/hornbill/goHornbillHelpers for more details
 
** RequestClosedDateFrom :  A date to filter requests against close date (requests closed after or equal to this date/time). Can take one of the following values:
 
*** An empty string will remove the closed From filter.
 
*** A date string in the format YYYY-MM-DD HH:MM:SS.
 
*** A duration string, to calculate a new datetime from the current datetime:
 
**** Example: -P1D2H3M4S - This will subtract 1 day (1D), 2 hours (2H), 3 minutes (3H) and 4 seconds (4S) from the current date & time.
 
**** See the CalculateTimeDuration function documentation in <https://github.com/hornbill/goHornbillHelpers> for more details
 
** RequestClosedDateTo : A date to filter requests against close date (requests closed before or equal to this date/time). Can take one of the following values:
 
*** An empty string will remove the Closed Before filter.
 
*** A date string in the format YYYY-MM-DD HH:MM:SS.
 
*** A duration string, to calculate a new datetime from the current datetime:
 
**** Example: -P1D2H3M4S - This will subtract 1 day (1D), 2 hours (2H), 3 minutes (3H) and 4 seconds (4S) from the current date & time.
 
**** See the CalculateTimeDuration function documentation in <https://github.com/hornbill/goHornbillHelpers> for more details
 
** RequestReferences : An array of Request References to delete. If requests are defined in this array, then ONLY these requests will be deleted. The other parameters above will be ignored. In the example above, requests with reference CHR00000021 and INC00000003 would be deleted, and no other requests would be removed.
 
<br>
 
* CleanAssets : Set to true to remove all Assets (and related entity data) from a Hornbill instance
 
* AssetClassID: Filter assets for deletetion by a single asset class ID (basic, computer, computerPeripheral, mobileDevice, printer, software, telecoms)
 
* AssetTypeID: Filter assets for deletion by a single asset type ID - the primary key value of the asset type from the database. Can also be found in the URL when viewing an asset type, 18 in this example: https://live.hornbill.com/yourinstanceid/servicemanager/asset/type/view/18/
 
<br>
 
* CleanUsers : Set to true to remove all Users listed in the Users array
 
** Users : Array of strings, contains a list of User IDs to remove from your Hornbill instance
 
  
==Running the utility==
+
Command Line Parameters:
  
When you are ready to clear-down your request, asset or user records:
+
* '''file''' - this should point to your JSON configuration file and by default looks for a file in the current working directory called conf.json. If this is present you don't need to have the parameter.
 +
* '''dryrun''' - if set to True the XMLMC for Create and Update organisations will not be called and instead the XML will be dumped to the log file, so you can ensure the data mappings are correct before running the import. Defaults to `false`.
  
# Open '''conf.json''' and add in the necessary configuration;
+
'goOrganisationImport_x64.exe -file=conf.json'
# On Windows:
 
## Open a Command Line Prompt as Administrator;
 
# On OSX or Linux:
 
## Open a Terminal;
 
# Change Directory to the folder containing the cleaner executable and configuration files E.g. 'C:\hornbill_cleaner\' or '/Users/YourUserID/hornbillCleaner/';
 
# Run the appropriate command:
 
#:: Windows: <code>hornbillCleaner.exe -instance=yourinstancename -apikey=yourapikey</code>
 
#:: OSX or Linux Terminal: <code>./hornbillCleaner -instance=yourinstancename -apikey=yourapikey</code>
 
<br>
 
'''PLEASE NOTE''':
 
* Follow all on-screen prompts, taking care to read all messages provided.
 
* If any errors are experienced, first review the Trouble Shooting section below. If you are unable to find the answer there, please seek further advice on the [https://forums.hornbill.com Hornbill Forums]
 
  
==Post Utility Actions==
+
== Preparing to run the tool ==
After the Hornbill Clean Utility has been run successfully, you can reset your request reference number or asset ID back to 0:
 
  
===Resetting Application Auto Values===
+
* Open '''conf.json''' and add in the necessary configuration;
 
+
* Open Command Line Prompt as Administrator;
After the Hornbill Clean utility has been run successfully, you may like to reset the relevant application Auto Values such as the request reference number. This is not essential, more a personal preference.
+
* Change directory to the folder with goOrganisationImport_x64 *.* executables 'C:\organisation_import
<br>
+
** On 32 bit Windows PCs: goOrganisationImport_x86.exe
The Application Auto Values can be reset via '''''Hornbill Administration > Home > System > Data > Auto Values'''''.
+
** On 64 bit Windows PCs: goOrganisationImport_x64.exe
* itsmRequestsAutoId - Request Reference Number
+
* Follow all on-screen prompts, taking careful note of all prompts and messages provided.
* itsmAssetAutoId - Asset Auto ID
 
 
 
Click the "Reset Counter" button to reset the Auto Value
 
 
 
==Command Line Parameters==
 
 
 
* -instance - This should be the ID of your instance
 
* -apikey - This should be an API of a user on your instance that has the correct rights to perform the search & deletion of the specified records
 
* -file - This is the name of the Configuration file to load. If this parameter is not specified, by default the utility will look for `conf.json'  
 
* -blocksize ''x'' - Where '''x''' is the number of records that should be retrieved and deleted as "blocks". If this parameter is not specified, the default is 3, and under normal circumstances this should not need to be overridden.
 
* -dryrun - Requires Service Manager build >= 1392 to work with request data. This boolean flag allows a "dry run" to be performed - the tool identifies the primary key for all parent records that would have been deleted, and outputs them to the log file without deleting any records. Defaults to false.
 
* -justrun - This boolean flag allows you to skip the confirmation prompts when the tool is run. This allows the tool to be scheduled, with the correct configuration defined to delete request records over a certain age for example. Defaults to false.
 
  
 
==Logging Overview==
 
==Logging Overview==
  
All logging output is saved to the Hornbill instance, in a log called Hornbill_Clean, and can be accessed from within the Hornbill Administration tool.
+
All Logging output is saved in the log directory in the same directory as the executable the file name contains the date and time the import was run 'SQL_Organization_Import_YYYYMMDDHHMMSS.log'
  
 
==Trouble Shooting==
 
==Trouble Shooting==
  
 
===Common Error Messages===
 
===Common Error Messages===
 +
 
Below are some common errors that you may encounter in the log file and what they mean:
 
Below are some common errors that you may encounter in the log file and what they mean:
* ''' ''SQL Query was unsuccessful'' ''' - this occurs when the utility is prevented from running the query to obtain the list of requests to delete. This happens when the system setting ''security.database.allowSqlQueryOperation'' is set to false (OFF). To successfully run the utility, this setting must be set to true (ON). It can be found in Hornbill Administration > System > Settings > Advanced, and filter on "security".
+
* '' '''[ERROR] Error Decoding Configuration File:.....''' '' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.
  
 
=== Error Codes ===
 
=== Error Codes ===
Line 211: Line 153:
 
</code>
 
</code>
 
<br>
 
<br>
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.
+
Where "HOST" is the IP address or hostname of your Proxy Server and "PORT" is the specific port number.
 
 
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:1050px">
 
==Change Log==
 
Click "Read More" to view the Change Log.
 
<div class="mw-collapsible-content">
 
  
* 1.11.0 (September 27th, 2019)
+
==Scheduling Overview==
** Features
 
*** Added support to clean-up Configuration Manager Dependency, Impact and Policy records when Assets are deleted
 
*** Refactored to remove duplicate code
 
*** Improved log output consistency
 
  
* 1.10.0 (July 12th, 2019)
+
===Windows===
** Features
+
You can schedule goHornbillDataExport.exe to run with any optional command line argument from Windows Task Scheduler.
*** Added support to filter assets for deletion by class and type
 
  
* 1.9.0 (March 15th, 2019)
+
* Ensure the user account running the task has rights to goHornbillDataExport.exe and the containing folder.
** Features
+
* Make sure the Start In parameter contains the folder where goHornbillDataExport.exe resides in otherwise it will not be able to pick up the correct path.
*** Replaced large data set calls to entityBrowseRecords2 with paginated queries
 
*** Removed calls to sysOptionGet and sysOptionSet
 
*** Added support to remove additional Request BPM timers and events
 
*** Added support to remove Request SLM events
 
  
* 1.8.2 (February 1st, 2019)
+
==Change Log==
** Defect Fix
 
*** Fixed issue with AssetsLinks records not being cleared
 
 
 
* 1.8.1 (January 28th, 2019)
 
** Defect Fix
 
*** Fixed issue with RequestClosedDateFrom and RequestClosedDateTo returning a query error
 
 
 
* 1.8.0 (December 18th, 2018)
 
** Features
 
*** Added new filters for requests for deletion:
 
*** RequestClosedDateFrom : Delete requests that were closed on or after this date/time
 
*** RequestClosedDateTo: Delete requests that were closed before or at this date/time
 
 
 
* 1.7.0 (November 29th, 2018)
 
** Features
 
*** Added a "dryrun" CLI input parameter, which when enabled allows users to run the tool without deleting any records, and the primary key for each record that would have been deleted is output to logs for review. Requires Service Manager build 1392 or above to work with request data
 
*** Added a "justrun" CLI input parameter, which when enabled will skip the initial "do you want to delete the data" prompts. This allows the tool to be run on a schedule
 
*** Improved logging output:
 
**** Logs everything on both client and server side now, instead of just server side, to aid in the reviewing of logs
 
**** At the start of the log, all configuration options (the CLI params AND all options & filters from the config JSON) are now logged for auditing purposes
 
 
 
* 1.6.0 (November 1st, 2018)
 
** Features
 
*** Added support to delete Board Manager cards when parent Requests are deleted, if Board Manager is installed on the instance at build 100 or greater
 
*** Improved logging output
 
 
 
* 1.5.1 (October 10th, 2018)
 
** Features:
 
*** Outputs relevant error message if the instance ID could not be resolved
 
*** Improved performance and better sharing of HTTP sessions
 
** Defect fixes:
 
*** Fixed memory leak
 
 
 
* 1.5.0 (September 9th, 2018)
 
** Features:
 
*** Added support for supplying a duration string, as well as the existing hard-coded datetime string in the RequestLogDateFrom and RequestLogDateTo configuration parameters. This allows for the calculation of datetimes using the runtime datetime.
 
*** General tidy-up of the code, split code in to separate Go files for ease of maintenance
 
 
 
* 1.4.0 (June 4th, 2018)
 
** Feature:
 
*** Replaced Username & Password session authentication with API key
 
*** Replaced stored username, password and instance URL with command line inputs for instance ID and API Key
 
 
 
* 1.3.0 (February 1st, 2018)
 
** Features:
 
*** When requests are being deleted, any asset links records are now also deleted.
 
*** Added ability to delete User records
 
 
 
* 1.2.0 (November 24th, 2017)
 
** Feature:
 
*** Added ability to delete specific requests using their reference numbers.
 
 
 
* 1.1.0 (September 1st, 2017)
 
** Feature:
 
*** Requests to be deleted can now be filtered by:
 
**** Multiple Service IDs
 
**** Multiple Statuses
 
**** Multiple Types
 
**** Requests logged after a specific date & time
 
**** Requests logged before a specific date & time
 
*** NOTE - this version requires Hornbill Service Manager Update 1048 or above.
 
 
 
* v1.0.6 - 17/07/2017
 
** Feature:
 
*** Now supports the deletion of Asset CMDB links when clearing down asset records
 
 
 
* v1.0.5 - 01/02/2017
 
** Defect Fix:
 
*** Changed the order in which request extended information is deleted, so that workflow tasks can be deleted successfully
 
 
 
* v1.0.4 - 12/01/2017
 
** Features:
 
** Added code to process the deletion of:
 
*** Request Workflow instances
 
*** Request Activities
 
*** Request timer events
 
 
 
* v1.0.3 - 03/08/2016
 
** Features:
 
*** Added parameter within configuration file, to specify class of requests to delete 
 
*** Improved performance of request deletion
 
*** Improved error output to display
 
  
* v1.0.2 - 08/06/2016
+
=== v1.0.0 - 02/10/2019 ===
** Features:
 
*** Reduced record block size default down to 3
 
*** Improved logging output
 
  
* v1.0.1 - 12/05/2016
+
==== Initial Release ====
** Features:
 
*** Reduced record block size default down to 20
 
*** Added flag to allow default block-size to be overridden at runtime
 
  
* v1.0.0 - 10/03/2016
 
** Initial Release
 
</div>
 
</div>
 
  
[[Category:Administration]]
+
[[Category:Integration]]

Revision as of 16:34, 2 October 2019

About the SQL Organisation Import Utility

The utility provides a quick and easy method of uploading and updating organisations from an external data source into Hornbill instance.

Open Source

The Hornbill SQL Organisation Import Utility is provided open source under the Hornbill Community Licence and can be found Here on GitHub

Installation Overview

Windows Installation

  • Download the ZIP archive relevant to your OS and architecture. This contains the cleaner executable, configuration file and license;
  • Extract the ZIP archive into a folder you would like the application to run from e.g. 'C:\organisation_import\'.

Configuration Overview

The configuration of this utility is managed through a JSON file (conf.json), which is supplied with each release:

   "APIKey": "your_api_key_here",
   "InstanceId": "your_instance_id_here",
   "OrganisationAction": "Create/Update/Both",
   "SQLConf": {
       "Driver": "",
       "Server": "",
       "Database": "",
       "UserName": "",
       "Password": "",
       "Port": 0,
       "Encrypt": false,
       "OrganizationName": "FIELD 1",
       "Query": "SELECT <field_list> FROM <table_or_file>"
   },
   "OrganizationMapping":{
       "organization_name":"FIELD 1",
       "address":"FIELD 2",
       "city":"FIELD 3",
       "state":"FIELD 4",
       "postal_code":"FIELD 5",
       "country":"FIELD 6",
       "industry":"FIELD 7}",
       "phone_number":"FIELD 8",
       "website":"FIELD 9",
       "language":"FIELD 10",
       "custom_1":"FIELD 11",
       "custom_2":"FIELD 12",
       "custom_3":"FIELD 13",
       "custom_4":"FIELD 14",
       "custom_5":"FIELD 15",
       "custom_6":"FIELD 16",
       "custom_7":"FIELD 17",
       "custom_8":"FIELD 18",
       "custom_9":"FIELD 19",
       "custom_10":"FIELD 20",
       "custom_11":"FIELD 21"
   }


  • APIKey - a Hornbill API key for a user account with the correct permissions to carry out all of the required API calls
  • InstanceId - Hornbil instance ID. You can get the instance ID from your URL used to access Hornbill: https://live.hornbill.com/your_instance_id/
  • OrganisationAction - one of the following values:
    • Create = Import will only create new organisations in your instance.
      • If the imported organisation already exists and this is set to "Create" then the organisation will not be created
    • Update = Import will only update existing organisations in your instance.
      • If the imported organisation does not exist and this is set to "Update" then the organisation will not be updated
    • Both = Import will create new organisations and update existing organisations in your instance.
      • If the imported organisation does not exist and this is set to "Both" then the organisation will be created
      • If the imported organisation does exist and this is set to "Both" then the organisation will be updated


SQLConf

  • Driver - the driver to use to connect to the database that holds the asset information. Needs to be one of the following:
    • mssql = Microsoft SQL Server (2005 or above)
    • mysql = MySQL Server 4.1+, MariaDB
    • mysql320 = MySQL Server v3.2.0 to v4.0
    • csv = ODBC Data Source using MS Access Text Driver (*.txt, *.csv)
    • excel = ODBC Data Source using MS Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)

NOTE: To create a 64 bit ODBC connector using MS Access Text Driver (for CSV files) you would need the Microsoft Access Database Engine which can be found as an MS 2010 Redistributable or as an optional part of the Microsoft Office Suite.


When using mssql, mysql or mysql320 drivers, the Server, Database, UserName, Password and Port parameters should be populated accordingly:

  • Server = the address of the SQL server (e.g. localhost)
  • Database = the name of the Database to connect to
  • UserName = this should be the SQL authentication Username to connect to the Database (if any, e.g. root)
  • Password = this should be the password for the above username (if any)
  • Port = the SQL port (e.g. 5002)


When using csv or excel as a data source, the Database parameter should be populated accordingly:

  • Database = this should be populated with the name of the ODBC connection (the name of the Data Source - DSN) on the PC that is running the tool


In addition, when using any of the available drivers, the Encrypt, OrganizationName and Query parameters should also be populated accordingly:

  • Query = this should be the SQL query to retrieve the organisation records (e.g. SELECT * FROM <datbase_table_or_file>)
  • OrganizationName = specify which field from your data source contains the organisation name
  • Encrypt = boolean value to specify whether the connection between the script and the database should be encrypted.

NOTE: There is a bug in SQL Server 2008 and below that causes the connection to fail if the connection is encrypted. Only set this to true if your SQL Server has been patched accordingly.


OrganizationMapping

  • Maps data from your data source into the generic Hornbill organisation record
  • Any value wrapped with "" will be populated with the corresponding response from the SQL Query and is treated literally as a written example.


Execute

Command Line Parameters:

  • file - this should point to your JSON configuration file and by default looks for a file in the current working directory called conf.json. If this is present you don't need to have the parameter.
  • dryrun - if set to True the XMLMC for Create and Update organisations will not be called and instead the XML will be dumped to the log file, so you can ensure the data mappings are correct before running the import. Defaults to `false`.

'goOrganisationImport_x64.exe -file=conf.json'

Preparing to run the tool

  • Open conf.json and add in the necessary configuration;
  • Open Command Line Prompt as Administrator;
  • Change directory to the folder with goOrganisationImport_x64 *.* executables 'C:\organisation_import
    • On 32 bit Windows PCs: goOrganisationImport_x86.exe
    • On 64 bit Windows PCs: goOrganisationImport_x64.exe
  • Follow all on-screen prompts, taking careful note of all prompts and messages provided.

Logging Overview

All Logging output is saved in the log directory in the same directory as the executable the file name contains the date and time the import was run 'SQL_Organization_Import_YYYYMMDDHHMMSS.log'

Trouble Shooting

Common Error Messages

Below are some common errors that you may encounter in the log file and what they mean:

  • [ERROR] Error Decoding Configuration File:..... - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.

Error Codes

  • 100 - Unable to create log File
  • 101 - Unable to create log folder
  • 102 - Unable to Load Configuration File

HTTP Proxies

If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.

For windows machines, it can be set from the command line using the following:
set HTTP_PROXY=HOST:PORT
Where "HOST" is the IP address or hostname of your Proxy Server and "PORT" is the specific port number.

Scheduling Overview

Windows

You can schedule goHornbillDataExport.exe to run with any optional command line argument from Windows Task Scheduler.

  • Ensure the user account running the task has rights to goHornbillDataExport.exe and the containing folder.
  • Make sure the Start In parameter contains the folder where goHornbillDataExport.exe resides in otherwise it will not be able to pick up the correct path.

Change Log

v1.0.0 - 02/10/2019

Initial Release