Home > Downloads & Services > RRR|Chive > Documentation

Installation

Configuration

Installation


Application: RRR|Chive
Version: 4.01
Date: 2020-11-24
By: Misi Mladoniczky
Copyright: 2002-2020 by Real Refined Resource Scandinavia AB
Web: http://www.rrr.se
Email: info@rrr.se

------------------------------------------------------------------------------
You may install and use this program free of charge at any ARSystem site.

You may purchase support from RRR on this product if required.
More information can be found at http://www.rrr.se or by sending an email to
info@rrr.se.

Installation on Windows 64-bit:
Copy the rrrchive.exe file to a chosen directory.
Make sure that the following ARAPI and Microsoft DLLs are accessible to
rrrchive.exe.
Copying the included DLLs to the installation directory will allways work.
- arapi91_build001_win64.dll
- arrpc91_build001_win64.dll
- arutl91_build001_win64.dll
- icudt32.dll
- icuinbmc32_win64.dll
- icuucbmc32_win64.dll
- libgcc_s_seh-1.dll
- libstdc++-6.dll
- libwinpthread-1.dll

Installation on Linux:
Copy the rrrchive binary to a chosen directory.
Make sure that the following shared objects are in the LD_LIBRARY_PATH.
Copying the included libraries to the installation directory will allways work.
- libar_lx64.so
- libicudatabmc_lx64.so.32
- libicui18nbmc_lx64.so.32
- libicuucbmc_lx64.so.32

Installation on Solaris:
Copy the rrrchive binary to a chosen directory.
Make sure that the following shared objects are in the LD_LIBRARY_PATH.
Copying the included libraries to the installation directory will allways work.
- libar.so
- libgcc_s.so.1
- libicudatabmc.so.32
- libicui18nbmc.so.32
- libicuucbmc.so.32
- libstdc++.so.6

Installation on AIX:
Copy the rrrchive binary to a chosen directory.

Running rrrChive:
You can run rrrchive from a console/cmd-prompt.
Run "rrrchive" with no arguments to get a list of valid arguments.
If you run rrrchive from a filter/escalation, you should include the full
path to the configuration file.

Configfile:
Help about the configfile is printed if you run "rrrchive -help".
You may use the web-configurator at RRR|Online, http://www.rrr.se


Configuration


usage: rrrchive [ -test ] [ --par=val ] [ rrr.cfg [ sel0 [ s1 [ ... [ s9 ]]]]]
       Run rrrChive as dictated by rrr.cfg
       -test will run all searches but change nothing of the forms
       --par=var can be any of the allowed parameters in the config, where you
       replace 'par' with the config-parameter, followed by '=' and the value.
       Remember to put quotes around the value if it contains any white space.
       -thread x:y to run several processes, for example you can start
       three instances in three cli-windows by specifying -thread 1:3,
       -thread 2:3 and -thread 3:3. Each process will then handle one third

usage: rrrchive -formlist config.cfg
       Run rrrChive and list all regular forms in source and target
       No data will be changed in either source or target

usage: rrrchive -ver
       Prints version information

usage: rrrchive -help [ configparameter ]
       Prints possible config parameters
       Specify a specific parameter for more details
       Specify "all" as config parameter to get details about everything

This tool can copy, move, export and import records between servers, forms
and/or arx-files. The Merge-API-call is used, the same as in Remedy Import, to
allow data to be imported without change, including the Request ID and
Modify-Date/By fields. Pattern matching is disabled and required fields are
treated as optional.

To be able to use rrrchive, you need to setup a configuration file.

