diff --git a/README.md b/README.md
index 8f8b406..193ad85 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,2 @@
-# mobility
+# Mobilitäten aus MoveOn laden
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..c79a968
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-modules/module/mobility/conf/excludes.txt b/src-modules/module/mobility/conf/excludes.txt
new file mode 100644
index 0000000..a69386d
--- /dev/null
+++ b/src-modules/module/mobility/conf/excludes.txt
@@ -0,0 +1,9 @@
+preparation.sql
+finalize.sql
+rohdaten/*.err
+*.log
+*.err
+rohdaten/unl/*
+masken/ids
+conf/customize.sql
+conf/*.log
diff --git a/src-modules/module/mobility/conf/includes.txt b/src-modules/module/mobility/conf/includes.txt
new file mode 100644
index 0000000..431e226
--- /dev/null
+++ b/src-modules/module/mobility/conf/includes.txt
@@ -0,0 +1,2 @@
+WEB-INF/conf/edustore/db/bin/SQL_ENV_mobility.sam
+doku/mobility_modul/mobility.html
diff --git a/src-modules/module/mobility/conf/mobility.xml b/src-modules/module/mobility/conf/mobility.xml
new file mode 100644
index 0000000..04c13fb
--- /dev/null
+++ b/src-modules/module/mobility/conf/mobility.xml
@@ -0,0 +1,256 @@
+
+
+Auswertungen aus MoveOn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ superx
+ superx
+ mobility_person
+ id
+ 1
+ pk_mobility_person
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Staat des 1. Auslandsaufenthaltes
+
+ Dauer des 1. Aufenthaltes in Monaten
+
+ Art des 1. Auslandsaufenthaltes
+
+ Art des Mobilitätsprogramms
+
+
+
+
+
+
+
+
+ superx
+ superx
+ mobility_stay
+ id
+ 1
+ pk_mobility_stay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@@mobility_admin_beschreibung@@ @@@mobility_doku_admin_url@@@
+
+
+
+
+$MOBILITY_PFAD/maskenD. Quathamer23.5.2007INFORMIX
+$MOBILITY_PFAD/maskenD. Quathamer23.5.2007POSTGRES
+
+
+$MOBILITY_PFAD/maskenD. Quathamer23.5.2007INFORMIX
+$MOBILITY_PFAD/maskenD. Quathamer23.5.2007POSTGRES
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-modules/module/mobility/datentabellen/trans_mobility_person.sql b/src-modules/module/mobility/datentabellen/trans_mobility_person.sql
new file mode 100644
index 0000000..b00ecc8
--- /dev/null
+++ b/src-modules/module/mobility/datentabellen/trans_mobility_person.sql
@@ -0,0 +1,63 @@
+
+--Regeln zum Matching zwischen MoveOn Name zu SuperX/CO Name/Matrikelnr (Protokoll Besprechung Fr. Sommer, Hr. Brüggemann und DQ 20.10.2017):
+
+--1. Wenn über Vorname/Nachname/Geburtsdatum eine Matrikelnummer in CO gefunden wird,
+-- wird diese mit höchster Priorität genommen
+--2. Wenn über Vorname/Nachname/Geburtsdatum mehrere Matrikelnummern in CO gefunden werden,
+-- wird diejenige aus dem (zeitlich gesehen) letzten Studiengang mit höchster Priorität genommen
+--3. Wenn nach obigen Regeln eine Matrikelnr. in CO nicht gefunden werden kann,
+-- es aber in MoveOn eine Matrikelnr. gibt, wird zunächst geprüft ob in MoveOn das gleiche Geburtsdatum gespeichert ist
+-- wie in CO. Wenn ja, wird die Matrikelnr. von MoveOn übernommen
+
+delete from mobility_person
+where id in (select id from mobility_person_neu);
+
+
+
+insert into mobility_person(first_name,
+ surname,
+ date_of_birth,
+ matriculation_id,
+ id)
+ SELECT first_name,
+ surname,
+ date_of_birth,
+ case when length(matriculation_id) < 11 then val(matriculation_id)
+ else null::integer end as matriculation_id,
+ id
+FROM mobility_person_neu
+ ;
+
+
+--dann matrikelnr zuweisen:
+--Regel 1+2:
+update mobility_person set matrikel_nr =(
+select max(S.matrikel_nr)
+from sos_sos S, sos_stud_d D
+where S.matrikel_nr=D.matrikel_nr
+and D.nachname=mobility_person.surname
+and D.vorname=mobility_person.first_name
+and S.d_geburt=mobility_person.date_of_birth
+and today() between S.gueltig_von and S.gueltig_bis
+)
+where matrikel_nr is null
+and date_of_birth is not null;
+
+--Regel 3:
+update mobility_person set matrikel_nr =matriculation_id
+where matrikel_nr is null
+and matriculation_id is not null
+-- and 0< (select count(*)
+-- from sos_sos S, sos_stud_d D
+-- where S.matrikel_nr=D.matrikel_nr
+-- and S.matrikel_nr=mobility_person.matriculation_id
+-- and S.d_geburt=mobility_person.date_of_birth
+-- and today() between S.gueltig_von and S.gueltig_bis
+-- )
+;
+
+
+select 'Alle',count(*) from mobility_person
+union select 'Mit Matrikelnr.',count(*) from mobility_person
+where matrikel_nr is not null;
+
diff --git a/src-modules/module/mobility/datentabellen/trans_mobility_stay.sql b/src-modules/module/mobility/datentabellen/trans_mobility_stay.sql
new file mode 100644
index 0000000..376427b
--- /dev/null
+++ b/src-modules/module/mobility/datentabellen/trans_mobility_stay.sql
@@ -0,0 +1,137 @@
+
+--freemarker template
+
+delete from mobility_stay
+where id in (select M.id from mobility_stay_neu M);
+
+insert into mobility_stay(name,
+person_id,
+ id,
+ academic_period_start_id,
+ academic_period_end_id,
+ is_active,
+ ects_credits,
+ country_id,
+ country_name_deu,
+ duration_months,
+ stay_type,
+ stay_type_id,
+ framework,
+ framework_id,
+ is_self_funded,
+ scholarship_deu,
+ is_guest,
+ is_academic_services,
+ direction_id,
+ stay_nr)
+ select name,
+ person_id,
+ id,
+ academic_period_start_id,
+ academic_period_end_id,
+ is_active,
+ ects_credits,
+ country_id,
+ country_name_deu,
+ duration_months,
+ stay_type,
+ stay_type_id,
+ framework,
+ framework_id,
+ is_self_funded,
+ scholarship_deu,
+ is_guest,
+ is_academic_services,
+ direction_id,
+ stay_nr
+ from mobility_stay_neu;
+--WS z.B. 20125 nach 20122
+update mobility_stay set academic_period_start_id=academic_period_start_id-3
+where substring('' || academic_period_start_id from 5 for 1)='5';
+--SoSe z.B. 20140 nach 20141
+update mobility_stay set academic_period_start_id=academic_period_start_id+1
+where substring('' || academic_period_start_id from 5 for 1)='0';
+
+update mobility_stay set academic_period_end_id=academic_period_end_id-3
+where substring('' || academic_period_end_id from 5 for 1)='5';
+--SoSe z.B. 20140 nach 20141
+update mobility_stay set academic_period_end_id=academic_period_end_id+1
+where substring('' || academic_period_end_id from 5 for 1)='0';
+--Country
+update mobility_stay set st_abr_country_astat =(select min(val(C.astat))
+from cifx C
+where mobility_stay.country_name_deu=C.druck
+and C.key=12
+)
+where id in (select M.id from mobility_stay_neu M);
+--Ausnahmefälle Staaten
+update mobility_stay set st_abr_country_astat=479
+where country_name_deu='China (VR)'
+and st_abr_country_astat is null
+;
+update mobility_stay set st_abr_country_astat=434
+where country_name_deu='Korea, Dem. Volksrep.'
+and st_abr_country_astat is null;
+update mobility_stay set st_abr_country_astat=368
+where country_name_deu='USA'
+and st_abr_country_astat is null
+;
+update mobility_stay set st_abr_country_astat=245
+where country_name_deu='Kongo, Dem. Republik'
+and st_abr_country_astat is null
+;
+update mobility_stay set st_abr_country_astat=160
+where country_name_deu='Russland'
+and st_abr_country_astat is null;
+
+update mobility_stay set st_abr_country_astat=431
+where country_name_deu='Sri Lanka'
+and st_abr_country_astat is null;
+
+update mobility_stay set st_abr_country_astat=449
+where country_name_deu='Laos'
+and st_abr_country_astat is null;
+
+update mobility_stay set st_abr_country_astat=164
+where country_name_deu='Tschechien'
+and st_abr_country_astat is null;
+
+--Prüfselect:
+-- SELECT country_id,country_name_deu,count(*)
+-- FROM mobility_stay
+-- where country_name_deu is not null
+-- and st_abr_country_astat is null
+-- group by 1,2
+ -- ;
+
+--st_abr_month
+update mobility_stay set st_abr_month=duration_months;
+--st_abr_type
+--stay.stay_type_id=1 -01 = Studium
+--stay.stay_type_id=2 -02 = Praktikum
+--stay.stay_type_id ungleich 1 oder 2 -03
+update mobility_stay set st_abr_type='0' || stay_type_id
+where stay_type_id in ('1','2')
+and id in (select M.id from mobility_stay_neu M);
+update mobility_stay set st_abr_type='01'
+where stay_type_id ='1, 2'
+and id in (select M.id from mobility_stay_neu M);
+
+
+update mobility_stay set st_abr_type='03'
+where (stay_type_id not in ('1','2','1, 2') or stay_type_id is null)
+and id in (select M.id from mobility_stay_neu M);
+
+--st_abr_program
+update mobility_stay set st_abr_program='01'
+where framework ilike '%erasmus%'
+and id in (select M.id from mobility_stay_neu M);
+update mobility_stay set st_abr_program='02'
+where st_abr_program is null
+and id in (select M.id from mobility_stay_neu M);
+
+update mobility_stay set st_abr_country_astat='0' || trim(st_abr_country_astat)
+where length(trim(st_abr_country_astat))<3;
+update mobility_stay set st_abr_country_astat='0' || trim(st_abr_country_astat)
+where length(trim(st_abr_country_astat))<3;
+
diff --git a/src-modules/module/mobility/etl/read_moveon/apiload.kjb b/src-modules/module/mobility/etl/read_moveon/apiload.kjb
new file mode 100644
index 0000000..d0e1496
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/apiload.kjb
@@ -0,0 +1,363 @@
+
+
+ apiload
+
+
+
+ 0
+ /
+ -
+ 2017/11/07 23:02:08.210
+ -
+ 2017/11/07 23:02:08.210
+
+
+ dataObject
+
+
+
+
+ page
+
+
+
+
+ rows
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_JOB
+ Y
+ ID_JOB
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ JOBNAME
+ Y
+ JOBNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ START_JOB_ENTRY
+ N
+ START_JOB_ENTRY
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ JOBNAME
+ Y
+ TRANSNAME
+
+
+ JOBENTRYNAME
+ Y
+ STEPNAME
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ RESULT
+ Y
+ RESULT
+
+
+ NR_RESULT_ROWS
+ Y
+ NR_RESULT_ROWS
+
+
+ NR_RESULT_FILES
+ Y
+ NR_RESULT_FILES
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+ COPY_NR
+ N
+ COPY_NR
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+ N
+
+
+
+ START
+
+ SPECIAL
+ Y
+ N
+ N
+ 0
+ 0
+ 60
+ 12
+ 0
+ 1
+ 1
+ N
+ Y
+ 0
+ 96
+ 128
+
+
+ php_it
+
+ SHELL
+ /usr/bin/php
+ ${Internal.Job.Filename.Directory}/tmp
+ N
+ N
+ Y
+ ${Internal.Job.Filename.Directory}/tmp/mylog.log
+ N
+
+ N
+ N
+ N
+
+ Basic
+ phpcode_tmp_${dataObject}_${page}.php
+ N
+ Y
+ 0
+ 192
+ 128
+
+
+
+
+ START
+ php_it
+ 0
+ 0
+ Y
+ Y
+ Y
+
+
+
+
+
diff --git a/src-modules/module/mobility/etl/read_moveon/apiload.ktr b/src-modules/module/mobility/etl/read_moveon/apiload.ktr
new file mode 100644
index 0000000..8cb0218
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/apiload.ktr
@@ -0,0 +1,706 @@
+
+
+ apiload
+
+
+
+ Normal
+ 0
+ /
+
+
+ dataObject
+ person
+
+
+
+ page
+ 1
+
+
+
+ rows
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ SEQ_NR
+ Y
+ SEQ_NR
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ INPUT_BUFFER_ROWS
+ Y
+ INPUT_BUFFER_ROWS
+
+
+ OUTPUT_BUFFER_ROWS
+ Y
+ OUTPUT_BUFFER_ROWS
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ METRICS_DATE
+ Y
+ METRICS_DATE
+
+
+ METRICS_CODE
+ Y
+ METRICS_CODE
+
+
+ METRICS_DESCRIPTION
+ Y
+ METRICS_DESCRIPTION
+
+
+ METRICS_SUBJECT
+ Y
+ METRICS_SUBJECT
+
+
+ METRICS_TYPE
+ Y
+ METRICS_TYPE
+
+
+ METRICS_VALUE
+ Y
+ METRICS_VALUE
+
+
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+ -
+ 2017/11/07 22:47:00.826
+ -
+ 2017/11/07 22:47:00.826
+ H4sIAAAAAAAAAAMAAAAAAAAAAAA=
+ N
+
+
+
+
+ Load file content in memory
+ Replace rows
+ Y
+
+
+ Replace rows
+ Replace page
+ Y
+
+
+ Replace page
+ replace file
+ Y
+
+
+ replace file
+ Text file output
+ Y
+
+
+
+ Load file content in memory
+ LoadFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ N
+ Y
+ N
+
+ UTF-8
+
+ ${Internal.Transformation.Filename.Directory}/template_${dataObject}.php
+
+
+ N
+ N
+
+
+
+ phpcode
+ content
+ String
+
+
+
+
+ -1
+ -1
+ none
+ N
+
+
+ 0
+ N
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 96
+ 96
+ Y
+
+
+
+ Replace page
+ ReplaceString
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ phpcode_rows
+ phpcode_page
+ no
+ page=1
+ page=${page}
+ N
+
+ no
+ no
+
+
+
+
+
+
+
+
+ 368
+ 96
+ Y
+
+
+
+ Replace rows
+ ReplaceString
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ phpcode
+ phpcode_rows
+ no
+ rows=1000
+ rows=${rows}
+ N
+
+ no
+ no
+
+
+
+
+
+
+
+
+ 240
+ 96
+ Y
+
+
+
+ Text file output
+ TextFileOutput
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ N
+ N
+
+
+ UNIX
+ None
+ UTF-8
+
+ N
+
+ Y
+
+ ${Internal.Transformation.Filename.Directory}/tmp/phpcode_tmp_${dataObject}_${page}
+ N
+ N
+ N
+ php
+ N
+ N
+ N
+ N
+ N
+ N
+
+ N
+ N
+ Y
+ 0
+
+
+
+ phpcode_file
+ String
+
+
+
+
+
+ none
+ -1
+ -1
+
+
+
+
+
+
+
+
+ 624
+ 96
+ Y
+
+
+
+ replace file
+ ReplaceString
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ phpcode_page
+ phpcode_file
+ no
+ file='out.xml'
+ file='out_${dataObject}_${page}.xml'
+ N
+
+ no
+ no
+
+
+
+
+
+
+
+
+ 496
+ 96
+ Y
+
+
+
+
+ N
+
diff --git a/src-modules/module/mobility/etl/read_moveon/gatherObjects.ktr b/src-modules/module/mobility/etl/read_moveon/gatherObjects.ktr
new file mode 100644
index 0000000..68c279c
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/gatherObjects.ktr
@@ -0,0 +1,678 @@
+
+
+
+ gatherObjects
+
+
+
+ Normal
+ 0
+ /
+
+
+ dataObject
+ person
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ SEQ_NR
+ Y
+ SEQ_NR
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ INPUT_BUFFER_ROWS
+ Y
+ INPUT_BUFFER_ROWS
+
+
+ OUTPUT_BUFFER_ROWS
+ Y
+ OUTPUT_BUFFER_ROWS
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ METRICS_DATE
+ Y
+ METRICS_DATE
+
+
+ METRICS_CODE
+ Y
+ METRICS_CODE
+
+
+ METRICS_DESCRIPTION
+ Y
+ METRICS_DESCRIPTION
+
+
+ METRICS_SUBJECT
+ Y
+ METRICS_SUBJECT
+
+
+ METRICS_TYPE
+ Y
+ METRICS_TYPE
+
+
+ METRICS_VALUE
+ Y
+ METRICS_VALUE
+
+
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+
+
+
+
+ -
+ 2017/10/03 21:34:06.134
+ -
+ 2017/10/03 21:34:06.134
+ H4sIAAAAAAAAAAMAAAAAAAAAAAA=
+ N
+
+
+
+
+
+ Generate Rows
+ Add sequence
+ Y
+
+
+ Add sequence
+ Copy rows to result
+ Y
+
+
+ Generate Rows 2
+ Add sequence 2
+ Y
+
+
+ Add sequence 2
+ Copy rows to result
+ Y
+
+
+
+ Add sequence
+ Sequence
+
+ Y
+
+ 1
+
+ none
+
+
+ page
+ N
+
+
+ SEQ_
+ Y
+
+ 1
+ 1
+ 999999999
+
+
+
+
+
+
+
+ 320
+ 320
+ Y
+
+
+
+
+ Copy rows to result
+ RowsToResult
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+
+
+
+
+ 528
+ 304
+ Y
+
+
+
+
+ Generate Rows
+ RowGenerator
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ dataObject
+ String
+
+
+
+
+ person
+ -1
+ -1
+ N
+
+
+ rows
+ Integer
+
+
+
+
+ 250
+ -1
+ -1
+ N
+
+
+ 100
+ N
+ 5000
+ now
+ FiveSecondsAgo
+
+
+
+
+
+
+
+ 160
+ 320
+ Y
+
+
+
+
+ Generate Rows 2
+ RowGenerator
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ dataObject
+ String
+
+
+
+
+ stay
+ -1
+ -1
+ N
+
+
+ rows
+ Integer
+
+
+
+
+ 250
+ -1
+ -1
+ N
+
+
+ 100
+ N
+ 5000
+ now
+ FiveSecondsAgo
+
+
+
+
+
+
+
+ 160
+ 416
+ Y
+
+
+
+
+ Add sequence 2
+ Sequence
+
+ Y
+
+ 1
+
+ none
+
+
+ page
+ N
+
+
+ SEQ_
+ Y
+
+ -100
+ 1
+ 999999999
+
+
+
+
+
+
+
+ 320
+ 416
+ Y
+
+
+
+
+
+
+
+ N
+
diff --git a/src-modules/module/mobility/etl/read_moveon/gatherObjectsPerson.ktr b/src-modules/module/mobility/etl/read_moveon/gatherObjectsPerson.ktr
new file mode 100644
index 0000000..6d02aea
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/gatherObjectsPerson.ktr
@@ -0,0 +1,560 @@
+
+
+ gatherObjectsPerson
+
+
+
+ Normal
+ 0
+ /
+
+
+ dataObject
+ person
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ SEQ_NR
+ Y
+ SEQ_NR
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ INPUT_BUFFER_ROWS
+ Y
+ INPUT_BUFFER_ROWS
+
+
+ OUTPUT_BUFFER_ROWS
+ Y
+ OUTPUT_BUFFER_ROWS
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ METRICS_DATE
+ Y
+ METRICS_DATE
+
+
+ METRICS_CODE
+ Y
+ METRICS_CODE
+
+
+ METRICS_DESCRIPTION
+ Y
+ METRICS_DESCRIPTION
+
+
+ METRICS_SUBJECT
+ Y
+ METRICS_SUBJECT
+
+
+ METRICS_TYPE
+ Y
+ METRICS_TYPE
+
+
+ METRICS_VALUE
+ Y
+ METRICS_VALUE
+
+
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+ -
+ 2017/10/03 21:34:06.134
+ -
+ 2017/10/03 21:34:06.134
+ H4sIAAAAAAAAAAMAAAAAAAAAAAA=
+ N
+
+
+
+
+ Generate Rows
+ Add sequence
+ Y
+
+
+ Add sequence
+ Copy rows to result
+ Y
+
+
+
+ Add sequence
+ Sequence
+
+ Y
+
+ 1
+
+ none
+
+
+ page
+ N
+
+
+ SEQ_
+ Y
+
+ 1
+ 1
+ 999999999
+
+
+
+
+
+
+ 320
+ 320
+ Y
+
+
+
+ Copy rows to result
+ RowsToResult
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+
+
+
+ 528
+ 304
+ Y
+
+
+
+ Generate Rows
+ RowGenerator
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ dataObject
+ String
+
+
+
+
+ person
+ -1
+ -1
+ N
+
+
+ rows
+ Integer
+
+
+
+
+ 250
+ -1
+ -1
+ N
+
+
+ 100
+ N
+ 5000
+ now
+ FiveSecondsAgo
+
+
+
+
+
+
+ 160
+ 320
+ Y
+
+
+
+
+ N
+
diff --git a/src-modules/module/mobility/etl/read_moveon/gatherObjectsStay.ktr b/src-modules/module/mobility/etl/read_moveon/gatherObjectsStay.ktr
new file mode 100644
index 0000000..325d8c4
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/gatherObjectsStay.ktr
@@ -0,0 +1,560 @@
+
+
+ gatherObjectsStay
+
+
+
+ Normal
+ 0
+ /
+
+
+ dataObject
+ person
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ SEQ_NR
+ Y
+ SEQ_NR
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ INPUT_BUFFER_ROWS
+ Y
+ INPUT_BUFFER_ROWS
+
+
+ OUTPUT_BUFFER_ROWS
+ Y
+ OUTPUT_BUFFER_ROWS
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ METRICS_DATE
+ Y
+ METRICS_DATE
+
+
+ METRICS_CODE
+ Y
+ METRICS_CODE
+
+
+ METRICS_DESCRIPTION
+ Y
+ METRICS_DESCRIPTION
+
+
+ METRICS_SUBJECT
+ Y
+ METRICS_SUBJECT
+
+
+ METRICS_TYPE
+ Y
+ METRICS_TYPE
+
+
+ METRICS_VALUE
+ Y
+ METRICS_VALUE
+
+
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+ -
+ 2017/10/03 21:34:06.134
+ -
+ 2017/10/03 21:34:06.134
+ H4sIAAAAAAAAAAMAAAAAAAAAAAA=
+ N
+
+
+
+
+ Generate Rows 2
+ Add sequence 2
+ Y
+
+
+ Add sequence 2
+ Copy rows to result
+ Y
+
+
+
+ Add sequence 2
+ Sequence
+
+ Y
+
+ 1
+
+ none
+
+
+ page
+ N
+
+
+ SEQ_
+ Y
+
+ 1
+ 1
+ 999999999
+
+
+
+
+
+
+ 320
+ 288
+ Y
+
+
+
+ Copy rows to result
+ RowsToResult
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+
+
+
+ 528
+ 304
+ Y
+
+
+
+ Generate Rows 2
+ RowGenerator
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ dataObject
+ String
+
+
+
+
+ stay
+ -1
+ -1
+ N
+
+
+ rows
+ Integer
+
+
+
+
+ 250
+ -1
+ -1
+ N
+
+
+ 100
+ N
+ 5000
+ now
+ FiveSecondsAgo
+
+
+
+
+
+
+ 144
+ 288
+ Y
+
+
+
+
+ N
+
diff --git a/src-modules/module/mobility/etl/read_moveon/loadMoveOn.kjb b/src-modules/module/mobility/etl/read_moveon/loadMoveOn.kjb
new file mode 100644
index 0000000..dd081ec
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/loadMoveOn.kjb
@@ -0,0 +1,947 @@
+
+
+ loadMoveOn
+
+
+
+ 0
+ /
+ -
+ 2017/09/28 23:26:46.244
+ -
+ 2017/09/28 23:26:46.244
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_JOB
+ Y
+ ID_JOB
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ JOBNAME
+ Y
+ JOBNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ START_JOB_ENTRY
+ N
+ START_JOB_ENTRY
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ JOBNAME
+ Y
+ TRANSNAME
+
+
+ JOBENTRYNAME
+ Y
+ STEPNAME
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ RESULT
+ Y
+ RESULT
+
+
+ NR_RESULT_ROWS
+ Y
+ NR_RESULT_ROWS
+
+
+ NR_RESULT_FILES
+ Y
+ NR_RESULT_FILES
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+ COPY_NR
+ N
+ COPY_NR
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+ N
+
+
+
+ START
+
+ SPECIAL
+ Y
+ N
+ N
+ 0
+ 0
+ 60
+ 12
+ 0
+ 1
+ 1
+ N
+ Y
+ 0
+ 96
+ 112
+
+
+ gatherObjectsPerson
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/gatherObjectsPerson.ktr
+
+ N
+ N
+ N
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ N
+ Y
+ 0
+ 256
+ 112
+
+
+ apiload
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/apiload.ktr
+
+ N
+ Y
+ Y
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ dataObject
+ dataObject
+
+
+
+ page
+ page
+
+
+
+ rows
+ rows
+
+
+
+ N
+ Y
+ 0
+ 368
+ 112
+
+
+ executeApiLoad
+
+ JOB
+ filename
+
+ ${Internal.Job.Filename.Directory}/apiload.kjb
+
+ N
+ Y
+ Y
+ N
+
+
+ N
+ N
+ Nothing
+
+ Y
+ N
+ N
+ N
+ N
+ Y
+ dataObject
+ dataObject
+
+ page
+ page
+
+ rows
+ rows
+
+ N
+ N
+ Y
+ 0
+ 656
+ 112
+
+
+ gatherObjects Person 2
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/gatherObjectsPerson.ktr
+
+ N
+ N
+ N
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ N
+ Y
+ 0
+ 528
+ 112
+
+
+ gatherObjects Person 3
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/gatherObjectsPerson.ktr
+
+ N
+ N
+ N
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ N
+ Y
+ 0
+ 656
+ 240
+
+
+ zend2csv
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/zend2csv.ktr
+
+ N
+ Y
+ Y
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ dataObject
+ dataObject
+
+
+
+ page
+ page
+
+
+
+ N
+ Y
+ 0
+ 624
+ 464
+
+
+ gatherObjectsStay
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/gatherObjectsStay.ktr
+
+ N
+ N
+ Y
+ Y
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ N
+ Y
+ 0
+ 464
+ 352
+
+
+ apiload 2
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/apiload.ktr
+
+ N
+ Y
+ Y
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ dataObject
+ dataObject
+
+
+
+ page
+ page
+
+
+
+ rows
+ rows
+
+
+
+ N
+ Y
+ 0
+ 320
+ 352
+
+
+ gatherObjectsStay 2
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/gatherObjectsStay.ktr
+
+ N
+ N
+ Y
+ Y
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ N
+ Y
+ 0
+ 176
+ 352
+
+
+ executeApiLoad 2
+
+ JOB
+ filename
+
+ ${Internal.Job.Filename.Directory}/apiload.kjb
+
+ N
+ Y
+ Y
+ N
+
+
+ N
+ N
+ Nothing
+
+ Y
+ N
+ N
+ N
+ N
+ Y
+ dataObject
+ dataObject
+
+ page
+ page
+
+ rows
+ rows
+
+ N
+ N
+ Y
+ 0
+ 176
+ 464
+
+
+ gatherObjectsStay 3
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/gatherObjectsStay.ktr
+
+ N
+ N
+ Y
+ Y
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ N
+ Y
+ 0
+ 384
+ 464
+
+
+ upload_csv 2
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/upload_csv.ktr
+
+ N
+ Y
+ Y
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ N
+ Y
+ 0
+ 608
+ 624
+
+
+ zend2csv 2
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/zend2csv.ktr
+
+ N
+ Y
+ Y
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ dataObject
+ dataObject
+
+
+
+ page
+ page
+
+
+
+ N
+ Y
+ 0
+ 656
+ 336
+
+
+
+
+ START
+ gatherObjectsPerson
+ 0
+ 0
+ Y
+ Y
+ Y
+
+
+ gatherObjectsPerson
+ apiload
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ apiload
+ gatherObjects Person 2
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ executeApiLoad
+ gatherObjects Person 3
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ gatherObjects Person 2
+ executeApiLoad
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ gatherObjectsStay
+ apiload 2
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ apiload 2
+ gatherObjectsStay 2
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ gatherObjectsStay 2
+ executeApiLoad 2
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ executeApiLoad 2
+ gatherObjectsStay 3
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ gatherObjectsStay 3
+ zend2csv
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ zend2csv
+ upload_csv 2
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ gatherObjects Person 3
+ zend2csv 2
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ zend2csv 2
+ gatherObjectsStay
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+
+
+
diff --git a/src-modules/module/mobility/etl/read_moveon/template_person.php b/src-modules/module/mobility/etl/read_moveon/template_person.php
new file mode 100644
index 0000000..e085809
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/template_person.php
@@ -0,0 +1,101 @@
+ 'queue',
+ 'entity' => 'person',
+ 'action' => 'list',
+ 'data' => $data
+ );
+
+curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+curl_setopt($curl, CURLOPT_POST, true);
+curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
+
+// Your certificate
+$clientcert = "../ca_cert.pem";
+$keyfile = "../mykey.pem";
+$challenge = "1234567";
+
+curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
+curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
+curl_setopt($curl, CURLOPT_SSLCERT, $clientcert);
+curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $challenge);
+curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
+curl_setopt($curl, CURLOPT_SSLKEY, $keyfile);
+$curl_response = curl_exec($curl);
+if(curl_errno($curl))
+{
+ echo 'error:' . curl_error($curl);
+}
+
+//var_dump($curl_response); exit;
+//var_dump($data);
+$xml = new SimpleXMLElement($curl_response);
+if ((string) $xml->queue->status === 'success') {
+ $queue = json_decode($xml->queue->response);
+} else {
+ echo "failed
".(string)$xml->queue->response;
+ $queue = false;
+}
+curl_close($curl);
+sleep(5);
+if ($queue->queueId) {
+
+ // Your environment destination
+ $curl = curl_init($service_url);
+ $curl_post_data = array(
+ 'method' => 'get',
+ 'id' => (int) $queue->queueId
+ );
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($curl, CURLOPT_POST, true);
+ curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
+
+ // Your certificate
+ $clientcert = "../ca_cert.pem";
+ $keyfile = "../mykey.pem";
+ $challenge = "1234567";
+
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
+ curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
+ curl_setopt($curl, CURLOPT_SSLCERT, $clientcert);
+ curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $challenge);
+ curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
+ curl_setopt($curl, CURLOPT_SSLKEY, $keyfile);
+
+ $curl_response = curl_exec($curl);
+
+ //var_dump($curl_response);
+ file_put_contents($file, $curl_response);
+ exit;
+
+ $xml = new SimpleXMLElement($curl_response);
+ if ((string) $xml->get->status === 'success') {
+ header ("Content-Type:text/xml");
+ echo"";
+ var_dump(json_decode($xml->get->response));
+ echo"";
+ } else {
+ var_dump(($xml->get->response));
+ }
+
+ curl_close($curl);
+}
+exit;
+
diff --git a/src-modules/module/mobility/etl/read_moveon/template_stay.php b/src-modules/module/mobility/etl/read_moveon/template_stay.php
new file mode 100644
index 0000000..bab6cfc
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/template_stay.php
@@ -0,0 +1,99 @@
+ 'queue',
+ 'entity' => 'stay',
+ 'action' => 'list',
+ 'data' => $data
+ );
+
+curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+curl_setopt($curl, CURLOPT_POST, true);
+curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
+
+// Your certificate
+$clientcert = "../ca_cert.pem";
+$keyfile = "../mykey.pem";
+$challenge = "1234567";
+
+curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
+curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
+curl_setopt($curl, CURLOPT_SSLCERT, $clientcert);
+curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $challenge);
+curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
+curl_setopt($curl, CURLOPT_SSLKEY, $keyfile);
+$curl_response = curl_exec($curl);
+if(curl_errno($curl))
+{
+ echo 'error:' . curl_error($curl);
+}
+
+//var_dump($curl_response); exit;
+
+$xml = new SimpleXMLElement($curl_response);
+if ((string) $xml->queue->status === 'success') {
+ $queue = json_decode($xml->queue->response);
+} else {
+ echo "failed
".(string)$xml->queue->response;
+ $queue = false;
+}
+curl_close($curl);
+sleep(5);
+if ($queue->queueId) {
+
+ // Your environment destination
+
+ $curl = curl_init($service_url);
+ $curl_post_data = array(
+ 'method' => 'get',
+ 'id' => (int) $queue->queueId
+ );
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($curl, CURLOPT_POST, true);
+ curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
+
+ // Your certificate
+ $clientcert = "../ca_cert.pem";
+ $keyfile = "../mykey.pem";
+ $challenge = "1234567";
+
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
+ curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
+ curl_setopt($curl, CURLOPT_SSLCERT, $clientcert);
+ curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $challenge);
+ curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
+ curl_setopt($curl, CURLOPT_SSLKEY, $keyfile);
+
+ $curl_response = curl_exec($curl);
+
+ //var_dump($curl_response);
+file_put_contents($file, $curl_response);
+ exit;
+
+ $xml = new SimpleXMLElement($curl_response);
+ if ((string) $xml->get->status === 'success') {
+ header ("Content-Type:text/xml");
+ echo"";
+ var_dump(json_decode($xml->get->response));
+ echo"";
+ } else {
+ var_dump(($xml->get->response));
+ }
+
+ curl_close($curl);
+}
+exit;
+
diff --git a/src-modules/module/mobility/etl/read_moveon/upload_csv.ktr b/src-modules/module/mobility/etl/read_moveon/upload_csv.ktr
new file mode 100644
index 0000000..06a2269
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/upload_csv.ktr
@@ -0,0 +1,1310 @@
+
+
+ upload_csv
+
+
+
+ Normal
+ 0
+ /
+
+
+ dataObject
+ person
+
+
+
+ page
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ SEQ_NR
+ Y
+ SEQ_NR
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ INPUT_BUFFER_ROWS
+ Y
+ INPUT_BUFFER_ROWS
+
+
+ OUTPUT_BUFFER_ROWS
+ Y
+ OUTPUT_BUFFER_ROWS
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ METRICS_DATE
+ Y
+ METRICS_DATE
+
+
+ METRICS_CODE
+ Y
+ METRICS_CODE
+
+
+ METRICS_DESCRIPTION
+ Y
+ METRICS_DESCRIPTION
+
+
+ METRICS_SUBJECT
+ Y
+ METRICS_SUBJECT
+
+
+ METRICS_TYPE
+ Y
+ METRICS_TYPE
+
+
+ METRICS_VALUE
+ Y
+ METRICS_VALUE
+
+
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+ -
+ 2017/11/08 22:09:28.322
+ -
+ 2017/11/08 22:09:28.322
+ H4sIAAAAAAAAAAMAAAAAAAAAAAA=
+ N
+
+
+
+
+ load_all_person_files
+ fill_person
+ Y
+
+
+ load_all_stay_files
+ Sort rows
+ Y
+
+
+ Sort rows
+ set_stay_nr
+ Y
+
+
+ set_stay_nr
+ fill_stay
+ Y
+
+
+
+ Sort rows
+ SortRows
+
+ Y
+
+ 1
+
+ none
+
+
+ %%java.io.tmpdir%%
+ out
+ 1000000
+
+ N
+
+ N
+
+
+ stay.person_id
+ Y
+ N
+ N
+ 0
+ N
+
+
+ stay.academic_period_start_id
+ Y
+ N
+ N
+ 0
+ N
+
+
+
+
+
+
+
+
+ 272
+ 160
+ Y
+
+
+
+ fill_person
+ TableOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ eduetl
+
+
+ 1000
+ Y
+ N
+ N
+ Y
+ N
+
+ N
+ Y
+ N
+
+ Y
+ N
+
+
+
+ first_name
+ person.first_name
+
+
+ surname
+ person.surname
+
+
+ date_of_birth
+ person.date_of_birth
+
+
+ matriculation_id
+ person.matriculation_id
+
+
+ id
+ person.id
+
+
+
+
+
+
+
+
+ 496
+ 64
+ Y
+
+
+
+ fill_stay
+ TableOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ eduetl
+
+
+ 10000
+ Y
+ N
+ N
+ Y
+ N
+
+ N
+ Y
+ N
+
+ Y
+ N
+
+
+
+ name
+ stay.name
+
+
+ person_id
+ stay.person_id
+
+
+ id
+ stay.id
+
+
+ academic_period_start
+ stay.academic_period_start
+
+
+ academic_period_start_id
+ stay.academic_period_start_id
+
+
+ academic_period_end
+ stay.academic_period_end
+
+
+ academic_period_end_id
+ stay.academic_period_end_id
+
+
+ is_active
+ stay.is_active
+
+
+ ects_credits
+ stay.ects_credits
+
+
+ country_id
+ stay.country_id
+
+
+ country_name_deu
+ stay.country_name_deu
+
+
+ duration_months
+ stay.duration_months
+
+
+ stay_type
+ stay.stay_type
+
+
+ stay_type_id
+ stay.stay_type_id
+
+
+ framework
+ stay.framework
+
+
+ framework_id
+ stay.framework_id
+
+
+ is_self_funded
+ stay.is_self_funded
+
+
+ scholarship_deu
+ stay.scholarship_deu
+
+
+ is_guest
+ stay.is_guest
+
+
+ is_academic_services
+ stay.is_academic_services
+
+
+ direction_id
+ stay.direction_id
+
+
+ stay_nr
+ stay_nr
+
+
+
+
+
+
+
+
+ 576
+ 176
+ Y
+
+
+
+ load_all_person_files
+ TextFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ N
+
+
+ ^
+
+ N
+
+
+ 1
+
+ 1
+ N
+ 1
+ N
+ 80
+ 0
+ Y
+ N
+
+ N
+ N
+
+ mixed
+ UTF-8
+ Y
+
+ ${Internal.Transformation.Filename.Directory}/tmp
+ person_[0-9]\.txt
+
+ N
+ N
+ ${Internal.Transformation.Filename.Directory}/tmp
+ person_[0-9][0-9]\.txt
+
+ N
+ N
+
+
+
+ N
+ N
+ CSV
+ None
+
+
+
+
+ person.first_name
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 16
+ -1
+ none
+ N
+
+
+ person.surname
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 14
+ -1
+ none
+ N
+
+
+ person.date_of_birth
+ Date
+ yyyy-MM-dd
+ €
+ ,
+ .
+ -
+
+ -1
+ -1
+ -1
+ none
+ N
+
+
+ person.matriculation_id
+ String
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ person.id
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ 0
+ N
+ N
+
+
+ N
+
+
+
+
+ warning
+
+ error
+
+ line
+ Y
+ de_DE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 144
+ 64
+ Y
+
+
+
+ load_all_stay_files
+ TextFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ N
+
+
+ ^
+
+ N
+
+
+ 1
+
+ 1
+ N
+ 1
+ N
+ 80
+ 0
+ Y
+ N
+
+ N
+ N
+
+ mixed
+ UTF-8
+ Y
+
+ ${Internal.Transformation.Filename.Directory}/tmp
+ stay_[0-9]\.txt
+
+ N
+ N
+ ${Internal.Transformation.Filename.Directory}/tmp
+ stay_[0-9][0-9]\.txt
+
+ N
+ N
+ CSV
+ None
+
+
+
+
+ stay.name
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 34
+ -1
+ none
+ N
+
+
+ stay.person_id
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.id
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.academic_period_start
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 22
+ -1
+ none
+ N
+
+
+ stay.academic_period_start_id
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.academic_period_end
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 22
+ -1
+ none
+ N
+
+
+ stay.academic_period_end_id
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.is_active
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.ects_credits
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.country_id
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.country_name_deu
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 255
+ 0
+ none
+ N
+
+
+ stay.duration_months
+ Number
+ #.#
+ €
+ .
+ ,
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.stay_type
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 9
+ -1
+ none
+ N
+
+
+ stay.stay_type_id
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.framework
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 10
+ -1
+ none
+ N
+
+
+ stay.framework_id
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.is_self_funded
+ Integer
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 0
+ -1
+ none
+ N
+
+
+ stay.scholarship_deu
+ Integer
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 0
+ -1
+ none
+ N
+
+
+ stay.is_guest
+ Integer
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 0
+ -1
+ none
+ N
+
+
+ stay.is_academic_services
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ stay.direction_id
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ 0
+ N
+ N
+
+
+ N
+
+
+
+
+ warning
+
+ error
+
+ line
+ Y
+ de_DE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 144
+ 160
+ Y
+
+
+
+ set_stay_nr
+ FieldsChangeSequence
+
+ Y
+
+ 1
+
+ none
+
+
+ 1
+ 1
+ stay_nr
+
+
+ stay.person_id
+
+
+
+
+
+
+
+
+ 432
+ 176
+ Y
+
+
+
+
+ N
+
diff --git a/src-modules/module/mobility/etl/read_moveon/zend2csv.ktr b/src-modules/module/mobility/etl/read_moveon/zend2csv.ktr
new file mode 100644
index 0000000..27e27a0
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/zend2csv.ktr
@@ -0,0 +1,726 @@
+
+
+ zend2csv
+
+
+
+ Normal
+ 0
+ /
+
+
+ dataObject
+ person
+
+
+
+ page
+ 1
+
+
+
+ rows
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ SEQ_NR
+ Y
+ SEQ_NR
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ INPUT_BUFFER_ROWS
+ Y
+ INPUT_BUFFER_ROWS
+
+
+ OUTPUT_BUFFER_ROWS
+ Y
+ OUTPUT_BUFFER_ROWS
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ METRICS_DATE
+ Y
+ METRICS_DATE
+
+
+ METRICS_CODE
+ Y
+ METRICS_CODE
+
+
+ METRICS_DESCRIPTION
+ Y
+ METRICS_DESCRIPTION
+
+
+ METRICS_SUBJECT
+ Y
+ METRICS_SUBJECT
+
+
+ METRICS_TYPE
+ Y
+ METRICS_TYPE
+
+
+ METRICS_VALUE
+ Y
+ METRICS_VALUE
+
+
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+ -
+ 2017/09/28 22:15:35.562
+ -
+ 2017/09/28 22:15:35.562
+ H4sIAAAAAAAAAAMAAAAAAAAAAAA=
+ N
+
+
+
+
+ unescapeUnicodes
+ outraw2csv
+ Y
+
+
+ outraw2csv
+ Text file output
+ Y
+
+
+ unescapeUnicodes
+ Write to log
+ N
+
+
+ load_out.xml
+ unescapeUnicodes
+ Y
+
+
+
+ Text file output
+ TextFileOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ ;
+
+ N
+ N
+
+
+ UNIX
+ None
+ UTF-8
+
+ N
+
+ Y
+
+ ${Internal.Transformation.Filename.Directory}/tmp/${dataObject}_${page}
+ N
+ N
+ N
+ txt
+ N
+ N
+ N
+ N
+ N
+ N
+
+ Y
+ N
+ N
+ 0
+
+
+
+ outcsv
+ String
+
+
+
+
+
+ none
+ -1
+ -1
+
+
+
+
+
+
+
+
+ 768
+ 256
+ Y
+
+
+
+ Write to log
+ WriteToLog
+
+ Y
+
+ 1
+
+ none
+
+
+ log_level_basic
+ Y
+ N
+ 0
+
+
+
+ outdata
+
+
+
+
+
+
+
+
+ 624
+ 384
+ Y
+
+
+
+ load_out.xml
+ LoadFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ N
+ Y
+ N
+
+ UTF-8
+
+ ${Internal.Transformation.Filename.Directory}/tmp/out_${dataObject}_${page}.xml
+
+
+ N
+ N
+
+
+
+ outdata
+ content
+ String
+
+
+
+
+ -1
+ -1
+ none
+ N
+
+
+ 0
+ N
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 128
+ 128
+ Y
+
+
+
+ outraw2csv
+ XSLT
+
+ Y
+
+ 1
+
+ none
+
+
+ ${Internal.Transformation.Filename.Directory}/zend2csv.xsl
+ outdata
+ outcsv
+
+ N
+ N
+ JAXP
+
+
+
+ method
+ text
+
+
+
+
+
+
+
+
+ 608
+ 272
+ Y
+
+
+
+ unescapeUnicodes
+ UserDefinedJavaClass
+
+ N
+
+ 1
+
+ none
+
+
+
+
+ TRANSFORM_CLASS
+ Processor
+ import org.apache.commons.lang.StringEscapeUtils;
+
+
+public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
+ Object[] r = getRow();
+
+ if (r == null) {
+ setOutputDone();
+ return false;
+ }
+
+ Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());
+
+ String outdata = get(Fields.In, "outdata").getString(r);
+
+ outdata = StringEscapeUtils.unescapeJava(outdata);
+
+ get(Fields.Out, "outdata").setValue(outputRow, outdata);
+
+ putRow(data.outputRowMeta, outputRow);
+
+ return true;
+
+}
+
+
+
+ N
+
+
+
+
+
+
+
+
+
+ 336
+ 288
+ Y
+
+
+
+
+ N
+
diff --git a/src-modules/module/mobility/etl/read_moveon/zend2csv.xsl b/src-modules/module/mobility/etl/read_moveon/zend2csv.xsl
new file mode 100644
index 0000000..4442c00
--- /dev/null
+++ b/src-modules/module/mobility/etl/read_moveon/zend2csv.xsl
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+^
+^
+
+
+
+
+^
+
+^
+
+
+
+
diff --git a/src-modules/module/mobility/masken/36000_felderinfo.unl b/src-modules/module/mobility/masken/36000_felderinfo.unl
new file mode 100644
index 0000000..9bcf2a1
--- /dev/null
+++ b/src-modules/module/mobility/masken/36000_felderinfo.unl
@@ -0,0 +1,6 @@
+36000^Matrikel-Nr.^7^0^0^150^150^1^integer^50^0^0^^^^
+36001^Filter Personen^10^0^0^150^80^1^integer^200^0^1^<> select 1,'nur Personen mit Matrikelnr.' from xdummy union \
+select 0,'nur Personen ohne Matrikelnr.' from xdummy\
+union select 2,'nur Personen in amtl. Stat. mit Matrikelnr.' from xdummy union \
+select 3,'nur Personen in amtl. Stat. ohne Matrikelnr.' from xdummy^^^
+36003^Name^4^0^0^150^150^1^sql^50^0^0^^^^
diff --git a/src-modules/module/mobility/masken/36000_maske_system_bez.unl b/src-modules/module/mobility/masken/36000_maske_system_bez.unl
new file mode 100644
index 0000000..1679b83
--- /dev/null
+++ b/src-modules/module/mobility/masken/36000_maske_system_bez.unl
@@ -0,0 +1 @@
+36000^240^
diff --git a/src-modules/module/mobility/masken/36000_masken_felder_bez.unl b/src-modules/module/mobility/masken/36000_masken_felder_bez.unl
new file mode 100644
index 0000000..1e34203
--- /dev/null
+++ b/src-modules/module/mobility/masken/36000_masken_felder_bez.unl
@@ -0,0 +1,3 @@
+36000^36000^
+36000^36001^
+36000^36003^
diff --git a/src-modules/module/mobility/masken/36000_maskeninfo.unl b/src-modules/module/mobility/masken/36000_maskeninfo.unl
new file mode 100644
index 0000000..cf63f4d
--- /dev/null
+++ b/src-modules/module/mobility/masken/36000_maskeninfo.unl
@@ -0,0 +1,86 @@
+36000^Mobilität Personenverzeichnis^--Autor: D. Quathamer\
+--Datum: 2.8.2003\
+--freemarker template\
+\
+<#assign filter_person="1=1" />\
+/*<#if "<>"=="1">\
+<#assign filter_person="matrikel_nr is not null" />\
+#if>*/\
+/*<#if "<>"=="0">\
+<#assign filter_person="matrikel_nr is null" />\
+#if>*/\
+<#if "<>"=="2" || "<>"=="3" >\
+<#assign filter_person="surname in (select D.nachname from sos_astat A, sos_stud_d D where val(A.ef006)=D.matrikel_nr) " />\
+<#if "<>"=="2">\
+<#assign filter_person=filter_person+ " and matrikel_nr is not null" />\
+#if>\
+<#if "<>"=="3">\
+<#assign filter_person=filter_person+ " and matrikel_nr is null" />\
+#if>\
+#if>\
+\
+create temp table tmp_ergebnis (tid integer, \
+name varchar(255),\
+vorname varchar(255),\
+gebdat date,\
+matriculation_id integer,\
+matrikel_nr integer,\
+anz_stays integer\
+);\
+\
+insert into tmp_ergebnis(tid, \
+name ,\
+vorname,\
+gebdat ,\
+matriculation_id ,\
+matrikel_nr)\
+select id,\
+surname,\
+first_name,\
+ date_of_birth,\
+ matriculation_id,\
+matrikel_nr\
+FROM mobility_person \
+where ${filter_person}\
+/* and surname ilike '%<>%' */\
+/* and matrikel_nr =<> */\
+ ;\
+\
+update tmp_ergebnis set anz_stays=(select count(*)\
+ from mobility_stay S\
+ where S.person_id=tmp_ergebnis.tid);\
+ \
+select tid, \
+name ,\
+vorname,\
+gebdat ,\
+matriculation_id ,\
+matrikel_nr,\
+anz_stays\
+from tmp_ergebnis\
+order by 2,3,4;^XIL List\
+ drop_and_delete movable_columns sizable_columns horizontal_scrolling\
+ white_space_color=COLOR_WHITE fixed_columns=2\
+ min_heading_height=35\
+Column CID=0 heading_text="ID\\nMoveOn " center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=5 text_size=100\
+Column CID=1 heading_text=" Name " center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=30 text_size=200\
+Column CID=1 heading_text="Vorname" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=30 text_size=200\
+Column CID=1 heading_text="Geb.-Datum" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=10 text_size=200\
+Column CID=1 heading_text="Matrikelnr.\\nMoveOn" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=10 text_size=200\
+Column CID=1 heading_text="Matrikelnr.\\nCO" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=10 text_size=200\
+Column CID=1 heading_text="Anzahl\\nAufenthalte" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=10 text_size=200\
+@@@^^^Übersicht der Personen^drop table tmp_ergebnis;^^1^440^360^0^1^^
diff --git a/src-modules/module/mobility/masken/36000_sachgeb_maske_bez.unl b/src-modules/module/mobility/masken/36000_sachgeb_maske_bez.unl
new file mode 100644
index 0000000..6d6cb29
--- /dev/null
+++ b/src-modules/module/mobility/masken/36000_sachgeb_maske_bez.unl
@@ -0,0 +1 @@
+240^36000^
diff --git a/src-modules/module/mobility/masken/36020_felderinfo.unl b/src-modules/module/mobility/masken/36020_felderinfo.unl
new file mode 100644
index 0000000..9e32a34
--- /dev/null
+++ b/src-modules/module/mobility/masken/36020_felderinfo.unl
@@ -0,0 +1,6 @@
+36020^Matrikel-Nr.^7^0^0^150^150^1^integer^50^0^0^^^^
+36021^Filter Personen^10^0^0^150^80^1^integer^200^0^1^<> select 1,'nur Personen mit Matrikelnr.' from xdummy union \
+select 0,'nur Personen ohne Matrikelnr.' from xdummy\
+union select 2,'nur Personen in amtl. Stat. mit Matrikelnr.' from xdummy union \
+select 3,'nur Personen in amtl. Stat. ohne Matrikelnr.' from xdummy^^^
+36023^Name^4^0^0^150^150^1^sql^50^0^0^^^^
diff --git a/src-modules/module/mobility/masken/36020_maske_system_bez.unl b/src-modules/module/mobility/masken/36020_maske_system_bez.unl
new file mode 100644
index 0000000..d307415
--- /dev/null
+++ b/src-modules/module/mobility/masken/36020_maske_system_bez.unl
@@ -0,0 +1 @@
+36020^240^
diff --git a/src-modules/module/mobility/masken/36020_masken_felder_bez.unl b/src-modules/module/mobility/masken/36020_masken_felder_bez.unl
new file mode 100644
index 0000000..4b5f17f
--- /dev/null
+++ b/src-modules/module/mobility/masken/36020_masken_felder_bez.unl
@@ -0,0 +1,3 @@
+36020^36020^
+36020^36021^
+36020^36023^
diff --git a/src-modules/module/mobility/masken/36020_maskeninfo.unl b/src-modules/module/mobility/masken/36020_maskeninfo.unl
new file mode 100644
index 0000000..8f8df6e
--- /dev/null
+++ b/src-modules/module/mobility/masken/36020_maskeninfo.unl
@@ -0,0 +1,204 @@
+36020^Mobilität Datenblatt^--Autor: D. Quathamer\
+--Datum: 2.8.2003\
+--freemarker template\
+\
+<#assign filter_person="1=1" />\
+/*<#if "<>"=="1">\
+<#assign filter_person="matrikel_nr is not null" />\
+#if>*/\
+/*<#if "<>"=="0">\
+<#assign filter_person="matrikel_nr is null" />\
+#if>*/\
+<#if "<>"=="2" || "<>"=="3" >\
+<#assign filter_person="surname in (select D.nachname from sos_astat A, sos_stud_d D where val(A.ef006)=D.matrikel_nr) " />\
+<#if "<>"=="2">\
+<#assign filter_person=filter_person+ " and matrikel_nr is not null" />\
+#if>\
+<#if "<>"=="3">\
+<#assign filter_person=filter_person+ " and matrikel_nr is null" />\
+#if>\
+#if>\
+\
+create temp table tmp_ergebnis (person_id integer, \
+name varchar(255),\
+vorname varchar(255),\
+matrikel_nr integer,\
+stay_id INTEGER , \
+stay_name varchar(255),\
+academic_period_start VARCHAR(255) , \
+academic_period_start_id INTEGER , \
+academic_period_end VARCHAR(255) , \
+academic_period_end_id INTEGER , \
+is_active SMALLINT , \
+ects_credits double precision , \
+country_id INTEGER , \
+country_name_deu VARCHAR(255) ,\
+duration_months double precision , \
+stay_type VARCHAR(255) , \
+stay_type_id VARCHAR(255) , \
+framework VARCHAR(255) , \
+framework_id INTEGER , \
+is_self_funded INTEGER , \
+scholarship_deu INTEGER , \
+is_guest INTEGER , \
+is_academic_services INTEGER , \
+direction_id INTEGER,\
+direction_str varchar(255),\
+st_abr_country_astat CHAR(3) , \
+st_abr_month SMALLINT , \
+st_abr_type CHAR(2) , \
+st_abr_program CHAR(2) , \
+stay_nr INTEGER\
+);\
+\
+insert into tmp_ergebnis(person_id, \
+name ,\
+vorname,\
+matrikel_nr,\
+stay_id,\
+ stay_name,\
+ academic_period_start_id,\
+ academic_period_end_id,\
+ is_active,\
+ ects_credits,\
+ country_id,\
+ country_name_deu,\
+ duration_months,\
+ stay_type_id,\
+ framework,\
+ framework_id,\
+ is_self_funded,\
+ scholarship_deu,\
+ is_guest,\
+ is_academic_services,\
+ direction_id,\
+ st_abr_country_astat,\
+ st_abr_month,\
+ st_abr_type,\
+ st_abr_program,\
+ stay_nr\
+)\
+select P.id,\
+P.surname,\
+P.first_name,\
+P.matrikel_nr,\
+S.id,\
+S.name,\
+S.academic_period_start_id,\
+S.academic_period_end_id,\
+S.is_active,\
+S.ects_credits,\
+S.country_id,\
+S.country_name_deu,\
+S.duration_months,\
+S.stay_type_id,\
+S.framework,\
+S.framework_id,\
+S.is_self_funded,\
+S.scholarship_deu,\
+S.is_guest,\
+S.is_academic_services,\
+S.direction_id,\
+S.st_abr_country_astat,\
+S.st_abr_month,\
+S.st_abr_type,\
+S.st_abr_program,\
+S.stay_nr\
+FROM mobility_person P, mobility_stay S\
+where P.id=S.person_id\
+and ${filter_person}\
+/* and P.surname ilike '%<>%' */\
+/* and P.matrikel_nr =<> */\
+ ;\
+\
+update tmp_ergebnis set academic_period_start=(select S.eintrag\
+from semester S\
+where S.tid=tmp_ergebnis.academic_period_start_id);\
+\
+update tmp_ergebnis set academic_period_end=(select S.eintrag\
+from semester S\
+where S.tid=tmp_ergebnis.academic_period_end_id);\
+\
+\
+\
+update tmp_ergebnis set direction_str='Incoming'\
+where direction_id=1;\
+update tmp_ergebnis set direction_str='Outgoing'\
+where direction_id=2;\
+\
+\
+select --tid, \
+name ,\
+vorname,\
+matrikel_nr,\
+ stay_name,\
+ academic_period_start_id,\
+ academic_period_end_id,\
+-- is_active,\
+-- ects_credits,\
+-- country_id,\
+ country_name_deu,\
+ duration_months,\
+ stay_type,\
+ framework,\
+-- is_self_funded,\
+-- scholarship_deu,\
+-- is_guest,\
+-- is_academic_services,\
+ direction_str,\
+ st_abr_country_astat,\
+-- st_abr_month,\
+ st_abr_type,\
+ st_abr_program,\
+ stay_nr\
+from tmp_ergebnis\
+order by 1,2,3,4;^XIL List\
+ drop_and_delete movable_columns sizable_columns horizontal_scrolling\
+ white_space_color=COLOR_WHITE fixed_columns=2\
+ min_heading_height=35\
+Column CID=1 heading_text=" Name " center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=30 text_size=200\
+Column CID=1 heading_text="Vorname" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=30 text_size=200\
+Column CID=1 heading_text="Matrikelnr." center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=10 text_size=200\
+Column CID=1 heading_text="Name\\nAufenthalt" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=30 text_size=200\
+Column CID=1 heading_text="Beginn" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=10 text_size=200\
+Column CID=1 heading_text="Ende" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=10 text_size=200\
+Column CID=1 heading_text="Staat" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=10 text_size=200\
+Column CID=1 heading_text="Dauer in Monaten" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=5 text_size=200\
+Column CID=1 heading_text="Art des Aufenthaltes" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=20 text_size=200\
+Column CID=1 heading_text="Rahmen" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=20 text_size=200\
+Column CID=1 heading_text="Richtung" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=10 text_size=200\
+Column CID=1 heading_text="Staat (amtl.)" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=5 text_size=200\
+Column CID=1 heading_text="Art des Auslandsaufenthaltes\\n(amtl.)" center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=5 text_size=200\
+Column CID=1 heading_text="Art des Mobilitätsprogramms\\n(amtl.) " center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=5 text_size=200\
+Column CID=1 heading_text="Nr. des Mobilitätsprogramms\\npro Person " center_heading\
+ row_selectable col_selectable heading_platform readonly\
+ width=5 text_size=200\
+@@@^^^Aufstellung von Auslandsaufenthalten nach Art und Staat^drop table tmp_ergebnis;^^1^440^360^0^1^^
diff --git a/src-modules/module/mobility/masken/36020_sachgeb_maske_bez.unl b/src-modules/module/mobility/masken/36020_sachgeb_maske_bez.unl
new file mode 100644
index 0000000..f7ba7f8
--- /dev/null
+++ b/src-modules/module/mobility/masken/36020_sachgeb_maske_bez.unl
@@ -0,0 +1 @@
+240^36020^
diff --git a/src-modules/module/mobility/rohdaten/dateien.txt b/src-modules/module/mobility/rohdaten/dateien.txt
new file mode 100644
index 0000000..b0b903d
--- /dev/null
+++ b/src-modules/module/mobility/rohdaten/dateien.txt
@@ -0,0 +1 @@
+Rohdaten Dateien
diff --git a/src-modules/module/mobility/schluesseltabellen/dim_bp_altsicht_apnr_fuellen.sql b/src-modules/module/mobility/schluesseltabellen/dim_bp_altsicht_apnr_fuellen.sql
new file mode 100644
index 0000000..2335fa5
--- /dev/null
+++ b/src-modules/module/mobility/schluesseltabellen/dim_bp_altsicht_apnr_fuellen.sql
@@ -0,0 +1,17 @@
+-- XML-generiertes SQL-Script fuer -- von dim_bp_apnr_altsicht_fuellen.xsl
+
+--freemarker template
+
+
+select sp_table_exists('dim_bp_altsicht_apnr') from xdummy;
+
+
+
+
+<#if dim_bp_altsicht_apnr_exists=1>
+
+
+
+
+#if>
+
diff --git a/src-modules/module/mobility/schluesseltabellen/dimension_bp_fuellen.sql b/src-modules/module/mobility/schluesseltabellen/dimension_bp_fuellen.sql
new file mode 100644
index 0000000..2cf1864
--- /dev/null
+++ b/src-modules/module/mobility/schluesseltabellen/dimension_bp_fuellen.sql
@@ -0,0 +1,154 @@
+-- XML-generiertes SQL-Script fuer -- von dimension_bp_fuellen.xsl
+
+--freemarker template
+
+
+select sp_table_exists('dimension_bp') from xdummy;
+
+
+
+<#if dimension_bp_exists=1>
+
+
+
+create temp table tmp_dimension_bp(
+ tid SERIAL not null,
+d_akt_von DATE ,
+d_akt_bis DATE ,
+apnr VARCHAR(255) ,
+kurz VARCHAR(255) ,
+druck VARCHAR(255) ,
+lang_1 VARCHAR(255) ,
+lang_2 VARCHAR(255) ,
+lang_3 VARCHAR(255) ,
+keyfield VARCHAR(255) ,
+keyfieldtype VARCHAR(255) ,
+datatype VARCHAR(255) ,
+captionfield VARCHAR(255) ,
+sortfield VARCHAR(255) ,
+source VARCHAR(255) ,
+sourcefilter VARCHAR(255) ,
+system_key VARCHAR(255)
+);
+
+
+
+--updates auf vorh. Schlüssel
+
+<#if SQLdialect='Postgres'>
+--Postgres Dialekt:
+update dimension_bp set apnr=D.apnr,
+d_akt_von=D.d_akt_von,
+d_akt_bis=D.d_akt_bis ,
+kurz=D.kurz ,
+druck=D.druck ,
+lang_1=D.lang_1 ,
+lang_2=D.lang_2 ,
+lang_3=D.lang_3 ,
+keyfieldtype=D.keyfieldtype,
+datatype=D.datatype,
+keyfield=D.keyfield,
+captionfield=D.captionfield,
+source=D.source,
+sourcefilter=D.sourcefilter
+<#if TableFieldExists?exists && TableFieldExists('dimension_bp','sortfield')>
+,sortfield=D.sortfield
+#if>
+from tmp_dimension_bp D
+where D.system_key=dimension_bp.system_key;
+
+<#else>
+
+--Informix Dialekt:
+update dimension_bp set ( apnr,
+ d_akt_von,
+ d_akt_bis,
+ kurz,
+ druck,
+ lang_1,
+ lang_2,
+ lang_3,
+ keyfield,
+ keyfieldtype,
+ datatype,
+ captionfield,
+ <#if TableFieldExists?exists && TableFieldExists('dimension_bp','sortfield')>
+sortfield,
+#if>
+ source,
+ sourcefilter)
+ = ((select
+ apnr,
+ d_akt_von,
+ d_akt_bis,
+ kurz,
+ druck,
+ lang_1,
+ lang_2,
+ lang_3,
+ keyfield,
+ keyfieldtype,
+ datatype,
+ captionfield,
+<#if TableFieldExists?exists && TableFieldExists('dimension_bp','sortfield')>
+sortfield,
+#if>
+ source,
+ sourcefilter
+from tmp_dimension_bp D
+where D.system_key=dimension_bp.system_key))
+where system_key in (select D.system_key from tmp_dimension_bp D);
+
+
+#if>
+
+--neue werden eingefügt:
+delete from tmp_dimension_bp where system_key in
+(select system_key from dimension_bp);
+
+insert into dimension_bp(d_akt_von,
+ d_akt_bis,
+ apnr,
+ kurz,
+ druck,
+ lang_1,
+ lang_2,
+ lang_3,
+ keyfield ,
+ keyfieldtype,
+ datatype,
+captionfield ,
+<#if TableFieldExists?exists && TableFieldExists('dimension_bp','sortfield')>
+sortfield,
+#if>
+source ,
+sourcefilter,
+ system_key
+ )
+select d_akt_von,
+ d_akt_bis,
+ apnr,
+ kurz,
+ druck,
+ lang_1,
+ lang_2,
+ lang_3,
+ keyfield ,
+ keyfieldtype,
+ datatype,
+captionfield ,
+<#if TableFieldExists?exists && TableFieldExists('dimension_bp','sortfield')>
+sortfield,
+#if>
+source ,
+sourcefilter,
+ system_key
+ from tmp_dimension_bp
+;
+
+
+ drop table tmp_dimension_bp;
+
+
+#if>
+
diff --git a/src-modules/module/mobility/schluesseltabellen/dimension_fuellen.sql b/src-modules/module/mobility/schluesseltabellen/dimension_fuellen.sql
new file mode 100644
index 0000000..09a4c1c
--- /dev/null
+++ b/src-modules/module/mobility/schluesseltabellen/dimension_fuellen.sql
@@ -0,0 +1,125 @@
+-- XML-generiertes SQL-Script fuer -- von dimension_fuellen.xsl
+--freemarker template
+--(c) 2008 Daniel Quathamer
+
+
+select sp_table_exists('dimension') from xdummy;
+
+
+
+
+<#if dimension_exists=1>
+
+
+
+create temp table tmp_dimension(
+tid integer,
+dimension_bp_id INTEGER not null,
+fact_table VARCHAR(255) ,
+d_akt_von DATE ,
+d_akt_bis DATE ,
+name VARCHAR(255) ,
+druck VARCHAR(255) ,
+lang_1 VARCHAR(255) ,
+lang_2 VARCHAR(255) ,
+lang_3 VARCHAR(255) ,
+sourcefilter VARCHAR(255),
+system_key VARCHAR(255)
+
+);
+
+
+
+--Vorhandene Schlüssel werden ersetzt, nicht vorhandene Schlüssel bleiben:
+
+--vorhandene Schlüssel ermitteln:
+update tmp_dimension set tid=(select tid from
+dimension D where D.fact_table=tmp_dimension.fact_table
+and D.system_key=tmp_dimension.system_key);
+
+--vorhandene Schlüssel updaten:
+
+<#if SQLdialect='Postgres'>
+--Postgres Dialekt:
+update dimension set dimension_bp_id=D.dimension_bp_id,
+d_akt_von=D.d_akt_von,
+d_akt_bis=D.d_akt_bis ,
+name=D.name ,
+druck=D.druck ,
+lang_1=D.lang_1 ,
+lang_2=D.lang_2 ,
+lang_3=D.lang_3 ,
+sourcefilter=D.sourcefilter
+from tmp_dimension D
+where D.tid is not null
+and D.tid=dimension.tid;
+
+<#else>
+
+--Informix Dialekt:
+update dimension set (dimension_bp_id,
+ d_akt_von,
+ d_akt_bis,
+ name,
+ druck,
+ lang_1,
+ lang_2,
+ lang_3,
+ sourcefilter)
+ = ((select
+ dimension_bp_id,
+ d_akt_von,
+ d_akt_bis,
+ name,
+ druck,
+ lang_1,
+ lang_2,
+ lang_3,
+ sourcefilter
+from tmp_dimension D
+where D.tid=dimension.tid))
+where tid in (select D.tid from tmp_dimension D);
+
+
+#if>
+
+--neue Schlüssel:
+insert into dimension(
+dimension_bp_id,
+fact_table,
+ d_akt_von,
+ d_akt_bis,
+ name,
+ druck,
+ lang_1,
+ lang_2,
+ lang_3,
+ sourcefilter,
+ system_key)
+ select dimension_bp_id,
+ fact_table,
+ d_akt_von,
+ d_akt_bis,
+ name,
+ druck,
+ lang_1,
+ lang_2,
+ lang_3,
+ sourcefilter,
+ system_key
+ from tmp_dimension
+ where tid is null;
+
+
+--gelöschte Dimensionen:
+delete from dimension
+where fact_table in (select fact_table from tmp_dimension)
+and 0 = (select count(*) from tmp_dimension D
+where D.system_key=dimension.system_key);
+
+drop table tmp_dimension;
+
+
+
+#if>
+
diff --git a/src-modules/module/mobility/schluesseltabellen/sx_jobs.unl b/src-modules/module/mobility/schluesseltabellen/sx_jobs.unl
new file mode 100644
index 0000000..244162a
--- /dev/null
+++ b/src-modules/module/mobility/schluesseltabellen/sx_jobs.unl
@@ -0,0 +1 @@
+read_moveon^Mobilitäten laden (Moveon)^mobility/etl/read_moveon/loadMoveOn.kjb^240^^^1^ ^select 'mobility_stay_neu: ' || count(*)::integer from mobility_stay_neu union select 'mobility_person_neu: ' || count(*)::integer from mobility_person_neu^
diff --git a/src-modules/module/mobility/schluesseltabellen/sx_jobs_fuellen.sql b/src-modules/module/mobility/schluesseltabellen/sx_jobs_fuellen.sql
new file mode 100644
index 0000000..5030ebc
--- /dev/null
+++ b/src-modules/module/mobility/schluesseltabellen/sx_jobs_fuellen.sql
@@ -0,0 +1,24 @@
+--Freemarker Template
+--Achtung: Macro fügt Inhalte ein
+--Bitte nur Freemarker Variablen füllen
+
+select sp_table_exists('sx_jobs') from xdummy;
+
+
+<#if sx_jobs_exists=1>
+
+delete from sx_jobs where uniquename in (select uniquename from tmp_sx_jobs);
+
+insert into sx_jobs (uniquename,caption,filepath,sachgebiete_id,kenn_profil,hs_nr,modus_supported,params,check_sql)
+select uniquename,caption,filepath,sachgebiete_id,kenn_profil,hs_nr,modus_supported,params,check_sql
+from tmp_sx_jobs;
+
+
+
+<#if SQLdialect='Postgres'>
+ select sp_update_sequence('sx_jobs');
+#if>
+
+#if>
+
+drop table tmp_sx_jobs;
diff --git a/src-modules/module/mobility/schluesseltabellen/sx_jobs_update.x b/src-modules/module/mobility/schluesseltabellen/sx_jobs_update.x
new file mode 100755
index 0000000..7a14d7a
--- /dev/null
+++ b/src-modules/module/mobility/schluesseltabellen/sx_jobs_update.x
@@ -0,0 +1,16 @@
+#!/bin/bash
+DOQUERY "CREATE TABLE tmp_sx_jobs (
+ uniquename character varying(255),
+ caption character varying(255),
+ filepath character varying(255),
+ sachgebiete_id integer,
+ kenn_profil integer,
+ hs_nr integer,
+ modus_supported smallint,
+ params character varying(255),
+ check_sql text
+);"
+
+sx_auto_upload_table.x tmp_sx_jobs sx_jobs.unl
+DOSQL sx_jobs_fuellen.sql
+
diff --git a/src-modules/module/mobility/upgrade/dateien.txt b/src-modules/module/mobility/upgrade/dateien.txt
new file mode 100644
index 0000000..8a5700e
--- /dev/null
+++ b/src-modules/module/mobility/upgrade/dateien.txt
@@ -0,0 +1 @@
+Upgrade Dateien