Execute XOG files reading and writing in a more easy way
This is a new method of creating XOG files. Using a Driver XML file, you can define with objects you would like to read, write and migrate.
Download the lastest stable release (cas-xog.exe and xogRead.xml);
Create a file called xogEnv.xml , in the same folder of the cas-xog.exe, to define the environments connections configuration;
Create a folder called "drivers" with all driver files (.driver) you need to defining the objects you want to read and write;
Execute the cas-xog.exe and follow the instructions in the screen.
If you like to read and write at once just put the attribute autoWrite="true" in your driver.
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" autoWrite =" true" >
<object code =" idea" path =" idea.xml" />
</xogdriver >
Description of Rest API Driver tags
Tag
Description
api.blueprint
Used to read and write new UX blueprints.
api.team
Used to read, write and migrate new UX teams.
api.task
Used to migrate taks.
Description of structure Driver tags
Tag
Description
object
Used to read and write objects attributes, actions and links.
view
Used to read and write views.
process
Used to read and write processes.
lookup
Used to read and write lookups.
portlet
Used to read and write portlets.
query
Used to read and write queries.
page
Used to read and write pages.
menu
Used to read and write menus.
Description of instance Driver tags
Attribute
Description
Required
code
Object code.
yes
path
Path where the file will be saved on the file system.
yes
partitionModel
Used when you need to set a new partitionModel or change the current one.
no
targetPartition
Used to change elements partition code to the defined value. When uses alone without sourcePartition replaces the tag partitionCode on all elements.
no
sourcePartition
Used to read only elements from this partition code.
no
onlyElements
Used to read only the defined elements and remove everything else. Default is false.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<object code =" idea" path =" idea.xml" />
<object code =" application" path =" application.xml" partitionModel =" new-corp" />
<object code =" systems" path =" systems.xml" sourcePartition =" IT" targetPartition =" NIKU.ROOT" />
<object code =" inv" path =" inv.xml" targetPartition =" NIKU.ROOT" />
</xogdriver >
Used to read only the selected elements from the object.
Attribute
Description
Required
type
Defines what element to read. Availables types: attribute, action and link.
yes
code
Code of the element that you want to include. Can be used * to set a wildcard and get all attributes with the defined prefix. Wildcards only work to type: attribute.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<object code =" test_subobj" path =" test_subobj.xml" >
<element type =" attribute" code =" attr_auto_number" />
<element type =" attribute" code =" novo_atr" />
<element type =" action" code =" tst_run_proc_lnk" />
<element type =" link" code =" test_subobj.link_test" />
</object >
</xogdriver >
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<object code =" test_subobj" path =" test_subobj.xml" onlyElements =" true" >
<element type =" attribute" code =" acme_*" />
</object >
</xogdriver >
Attribute
Description
Required
code
Defines the views that should be read. Use * for reading all views from object; Use *pattern_string to choose all the views where the code contains the pattern string; Use the view code without * if you want a single view.
yes
objectCode
Object code.
yes
path
Path where the file will be saved on the file system.
yes
sourcePartition
When defined reads only views from this partition code.
no
targetPartition
Used to replaces the source value tag partitionCode of elements with the defined value. If you want to use this feature, the sourcePartition tag is required.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<view code =" *" objectCode =" obj_system" path =" view_0.xml" />
<view code =" *" objectCode =" obj_system" path =" view_1.xml" sourcePartition =" IT" />
<view code =" *" objectCode =" obj_system" path =" view_2.xml" sourcePartition =" IT" targetPartition =" HR" />
<view code =" *project" objectCode =" project" path =" project.xml" sourcePartition =" IT" />
<view code =" obj_system.audit" objectCode =" obj_system" path =" view_3.xml" sourcePartition =" HR" />
<view code =" obj_system.audit" objectCode =" obj_system" path =" view_4.xml" sourcePartition =" HR" targetPartition =" IT" />
</xogdriver >
Used to read and transform only the selected section from the view. Only single views can use the sub tag section, cant be used with code='*'.
Attribute
Description
Required
action
Defines what to do in the section. Available: remove, replace, insert and update. To use action update is required to include the sub tag field.
yes
sourcePosition
Position of the view in the source. Required for actions: replace, insert and update.
no
targetPosition
Position where you want to insert the section in the target view. Required for action remove.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<view code =" obj_system.audit" objectCode =" obj_system" path =" view_3.xml" sourcePartition =" HR" >
<section action =" insert" sourcePosition =" 1" targetPosition =" 1" />
<section action =" replace" sourcePosition =" 1" targetPosition =" 3" />
<section action =" remove" targetPosition =" 3" />
</view >
</xogdriver >
Used to read and transform only the selected fields from the section. Only sections with action update can use sub tag field.
Attribute
Description
Required
code
Code of the field to transform.
yes
remove
Use true if the field should be removed from the target view. Default value is considered false.
no
column
The section's column where the field will be inserted in the target view. Required if remove tag is not defined as true.
no
insertBefore
If an attribute code is defined in this tag, the new field will be positioned before this attributte in the target view. If not, will insert the field as in the last position of the column.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<view code =" obj_system.audit" objectCode =" obj_system" path =" view_3.xml" sourcePartition =" HR" >
<section action =" update" sourcePosition =" 1" targetPosition =" 1" >
<field code =" analist" column =" left" insertBefore =" created_by" />
<field code =" status" column =" left" insertBefore =" created_by" />
<field code =" new_status" column =" right" />
<field code =" created_date" remove =" true" />
</section >
</view >
</xogdriver >
Used to read view actions and actions group.
Attribute
Description
Required
code
Code of the element that you want to include or remove.
yes
type
Defines what element to read. Availables types: actionGroup and action.
yes
action
Defines what to do with the element in the target environment. Availables actions: insert and remove.
yes
insertBefore
When a code is defined in this tag, the action or group will be positioned before this element in the target view. If not, it will be inserted as the last element.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<view code =" cas_environmentProperties" objectCode =" cas_environment" path =" cas_environment_view.xml" sourcePartition =" NIKU.ROOT" >
<element type =" actionGroup" code =" group_code" action =" remove" />
<element type =" actionGroup" code =" group_code" action =" insert" insertBefore =" target_group_code" />
<element type =" action" code =" action_code" action =" insert" />
<element type =" action" code =" action_code" action =" insert" insertBefore =" target_action_code" />
<element type =" action" code =" action_code" action =" remove" />
</object >
</xogdriver >
Attribute
Description
Required
code
Process code.
yes
path
Path where the file will be saved on the file system.
yes
copyPermissions
The code of the process you want to copy the permissions from.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<process code =" PRC_0001" path =" PRC_0001.xml" />
<process code =" PRC_0002" path =" PRC_0002.xml" copyPermissions =" PRC_0001" />
</xogdriver >
Attribute
Description
Required
code
Lookup code.
yes
path
Path where the file will be saved on the file system.
yes
onlyActive
Used to read only active options from a static lookup.
no
onlyStructure
Used to create a lookup with a fake query to prevent error of attributes that have not yet been imported. Only available for dynamic lookups.
no
sourcePartition
When defined changes only elements from this partition code. Should be used together with targetPartition tag. Only available for static lookups.
no
targetPartition
Used to change the partition code. Used alone without sourcePartition replaces the tag partitionCode of all lookup values with the defined value. Only available for static lookups.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<lookup code =" INV_APPLICATION_CATEGORY_TYPE" path =" INV_APPLICATION_CATEGORY_TYPE.xml" />
<lookup code =" LOOKUP_FIN_CHARGECODES" path =" LOOKUP_FIN_CHARGECODES.xml" onlyStructure =" true" />
<lookup code =" LOOKUP_CAS_XOG_1" path =" LOOKUP_CAS_XOG_1.xml" targetPartition =" NIKU.ROOT" onlyActive =" true" />
<lookup code =" LOOKUP_CAS_XOG_2" path =" LOOKUP_CAS_XOG_2.xml" sourcePartition =" IT" targetPartition =" NIKU.ROOT" />
</xogdriver >
Used to replace the nsql query inside an dynamic lookup.
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<lookup code =" LOOKUP_CAS_XOG_1" path =" LOOKUP_CAS_XOG_1.xml" targetPartition =" NIKU.ROOT" >
<nsql >
SELECT @SELECT:RESOURCES.ID:ID@,
@SELECT:RESOURCES.LAST_NAME:LAST_NAME@,
@SELECT:RESOURCES.FIRST_NAME:FIRST_NAME@,
@SELECT:RESOURCES.FULL_NAME:FULL_NAME@,
@SELECT:RESOURCES.UNIQUE_NAME:UNIQUE_NAME@,
@SELECT:RESOURCES.UNIQUE_NAME:UNIQUE_CODE@
FROM SRM_RESOURCES RESOURCES
WHERE @FILTER@
AND @WHERE:SECURITY:RESOURCE:RESOURCES.ID@
@BROWSE-ONLY:
AND RESOURCES.IS_ACTIVE = 1
:BROWSE-ONLY@
</nsql >
</lookup >
</xogdriver >
Attribute
Description
Required
code
Portlet code.
yes
path
Path where the file will be saved on the file system.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<portlet code =" cop.teamCapacityLinkable" path =" cop.teamCapacityLinkable.xml" />
</xogdriver >
Attribute
Description
Required
code
Query code.
yes
path
Path where the file will be saved on the file system.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<query code =" cop.projectCostsPhaseLinkable" path =" cop.projectCostsPhaseLinkable.xml" />
</xogdriver >
Attribute
Description
Required
code
Page code.
yes
path
Path where the file will be saved on the file system.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<page code =" pma.ideaFrame" path =" pma.ideaFrame.xml" />
</xogdriver >
Tag menu
Attribute
Description
Required
code
Menu code.
yes
path
Path where the file will be saved on the file system.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<menu code =" application" path =" menu_result.xml" />
</xogdriver >
Used to read only the selected section from the menu.
Attribute
Description
Required
code
Code of the attribute that you want to include.
yes
action
Defines what to do in the target menu. Available actions: insert and update. To use the update action, you need to include the sub tag link .
yes
targetPosition
Position where you want to insert the section in the target menu.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<menu code =" application" path =" menu_result_section_link.xml" >
<section action =" insert" code =" menu_sec_cas_xog" targetPosition =" 2" />
</menu >
</xogdriver >
Used to read only the selected links inside a section tag from the menu.
Attribute
Description
Required
code
Code of the link that you want to include.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<menu code =" application" path =" menu_result_section_link.xml" >
<section action =" update" code =" npt.personal" >
<link code =" odf.obj_testeList" />
</section >
<section action =" insert" code =" menu_sec_cas_xog" targetPosition =" 2" >
<link code =" cas_proc_running_tab" />
</section >
</menu >
</xogdriver >
Attribute
Description
Required
id
Source blueprint database id.
yes
targetId
Target blueprint database id. Use this attribute to update a Blueprint.
no
path
Path where the file will be saved on the file system. The extension should be .json
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<api .blueprint id =" 5000016" targetId =" 5023028" path =" modern_business_management.json" />
</xogdriver >
Attribute
Description
Required
code
Source team code. Optional if using to migrate teams from excel.
yes
path
Path where the file will be saved on the file system. The extension should be .json
yes
action
Used to define if is to update or insert api team. Default is insert.
no
excel
Path to the excel file with the data.
yes
startRow
The line number in the excel file that we will start reading to create the instances. Default value is 1.
no
endRow
The line number in the excel file that we will end reading to create the instances. Default value is the total lines.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<api .team code =" TM000001" path =" team01.json" />
</xogdriver >
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<api .team path =" teams.json" action =" update" excel =" drivers/dados.xlsx" startRow =" 2" endRow =" 100" >
<match col =" 1" attribute =" code" />
<match col =" 2" attribute =" name" />
<match col =" 3" attribute =" resourceId" />
<match col =" 4" attribute =" allocation" />
</api .team>
</xogdriver >
Attribute
Description
Required
path
Path where the file will be saved on the file system. The extension should be .json
yes
excel
Path to the excel file with the data.
yes
startRow
The line number in the excel file that we will start reading to create the instances. Default value is 1.
no
Only migration from excel is available.
Required attributes to migrate tasks: projectCode, taskname, taskCode, taskStart, taskFinish, percentComplete .
If you want to assign resources to the tasks the folowing attributes are required: resourceId, segmentStart, segmentFinish, segmentValue .
To migrate any other field you just have to add the attribute to the match list. There is no support for multi valued lookups .
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<api .task path =" tasks.json" excel =" drivers/tasks.xlsx" startRow =" 2" >
<match col =" 1" attribute =" project" />
<match col =" 2" attribute =" name" />
<match col =" 3" attribute =" code" />
<match col =" 4" attribute =" start" />
<match col =" 5" attribute =" finish" />
<match col =" 6" attribute =" percentComplete" />
<match col =" 7" attribute =" resourceId" />
<match col =" 8" attribute =" segmentStart" />
<match col =" 9" attribute =" segmentFinish" />
<match col =" 10" attribute =" segmentValue" />
<match col =" 11" attribute =" p_cstCategory" />
</api .task>
</xogdriver >
Task migration excel example
Use date in the format YYYY-MM-DDTHH:MM:SS and as a string cell in the excel file.
Project
Name
Code
Start
Finish
Percent Complete
Resource
Segment Start
Segment Finish
Segment Value
Custom Category
PR1173
Nova Tarefa 1
TSK.0001
2020-04-01T08:00:00
2020-06-30T00:00:00
0
5038001
2020-04-01T00:00:00
2020-04-30T00:00:00
120
PR1173
Nova Tarefa 1
TSK.0001
2020-04-01T08:00:00
2020-06-30T00:00:00
0
5038001
2020-05-01T00:00:00
2020-05-31T00:00:00
120
PR1173
Nova Tarefa 1
TSK.0001
2020-04-01T08:00:00
2020-06-30T00:00:00
0
5038001
2020-06-01T00:00:00
2020-06-30T00:00:00
120
PR1173
Nova Tarefa 1
TSK.0001
2020-04-01T08:00:00
2020-06-30T00:00:00
0
5035001
2020-04-01T00:00:00
2020-04-30T00:00:00
120
PR1173
Nova Tarefa 1
TSK.0001
2020-04-01T08:00:00
2020-06-30T00:00:00
0
5035001
2020-05-01T00:00:00
2020-05-31T00:00:00
120
PR1173
Nova Tarefa 1
TSK.0001
2020-04-01T08:00:00
2020-06-30T00:00:00
0
5035001
2020-06-01T00:00:00
2020-06-30T00:00:00
120
PR1173
Nova Tarefa 2
TSK.0002
2020-04-01T08:00:00
2020-06-30T00:00:00
0.5
Testing
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
objectCode
Defines the code of the custom object you want to read the instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<customObjectInstance code =" *" objectCode =" obj_system" path =" instances.xml" />
</xogdriver >
Tag resourceClassInstance
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<resourceClassInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<wipClassInstance code =" *" path =" instances.xml" />
</xogdriver >
Tag investmentClassInstance
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<investmentClassInstance code =" *" path =" instances.xml" />
</xogdriver >
Tag transactionClassInstance
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<transactionClassInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<resourceInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<userInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<projectInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<ideaInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<applicationInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<assetInstance code =" *" path =" instances.xml" />
</xogdriver >
Tag otherInvestmentInstance
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<otherInvestmentInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<productInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<serviceInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<benefitPlanInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<budgetPlanInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
Instance codes. Use code equals * to get all instances.
yes
path
Path where the file will be saved on the file system.
yes
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<costPlanInstance code =" *" path =" instances.xml" />
</xogdriver >
Attribute
Description
Required
code
OBS code.
yes
path
Path where the file will be saved on the file system.
yes
excel
Path to the excel file with the data.
no
startRow
The line number in the excel file that we will start reading to create the instances. Default value is 1.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<obsInstance code =" department" path =" obs_department.xml" />
<obsInstance code =" department" path =" obs_department.xml" excel =" obs_data.xlsx" startRow =" 2" />
</xogdriver >
Excel wit OBS data structure
This file should hava one line to each OBS unit with all it´s parents. Can be used anything as code but for the import to be sucessfull it should not be empty or be duplicated.
Level1 Code
Level1 Name
Level2 Code
Level2 Name
Level3 Code
Level3 Name
Level4 Code
Level4 Name
N1.001
Company
N1.001
Company
N2.001
Site 1
N1.001
Company
N2.001
Site 1
N3.001
Sub-Group 1
N1.001
Company
N2.001
Site 1
N3.001
Sub-Group 1
N4.001
Bussiness Unit 1
N1.001
Company
N2.001
Site 1
N3.002
Sub-Group 2
N1.001
Company
N2.001
Site 1
N3.002
Sub-Group 2
N4.002
Bussiness Unit 2
N1.001
Company
N2.001
Site 1
N3.002
Sub-Group 2
N4.003
Bussiness Unit 3
N1.001
Company
N2.002
Site 2
N1.001
Company
N2.002
Site 2
N3.001
Sub-Group 3
N1.001
Company
N2.002
Site 2
N3.002
Sub-Group 3
N4.004
Bussiness Unit 4
Attribute
Description
Required
code
UI Theme code.
yes
path
Path where the file will be saved on the file system.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<themeInstance code =" tealgrey" path =" tealgrey.xml" />
</xogdriver >
Attribute
Description
Required
code
Group code.
yes
path
Path where the file will be saved on the file system.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<groupInstance code =" cop.systemAdministrator" path =" systemAdministrator.xml" />
</xogdriver >
Attribute
Description
Required
code
Department code. When migratin from excel any code can be used.
yes
path
Path where the file will be saved on the file system.
yes
excel
Path to the excel you want to migrate PPM.
no
startRow
The number of the row to start processing. Default 1.
no
entity
The entity to load the excel data. Required when using the tag excel.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<departmentInstance code =" *" path =" systemAdministrator.xml" />
<departmentInstance code =" dummy" excel =" drivers/obs_template.xlsx" startRow =" 2" entity =" B3" path =" departments.xml" />
</xogdriver >
Attributes that can be used in any structure and instance tags.
Used to ignore the reading from source environment. Use it to avoid reading more than once the same structure. Intended to be used when you need to write the same structure more than once to resolve cross dependencies issues.
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<object code =" idea" path =" idea.xml" ignoreReading =" true" />
</xogdriver >
Sub tags that can be used in any structure and instance tags.
Used to do a replace one string with another one in the xog result.
Attribute
Description
Required
from
Defines which string should be replaced.
yes
to
String that will replace the one defined in the from tag.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<process code =" PRC_0001" path =" PRC_0001.xml" >
<replace >
<from >endpoint="http://development.server.com"</from >
<to >endpoint="http://production.server.com"</to >
</replace >
<replace >
<from >set var="xogUser" value="adminXogUser"</from >
<to >set var="xogUser" value="anotherAdminXogUser"</to >
</replace >
</process >
</xogdriver >
Used to do a remove elements or element attribute from the xog result using xpath.
Attribute
Description
Required
action
Define what action should be done. insert, remove and removeAllButNot are available. insert may be used to create or replace. removeAllButNot should be used when it is necessary to remove most attributes of a tag and keep only a few, use commas to separate the attributes that should remain in the tag.
yes
xpath
String that defines the path in the XML to the element you want to transform.
yes
attribute
String that defines the attribute from the element define in the xpath.
no
value
String that defines the value to insert or replace in the attribute from the element define in the xpath.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<page code =" projmgr.projectPageFrame" path =" page_project.xml" >
<element action =" remove" xpath =" //OBSAssocs" />
<element action =" remove" xpath =" //Security" />
</page >
<groupInstance code =" ObjectAdmin" path =" ObjectAdmin.xml" >
<element action =" remove" xpath =" /NikuDataBus/groups/group/members" />
</groupInstance >
<projectInstance code =" PR1126" path =" projects.xml" >
<element action =" removeAllButNot" xpath =" //Project" attribute =" projectID,name" />
<element action =" remove" xpath =" //Resource" attribute =" projectRoleID" />
</projectInstance >
<ideaInstance code =" ID1062" path =" ID1062.xml" >
<element action =" remove" xpath =" //Idea" attribute =" entityCode" />
<element action =" insert" xpath =" //Idea" attribute =" financialLocation" value =" br" />
<element action =" insert" xpath =" //OBSAssocs" >
<xml >
<![CDATA[
<OBSAssoc id="test1" name="OBS 1" unitPath="/br/rj"/>
<OBSAssoc id="test2" name="OBS 2" unitPath="/pres/dir/ger/coord"/>
]]>
</xml >
</element >
</ideaInstance >
</xogdriver >
Used to read instances using custom filter values. When defined all standard filters will be removed and only the defined ones will be used.
Attribute
Description
Required
name
Name of the object attribute used to filter.
yes
criteria
How the filter should be used. Can be used: OR, EQUALS, BETWEEN, BEFORE, AFTER.
yes
customAttribute
Defines if this is a custom attribute filter or not.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<projectInstance path =" prj_filtered.xml" >
<filter name =" start" criteria =" BETWEEN" >2015-01-07,2017-01-15</filter >
<filter name =" custom_status" customAttribute =" true" criteria =" EQUALS" >1</filter >
</projectInstance >
</xogdriver >
Used to read instances using custom header args values. When defined all standard header args will be removed and only the defined ones will be used.
Attribute
Description
Required
name
Name of the header arg.
yes
value
Value to the header arg.
yes
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<projectInstance path =" prj_filtered.xml" >
<args name =" include_tasks" value =" false" />
</projectInstance >
</xogdriver >
Package creation and deploy
This feature should be used to deploy structures and instances in a more consolidated and organized way. You need to create a zip containing: a package file (.package), one or more driver files (.driver) and folders for versions and the XOG xml files.
Attribute
Description
Required
name
Defines what will be displayed to the user as the package name.
yes
folder
The first level folder inside the zip file that represents the package.
yes
driver
The default driver for all package versions. If the version has no driver this one will be used.
yes
This tag is required, as every package should have at least one version. If there is only one version, it will be chosen automatically.
Attribute
Description
Required
name
Defines what will be displayed to the user as the version name.
yes
folder
The folder that represents the files for this version.
yes
driver
Defines the driver for this version. Can be used to define a version with demo data and other with only structure for example.
no
This tag is not required and should be used to define questions to the user to answer. The answers will be used to change specific definitions withih XOG xml files of the package.
Attribute
Description
Required
action
Defines the desired action. Available actions: changePartitionModel, changePartition and replaceString.
yes
description
The question text that is asked to the user when installing the package.
yes
default
The default value for this definition.
no
transformTypes
Define in what types of files this action should be performed, separated by single commas. If not defined the action will be performed in all XOG xml files. Use the same types defined in driver types
no
from
Defines which string should be replaced in the XOG xml files. Required when action is replaceString.
no
to
String that will replace the one defined in the from tag. Use the special string "##DEFINITION_VALUE## to set the position for the value defined by the user. Required when action is replaceString.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<package name =" CAS-FIN" folder =" cas-fin/" driver =" cas_fin.driver" >
<version name =" Version Oracle" folder =" oracle/" >
<definition action =" changePartitionModel" description =" Target partition model" default =" corporate" />
<definition action =" changePartition" description =" Target partition" default =" NIKU.ROOT" />
<definition action =" replaceString" description =" Set processes scripts XOG user" default =" xogadmin" >
<transformTypes >processes</transformTypes >
<from >set value="xogadmin" var="user_param"</from >
<to >set value="##DEFINITION_VALUE##" var="user_param"</to >
</definition >
</version >
<version name =" Version MS SQL Server" folder =" sqlserver/" driver =" cas_fin-sql.driver" >
<definition action =" changePartitionModel" description =" Target partition model" default =" corporate" />
<definition action =" changePartition" description =" Target partition" default =" NIKU.ROOT" />
<definition action =" replaceString" description =" Set processes scripts XOG user" default =" xogadmin" >
<transformTypes >processes</transformTypes >
<from >set value="xog_admin" var="user_param"</from >
<to >set value="##DEFINITION_VALUE##" var="user_param"</to >
</definition >
</version >
</package >
ZIP folders and files structure
└── cas-fin
├── oracle
│ ├── lookups
│ │ ├── cas_fin_lkp_list_taks_proj.xml
│ │ ├── cas_fin_lkp_list_taks_proj.xml
│ │ └── cas_fin_lkp_lista_filas_exec.xml
│ ├── objects
│ │ ├── cas_fin_lkp_list_taks_proj.xml
│ │ ├── cas_fin_lkp_list_taks_proj.xml
│ │ └── cas_fin_lkp_lista_filas_exec.xml
│ └── processes
│ ├── cas_fin_prc_config_trans.xml
│ ├── cas_fin_prc_cria_trans_cronog.xml
│ ├── cas_fin_prc_fila_trans_aguarda.xml
│ └── cas_fin_prc_processa_fila.xml
├── sqlserver
│ ├── lookups
│ │ ├── cas_fin_lkp_list_taks_proj.xml
│ │ ├── cas_fin_lkp_list_taks_proj.xml
│ │ └── cas_fin_lkp_lista_filas_exec.xml
│ ├── objects
│ │ ├── cas_fin_lkp_list_taks_proj.xml
│ │ ├── cas_fin_lkp_list_taks_proj.xml
│ │ └── cas_fin_lkp_lista_filas_exec.xml
│ ├── processes
│ │ ├── cas_fin_prc_config_trans.xml
│ │ ├── cas_fin_prc_cria_trans_cronog.xml
│ │ ├── cas_fin_prc_fila_trans_aguarda.xml
│ │ └── cas_fin_prc_processa_fila.xml
│ └── cas_fin-sql.driver
├── cas_fin.driver
└── cas-fin.package
To install the package the user should save the zip file inside a folder named packages in the same directory of the cas-xog.exe file.
This feature is used to export instances to an excel file and read data from excel file to a XOG template creating an xml to import data to the environment.
Should be used with a driver instance type to read data from the environment and save the match attributes to an excel file.
Attribute
Description
Required
code
Defines the name that will be displayed to the user.
yes
path
Path where the file will be saved on the file system.
yes
exportToExcel
If set to true creates an excel file with the matched data.
yes
excel
The name of the file to export the data.
yes
instance
The name of the main tag that represents the instance object that is being read.
yes
This tag is required for export to excel data.
Attribute
Description
Required
attribute
Defines the attribute in the element where you want to get the data from. If no xpath is defined then we get the value from the main instance element defined.
no
xpath
A string representing the path to the element you want to get the data from. If no attribute value is defined then we get the value from the tag text.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<resourceInstance code =" *" path =" res.xml" exportToExcel =" true" excel =" res.xlsx" instance =" Resource" >
<match attribute =" resourceId" />
<match xpath =" //PersonalInformation" attribute =" displayName" />
<match xpath =" //PersonalInformation" attribute =" emailAddress" />
<match xpath =" //PersonalInformation" attribute =" firstName" />
<match xpath =" //PersonalInformation" attribute =" lastName" />
<match xpath =" //OBSAssoc[@id='corpLocationOBS']" attribute =" unitPath" />
<match xpath =" //OBSAssoc[@id='resourcePool']" attribute =" unitPath" />
<match xpath =" //ColumnValue[@name='partition_code']" />
</resourceInstance >
</xogdriver >
Read data from excel to create XOG instances xml
Should be used with to create an XOG xml file with an instance for each line in the excel file.
Attribute
Description
Required
path
Path where the file will be saved on the file system.
yes
template
Path to the template that should be used to create the XOG xml file.
yes
instance
The name of the main tag that represents the instance object that should be created.
yes
excel
Path to the excel file with the data.
yes
startRow
The line number in the excel file that we will start reading to create the instances. Default value is 1.
no
instancesPerFile
Defines the amout of instances in each write xog file. If not defined only one file should be created with all instances.
no
This tag is required for export to excel data.
Attribute
Description
Required
col
Defines from which column of excel we'll get the data to include in the XOG xml file.
yes
attribute
Defines which attribute in the element will receive the data. If no xpath is defined then we set this attribute in the main element instance.
no
xpath
A string representing the path to the element you want to set the data. If no attribute value is defined then we set the value as a tag text.
no
removeIfNull
If set to true and the value in excel is null, the element associated with xpath is removed.
no
multiValued
If set to true this element will be treated as multi-valued. This also can be used to create custom multiple elements inside a tag.
no
separator
Defines what character is being used to separate the options in the multi-valued data. Default value is ';'.
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogdriver version =" 2.0" >
<migration path =" subs.xml" template =" template.xml" instance =" instance" excel =" dados.xlsx" startRow =" 2" >
<match col =" 1" attribute =" instanceCode" />
<match col =" 1" xpath =" //ColumnValue[@name='code']" />
<match col =" 2" xpath =" //ColumnValue[@name='name']" />
<match col =" 3" xpath =" //ColumnValue[@name='status']" />
<match col =" 4" xpath =" //ColumnValue[@name='multivalue_status']" multiValued =" true" separator =" ;" />
<match col =" 5" xpath =" //ColumnValue[@name='analista']" />
</migration >
</xogdriver >
<NikuDataBus xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance" xsi : noNamespaceSchemaLocation =" ../xsd/nikuxog_customObjectInstance.xsd" >
<Header action =" write" externalSource =" NIKU" objectType =" customObjectInstance" version =" 8.0" />
<customObjectInstances objectCode =" obj_sistema" >
<instance instanceCode =" " objectCode =" obj_sistema" >
<CustomInformation >
<ColumnValue name =" code" ></ColumnValue >
<ColumnValue name =" name" ></ColumnValue >
<ColumnValue name =" status_novo" ></ColumnValue >
<ColumnValue name =" analista" ></ColumnValue >
<ColumnValue name =" multivalue_status" ></ColumnValue >
</CustomInformation >
</instance >
</customObjectInstances >
</NikuDataBus >
This should be used to create multiple elements inside a defined element with custom attributes.
<xogdriver version =" 2.0" >
<migration path =" ow.xml" template =" drivers/ow_template.xml" instance =" OtherInvestment" excel =" drivers/ow.xlsx" startRow =" 3" instancesPerFile =" 30" >
<match col =" 1" attribute =" objectID" />
<match col =" 2" attribute =" name" />
<match col =" 6" xpath =" //InvestmentResources" multiValued =" true" separator =" |" element =" Resource" attr =" resourceID" >
<attr name =" openForTimeEntry" value =" true" />
<attr name =" defaultAllocation" value =" 0" />
<attr name =" bookingStatus" value =" 15" />
</match >
</migration >
</xogdriver >
<NikuDataBus xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance" xsi : noNamespaceSchemaLocation =" ../xsd/nikuxog_otherInvestment.xsd" >
<Header action =" write" externalSource =" NIKU" objectType =" otherInvestment" version =" 8.0" />
<OtherInvestments >
<OtherInvestment objectID =" B3.001040" name =" Atender backlog" >
<InvestmentResources />
</OtherInvestment >
</OtherInvestments >
</NikuDataBus >
Result after executing the driver
<NikuDataBus xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance" xsi : noNamespaceSchemaLocation =" ../xsd/nikuxog_otherInvestment.xsd" >
<Header action =" write" externalSource =" NIKU" objectType =" otherInvestment" version =" 8.0" />
<OtherInvestments >
<OtherInvestment objectID =" B3.001040" name =" Atender backlog" >
<InvestmentResources >
<Resource resourceID =" 500000" openForTimeEntry =" true" defaultAllocation =" 0" bookingStatus =" 15" />
<Resource resourceID =" 500001" openForTimeEntry =" true" defaultAllocation =" 0" bookingStatus =" 15" />
<Resource resourceID =" 500002" openForTimeEntry =" true" defaultAllocation =" 0" bookingStatus =" 15" />
</InvestmentResources >
</OtherInvestment >
</OtherInvestments >
</NikuDataBus >
This is an example of configuring the environments file.
If the user does not have XOG access to an environment, simply remove the username and password tags. In this case, the system will prompt you to login at run time. Allowing someone else to enter with the necessary credentials.
This information is stored in memory and will be requested again only if the system is restarted.
If the URL has a non-default port (80/443) it should be informed as follows: http://development.server.com:8888
Attribute
Description
Required
name
Defines an unique identifier that will be displayed in the application for choice of actions.
yes
username
Username with permission to execute XOG in the environment.
no
password
Password associated with username.
no
endpoint
Defines the environment's URL.
yes
insecureSkipVerify
Defines if should skip certified validation.
no
api
Used to specify the Rest API token. Use the client attribute to set the token client. The context attribute is used if you are in a SaaS environment with the onDemand Portal, the default context is "/ppm"
no
<?xml version =" 1.0" encoding =" utf-8" ?>
<xogenvs version =" 2.0" >
<env name =" Development" >
<username >username</username >
<password >12345</password >
<endpoint >http://development.server.com</endpoint >
<api context =" /tokens" client =" acme" >rest-api-token</api >
</env >
<env name =" Quality" insecureSkipVerify =" true" >
<username >username</username >
<password >12345</password >
<endpoint >http://quality.server.com</endpoint >
</env >
<env name =" Production" >
<username >username</username >
<password >12345</password >
<endpoint >https://production.server.com</endpoint >
</env >
</xogenvs >