Here is a list of all parameters you can set in this file.

  source_server            = CHAR
    Holds the name of the source server.

  source_tcp               = 1-1000000
    Supply a TCP-port for servers not using the portmapper, or servers
    accessed through a firewall.

  source_rpc               = 390600-390699
    If you use want to use a private server, supply the RPC-number here.

  source_user              = CHAR
    The login name to the source server.

  source_password          = PASSWD
    The password to the source server.

  source_language          = CHAR
    The language setting if you do not want to use the default.

  source_authentication    = CHAR
    The authentication server.

  source_arx               = CHAR
    Holds the source arx file name. If this parameter is specified. If this
    parameter is specified the source_server or source_dir should not be
    specified.

  source_dir               = CHAR
    Holds the source directory where arx-files are read. If this parameter is
    specified the source_server or source_arx should not be specified.

  source_form              = CHAR
    The form where you want to COPY/MOVE data from.
    This field is not used if you supply a formlist.

  source_disabledeletefltr = { YES | NO }
    This selection will disable any filter that triggers on delete in the
    source form.
    Disabling the filter is done by unchecking the delete-operation on the
    specific filter.
    This can be useful if you moving records from the source form.
    The filters are delete-enabled after each form has been processed.

  target_server            = CHAR
    Holds the name of the target server. Specify SOURCE to use same as source
    server.

  target_tcp               = 1-1000000
    Supply a TCP-port for servers not using the portmapper, or servers
    accessed through a firewall. Specify SOURCE to use same as source server.

  target_rpc               = 390600-390699
    If you use want to use a private server, supply the RPC-number here, or
    SOURCE to use same as source server.

  target_user              = CHAR
    The login name to the target server, or SOURCE to use same as source
    server.

  target_password          = PASSWD
    The password to the target server, or SOURCE to use same as source server.

  target_language          = CHAR
    The language setting if you do not want to use the default, or SOURCE to
    use same as source server.

  target_authentication    = CHAR
    The authentication server, or SOURCE to use same as source server.

  target_arx               = CHAR
    Holds the target arx file name. If this parameter is specified. If this
    parameter is specified the target_server or target_dir should not be
    specified.

  target_dir               = CHAR
    Holds the target directory where arx-files are written. If this parameter
    is specified the target_server or target_arx should not be specified.

  target_form              = CHAR
    The form where you want to COPY/MOVE data to.
    This field is not used if you supply a formlist.

  target_disabledeletefltr = { YES | NO }
    This selection will disable any filter that triggers on delete in the
    target form.
    Disabling the filter is done by unchecking the delete-operation on the
    specific filter.
    This can be useful if you use clear (delete) all records in the target
    form.
    The filters are delete-enabled after each form has been processed.

  target_disablemergefltr  = { YES | NO }
    This selection will disable any filter that triggers on merge in the
    target form.
    Disabling the filter is done by unchecking the merge-operation on the
    specific filter.
    This can be useful if you want to be sure that the data is not be changed
    i.e. when copying from one server to another.
    The filters are merge-enabled after each form has been processed.

  target_disableaudit      = { YES | NO }
    This selection will disable audit of the copied data, to prevent the
    filling up the associated audit form.

  target_dropindexes       = { YES | NO }
    Before the entries are merged into the target form, all indexes on that
    form will be dropped.
    The indexes are recreated after the form is finished.
    All filters dropped and recreated are logged.
    If you break a running session of rrrchive (ctrl-c), the indexes are not
    recreated. You have to recreate them manually.
    Setting this value to YES can improve performance for tables with many
    records.

  target_clearallrecords   = { YES | NO }
    This option will clear the target form of all records before any
    processing is done.
    The delete is performed one by one, which can take some time.

  multipleforms            = value1 [, value2 [, ... ]]]
    In this field you can supply a list (comma separated) of forms which datat
    should be copied/moved to the target server.
    If you specify a *, all regular forms will be processed. Leading match is
    supported, and you can specify HPD* to include fields starting with HPD.
    You can complement the multipleforms-list with a skipform-list, i.e.
    User,Group.
    If you specify multipleforms, the source_form and target_form will not be
    used.

  skipforms                = value1 [, value2 [, ... ]]]
    If you have set a * in the multipleformslist to porcess all forms, you can
    specify a list (comma separated) of forms not to process in this field.
    You can use leading match, and form example skip any form starting with AR
    by specifying AR*.

  qual                     = CHAR
    In this field you can specify the query to be used.
    The same syntax as in the Advanced Search Bar in ARUser applies.
    NOTE that to specify a %-sign in this field, you need to put two, i.e.
    'Name' LIKE "Peter%%"
    Each %s in this field will be replaced by an extra command line argument,
    letting you pass qualification information to this field. I.e. ('1'="%s")
    will let you specify an Entry ID on the command line.

  primarykey               = value1 [, value2 [, ... ]]]
    A unique field, or combination of fields, can be used as primary key
    instead of the default Request ID field (field id 1). This could be the
    GUID field '179', or the 'Login Name' of the User-form. Or maybe a
    combination of 'First Name', 'Last Name' of a contact person form. When
    using primarykey you must make sure that the field/fields represent unique
    values. You can only use primarykey together with transfertype SYNC*, if
    you just want to copy you should disable primarykey.

  splitsearch              = { YES | NO }
    To prevent timeouts when searching forms, this option splits the search
    into several searches on larger forms. This option is most useful if you
    have more than 100 000 records in any form.

  maxrecords               = 0-100000000
    Here you can specify the maximum number of records to copy/move in each
    form.
    In example you can specify 1800 to copy a suitable number of records to an
    unlicensed demo server with a limit of 2000 records. This will give you
    room for manual creation of 200 records.


  multientrychunksize      = 1-1000000
    This program uses the ARGetMultipleEntries()-API-call to improve
    performance.
    The default setting is to retrieve 100 records in eache API-call to the
    source server.
    If you have a form with only a couple of fields, you can increase the
    chunk size. If you have very large records, you can decrease this
    applications memory usage by specifying a lower value.
    If 1 if specified, the old ARGetEntry() will be used instead. This is
    recommended for ARServers of version 4.0.x.

  maxerrorsperform         = 0-1000000
    You are able to specify how many error messages rrrChive will accept
    before a form is skipped.
    Specify 0 (zero) or leave the field blank to accept unlimited number of
    errors.

  sorting                  = { NORMAL | REVERSE | ALTERNATE }
    If you limit the number of records to be moved with the
    maxrecords-parameter, you can benefit from using one of these sorting
    options.
    NORMAL will start with the record with the lowest Entry ID.
    REVERSE will start with the highest.
    ALTERNATE can be usefull, as it will copy records by alternating beginning
    and end of the selected records. As a result, half of the copied records
    will be from the oldest records of your source form and half from the
    newest ones.

  transfertype             = { COPY | MOVE | SYNCDELETED | SYNCTOTARGET |
                             SYNCIFNEWER }
    This very important field will tell rrrchive either to COPY or MOVE
    records from source to target.
    When using MOVE, the source record is deleted after the target record has
    been created without any errors and a that the verification of the data
    has been done. Verification is only used if you have specified this
    setting.
    The SYNCDELETED setting will perform the query on both source and target
    form, and then remove the records in the target that did not exist in the
    source.
    The SYNCTOTARGET setting will perform the query on both source and target
    form, compare modify timestamp (field id 6), and then copy, update or
    delete the appropriate record to/on the target. This can be done multiple
    times for incremental transfer of data, e.g. restoration of data after a
    test session in the target server.
    SYNCIFNEWER performs exactly as SYNCTOTARGET, except that records are
    copied only of they are newer on the source-form than in the target-form.

  mergemode                = { OVERWRITE | NEW_ID | UPDATE | DUP_ERROR |
                             DUP_NEW_ID }
    The normal behavior is to OVERWRITE any existing record with the same
    entry-id.
    You can set this to similar values that is used in the AR/Data Import
    tools.
    UPDATE will update old records with new record data, leaving existing
    fields intact.
    NEW_ID will generate new entry-ids for all records.
    DUP_ERROR will prevent rrrchive from overwriting any existing data.
    DUP_NEW_ID will also prevent overwriting data, but will generate new
    entry-ids for those records that already exists.

  entryidmode              = CHAR
    The default setting is to use the old entry-id, and this will
    overwrite/update any existing records in accorance with the
    mergemode-setting.
    You can put a pattern that is between 5 and 15 characters here that will
    change the entry id. A pattern of 00000 will create entry ids with 5
    digits, a pattern of RRR000000000000 will create entry ids with a RRR
    prefix followed by 12 digits. The old entry id number will be preserved.
    If you supply a number starting with + or - (i.e. +5000 or -5555), the
    entryid will be transposed but keep its original prefix and size.

  syncmaxdeletedpercent    = 0-100
    If you have chosen transfertype SYNCDELETED/SYNCTOTARGET/SYNCIFNEWER this
    parameter will ensure that you do not delete records by misstake.
    A value of 50 will not delete ANY records if the number of records found
    for deletion is more than 50 percent of the total number of records.
    A value of 100 (default) can erase all records in the target form.
    A value of 0 will make sure that no records are deleted in the target
    form.


  deletebeforemerge        = { YES | NO }
    A YES in this field tells rrrchive to delete the source record before the
    new one has been created.
    This should only be used when converting the entry id on a single form
    (source_form equals target_form and a pattern for entryidmode set).

  verifydata               = { YES | NO }
    If you set this to YES, the target record will be retrieved from the
    target server after it has been created, letting rrrchive verify each
    fields contents against the contents from the source server.
    This setting will decrease performance.
    Use this setting if you do not trust that the ARSystem API will return an
    errror message if there is a problem.

  verifyattachments        = { YES | NO }
    This option is only valid if you have set the verifydata to YES.
    This has the system retrieve each attachment from the target server after
    they are stored. This lets the system verify the actual attachment data to
    the source attachment data, as opposed to just checking the file size.
    This will decrease rrrchive performance.

  skipfields               = value1 [, value2 [, ... ]]]
    Here you can specify a list (comma separated) of fields not to be
    copied/moved. Use the format 'fieldid' or 'fieldname' with single quotes
    surrounding the values.
    You can specify the string DISPLAYONLY to skip all display-only-fields and
    only work with database fields.

  onlyfields               = value1 [, value2 [, ... ]]]
    Here you can specify a list (comma separated) of fields to be
    copied/moved, or COMMON to only move fields common to both source and
    target form. Use the format 'fieldid' or 'fieldname' with single quotes.
    Only the fields specified will be copied. Remember to include Field ID 1
    if you wish to overwrite/update the target record. If Field ID 1 is not
    included, entryidmode=NEW will be used.


  skipattachments          = { YES | NO }
    If you do not want to move any attachment data, specify a YES in this
    field.

  fieldmapping             = value1 [, value2 [, ... ]]]
    In this field you can specify mapping of fields that has different Field
    IDs in the source and target forms.
    Specify a list (comma separated) of fields pairs in the format
    "'536870913'=>'666001001', '536870914'=>'666001002',
    'fieldname'=>'fieldname', ...".

  setfields                = value1 [, value2 [, ... ]]]
    Specify a comma separated list of field assignments, in the format
    'Field1' = "Value", 'Field2' = 3, '53870913' = EXACT("Joe", "Joe User"),
    ANYWHERE("Mary Manager", "Mary CEO"), '8' = DEFAULT("n/a").
    You can assign numeric values, character values and the two replacement
    functions EXACT() and ANYWHERE().
    You also have a DEFAULT() function to specify values when the source value
    is NULL.
    If you specify "" the value will be set to NULL.
    For attachments, specify the file name.
    You must use the internal format of the arx-files for fields such as
    Date/Time (numeric) and Selection-values (numeric), Status-History, Diary,
    etc.

  nicepausetime            = 0-10
    If you will move a lot of data during production hours, you can specify a
    nicepausetime.
    This will have rrrchive pause for the specified number of seconds (or part
    of a second in Windows) before each record is imported (ARMergeEntry) to
    the target form.
    I.e. specify 0.1 to pause for 100 milliseconds.
    Note that the minimum time to pause is 1 second on Unix systems.

  adminrecachetime         = 0-300
    Number of seconds to go through the admin-thread (RPC 390600) after
    rrrchive performs an admin change, such as diabling a merge filter.
    The server needs time to recache this change.
    Default is to use server config setting Delay-Recache-Time plus 5 seconds.
    Disable by setting the value to 0.

  clientcharset            = CHAR
    Normally left blank, allowing the client environment determine the
    charset/encoding. Sometimes, when the servers and client differ, you want
    to force this to a specific value, typically UTF-8, or maybe windows-1252.
    This will also reflect the encoding of any ARX-files produced.

  truncate                 = { UTF-8 | 8-BIT }
    Specify UTF-8 or 8-BIT to have RRR|Chive truncate character fields
    exceeding the field limit of the target server.
    Make sure the setting corresponds to the target charset of the target
    server and the client charset. Typically you set both clientcharset=UTF-8
    and truncate=UTF-8 at the same time if your target server is UTF-8.

  logfile                  = CHAR
    This is where you specify the name of your logfile.
    If this field is not specified, all messages will be sent to STDOUT (the
    console).
    Specify AUTO to give the log file the same name as the config. For example
    rrrchive.cfg would result in rrrchive.log.

  loglevel                 = { EMERGENCY | ALERT | CRITICAL | ERROR | WARNING
                             | NOTICE | INFO | DEBUG }
    If you specify INFO, all messages will be logged, including the Entry ID
    of each copied/moved record.
    A value of NOTICE can be more appropriate, as it will only log the actual
    number of records processed/copied/deleted.
    Default loglevel is NOTICE.

  logclearonrun            = { YES | NO }
    Setting this value to YES will truncate the logfile before each run.
    This is probably not good for automated archiving, but can be nice when
    you run rrrchive manually from the command line.

  progressbar              = { YES | NO }
    Setting this to yes will show a progress bar with the percentage that has
    been processed of each form.

To improve readability, you can put a backslash (\) at the end of a line and
countiue on the next.

As a general rule, whitespace at the beginning and end of data (or list
element) will not affect the setting.

Note that if you set a param equal to "PROMPT", rrrChive will prompt for this
parameter at run time.

Use the configurator at http://www.rrr.se/ to create a config file skeleton.

You can specify a form name between parameter and equal sign to have
differentiated functionality for some forms.
For example: skipfield ["COM:Company"] = '536870913'. You can specify a list
of of forms separated by comma.
Specify a * in the end of the name to specify trailing match.
If you specify the brackets [form] on a separate line, all following lines
will be for that (those) forms only. Reset this with another bracket row like
[*].