Initial commit
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..64e27f5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+.git
+.idea/**/*.xml
+.settings
+.classpath
+target
+/.idea/compiler.xml
+/.idea/*.xml
+/.idea/modules.xml
+/.idea/vcs.xml
+/bin/
+.iml
+.project
+.classpath
+/planned-grid-measures.iml
+/dependency-reduced-pom.xml
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..d00df73
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,22 @@
+FROM myserver:withproxy
+#linux 16.04
+MAINTAINER Dimitris
+
+WORKDIR microservices
+
+RUN git clone http://172.18.22.160:8880/gitblit-1.8.0/r/oK/PlannedGridMeasures/mics-backend.git  && cd mics-backend && git checkout DEVELOP_BE
+
+WORKDIR mics-backend
+
+RUN mvn install -DskipTests
+
+WORKDIR /
+
+# COPY C:/\Users/\Administrator/\Projekt/\my_wrapper_script.sh my_wrapper_script.sh
+COPY my_wrapper_script.sh my_wrapper_script.sh
+RUN sed -i -e 's/\r$//' my_wrapper_script.sh
+CMD ./my_wrapper_script.sh
+
+EXPOSE 9050 9051
+
+
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..fc84dfb
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,18 @@
+node {
+
+    stage('Clone repository') {
+        /* Let's make sure we have the repository cloned to our workspace */
+
+        checkout scm
+    }
+
+    stage('Build image') {
+        /* This builds the actual image; synonymous to
+         * docker build on the command line */
+		sh 'docker build --rm --no-cache -t myserver_pgm_backend:jenkinsversion .'
+    }
+	
+	stage('Refresh containers') {
+		bat 'start cmd.exe /c C:\\Jenkinshelper\\refresh_docker.bat'
+	}
+}
\ No newline at end of file
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..11ecb79
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,198 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+   distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+    i) changes to the Program, and
+   ii) additions to the Program;
+
+   where such changes and/or additions to the Program originate from and are
+   distributed by that particular Contributor. A Contribution 'originates' from
+   a Contributor if it was added to the Program by such Contributor itself or
+   anyone acting on such Contributor's behalf. Contributions do not include
+   additions to the Program which: (i) are separate modules of software
+   distributed in conjunction with the Program under their own license
+   agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+  a) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free copyright license to
+     reproduce, prepare derivative works of, publicly display, publicly perform,
+     distribute and sublicense the Contribution of such Contributor, if any, and
+     such derivative works, in source code and object code form.
+  b) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free patent license under
+     Licensed Patents to make, use, sell, offer to sell, import and otherwise
+     transfer the Contribution of such Contributor, if any, in source code and
+     object code form. This patent license shall apply to the combination of the
+     Contribution and the Program if, at the time the Contribution is added by
+     the Contributor, such addition of the Contribution causes such combination
+     to be covered by the Licensed Patents. The patent license shall not apply
+     to any other combinations which include the Contribution. No hardware per
+     se is licensed hereunder.
+  c) Recipient understands that although each Contributor grants the licenses to
+     its Contributions set forth herein, no assurances are provided by any
+     Contributor that the Program does not infringe the patent or other
+     intellectual property rights of any other entity. Each Contributor
+     disclaims any liability to Recipient for claims brought by any other entity
+     based on infringement of intellectual property rights or otherwise. As a
+     condition to exercising the rights and licenses granted hereunder, each
+     Recipient hereby assumes sole responsibility to secure any other
+     intellectual property rights needed, if any. For example, if a third party
+     patent license is required to allow Recipient to distribute the Program, it
+     is Recipient's responsibility to acquire that license before distributing
+     the Program.
+  d) Each Contributor represents that to its knowledge it has sufficient
+     copyright rights in its Contribution, if any, to grant the copyright
+     license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+  a) it complies with the terms and conditions of this Agreement; and
+  b) its license agreement:
+      i) effectively disclaims on behalf of all Contributors all warranties and
+         conditions, express and implied, including warranties or conditions of
+         title and non-infringement, and implied warranties or conditions of
+         merchantability and fitness for a particular purpose;
+     ii) effectively excludes on behalf of all Contributors all liability for
+         damages, including direct, indirect, special, incidental and
+         consequential damages, such as lost profits;
+    iii) states that any provisions which differ from this Agreement are offered
+         by that Contributor alone and not by any other party; and
+     iv) states that source code for the Program is available from such
+         Contributor, and informs licensees how to obtain it in a reasonable
+         manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+  a) it must be made available under this Agreement; and
+  b) a copy of this Agreement must be included with each copy of the Program.
+     Contributors may not remove or alter any copyright notices contained within
+     the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement , including but not limited to the risks and costs
+of program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation
+may assign the responsibility to serve as the Agreement Steward to a suitable
+separate entity. Each new version of the Agreement will be given a
+distinguishing version number. The Program (including Contributions) may always
+be distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is published,
+Contributor may elect to distribute the Program (including its Contributions)
+under the new version. Except as expressly stated in Sections 2(a) and 2(b)
+above, Recipient receives no rights or licenses to the intellectual property of
+any Contributor under this Agreement, whether expressly, by implication,
+estoppel or otherwise. All rights in the Program not expressly granted under
+this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
diff --git a/api/swagger/swagger.yaml b/api/swagger/swagger.yaml
new file mode 100644
index 0000000..45af59c
--- /dev/null
+++ b/api/swagger/swagger.yaml
@@ -0,0 +1,13 @@
+swagger: "2.0"
+info:
+	version: "1.0.0"
+	title: planned-grid-measures API
+host: localhost:3000
+basePath: /
+schemes:
+	- http
+consumes:
+	- application/json
+produces:
+	- application/json
+paths:
\ No newline at end of file
diff --git a/backendSettings.json b/backendSettings.json
new file mode 100644
index 0000000..5014a61
--- /dev/null
+++ b/backendSettings.json
@@ -0,0 +1,12 @@
+{
+  "reminderPeriod": 48,
+  "bpmnGridConfig": {
+      "skipForApproval": false,
+      "endAfterApproved": false,
+      "skipRequesting": false,
+      "endAfterReleased": false,
+      "skipInWork": false
+  },
+  "emailTemplateAddressesForNotification": "approvedEmailTemplate, cancelledEmailTemplate",
+  "reloadMailAddressesInMin": 1
+}
\ No newline at end of file
diff --git a/db/migrations/V0_10__CREATE_PLGM_DB.sql b/db/migrations/V0_10__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..a1ac460
--- /dev/null
+++ b/db/migrations/V0_10__CREATE_PLGM_DB.sql
@@ -0,0 +1,1400 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--INSERT new Field color_code into TABLE REF_BRANCH
+--UPDATE HREF_BRANCH,
+--UPDATE REF_BRANCH INSERT TRIGGER, REF_BRANCH DELETE TRIGGER, REF_BRANCH UPDATE TRIGGER
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'NEW','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'APPLIED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'CANCELED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'FOR_APPROVAL','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'APPROVED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'REQUESTED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'RELEASED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'ACTIVE','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'IN_WORK','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'FINISHED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'CLOSED','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.TBL_GRIDMEASURE
+(
+  ID integer NOT NULL DEFAULT nextval('TBL_GRIDMEASURE_ID_SEQ'::regclass),
+  ID_DESCRIPTIVE character varying(50) NULL,
+  TITLE character varying(256) NULL,
+  AFFECTED_RESOURCE character varying(256) NULL,
+  REMARK character varying(1024) NULL,
+  FK_REF_GM_STATUS integer NULL,
+  REQUESTER_NAME character varying(256) NULL,
+  SWITCHING_OBJECT character varying(256) NULL,
+  COST_CENTER character varying(256) NULL,
+  RESPONSIBLE_ONSITE_NAME character varying(256) NULL,
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying(256) NULL,
+  APPROVAL_BY character varying(256) NULL,
+  AREA_OF_SWITCHING character varying(256) NULL,
+  APPOINTMENT_REPETITION character varying(100) NULL,
+  APPOINTMENT_STARTDATE timestamp without time zone NULL,
+  APPOINTMENT_NUMBEROF integer NULL,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying(1024) NULL,
+  BRANCH character varying(50) NULL,
+  LEVEL character varying(50) NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_USER_DEPARTMENT character varying(100) NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100) NULL,
+  MOD_DATE timestamp without time zone,
+
+
+  CONSTRAINT TBL_GRIDMEASURE_PKEY PRIMARY KEY (ID),
+  CONSTRAINT FK_GRIDMEASURE__GM_STATUS FOREIGN KEY (FK_REF_GM_STATUS)
+      REFERENCES public.REF_GM_STATUS (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.TBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.TBL_GRIDMEASURE TO PLGM_SERVICE;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden',1,'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern',4,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',8,'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',4,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',3,'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',2,'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  REQUESTER_NAME character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (256),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  BRANCH character varying (50),
+  LEVEL character varying (50),
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.REQUESTER_NAME,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.BRANCH,OLD.LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
diff --git a/db/migrations/V0_11__CREATE_PLGM_DB.sql b/db/migrations/V0_11__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..d03efc6
--- /dev/null
+++ b/db/migrations/V0_11__CREATE_PLGM_DB.sql
@@ -0,0 +1,1598 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--INSERT new TABLE REF_USER_SETTINGS inkl. INSERT-, UPDATE-, DELETE-TRIGGER
+--INSERT new TABLE HREF_USER_SETTINGS
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.ref_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 4
+  CACHE 1;
+ALTER TABLE public.ref_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('ref_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_user_settings TO plgm_service;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'NEW','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'APPLIED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'CANCELED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'FOR_APPROVAL','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'APPROVED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'REQUESTED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'RELEASED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'ACTIVE','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'IN_WORK','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'FINISHED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'CLOSED','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.TBL_GRIDMEASURE
+(
+  ID integer NOT NULL DEFAULT nextval('TBL_GRIDMEASURE_ID_SEQ'::regclass),
+  ID_DESCRIPTIVE character varying(50) NULL,
+  TITLE character varying(256) NULL,
+  AFFECTED_RESOURCE character varying(256) NULL,
+  REMARK character varying(1024) NULL,
+  FK_REF_GM_STATUS integer NULL,
+  REQUESTER_NAME character varying(256) NULL,
+  SWITCHING_OBJECT character varying(256) NULL,
+  COST_CENTER character varying(256) NULL,
+  RESPONSIBLE_ONSITE_NAME character varying(256) NULL,
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying(256) NULL,
+  APPROVAL_BY character varying(256) NULL,
+  AREA_OF_SWITCHING character varying(256) NULL,
+  APPOINTMENT_REPETITION character varying(100) NULL,
+  APPOINTMENT_STARTDATE timestamp without time zone NULL,
+  APPOINTMENT_NUMBEROF integer NULL,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying(1024) NULL,
+  BRANCH character varying(50) NULL,
+  LEVEL character varying(50) NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_USER_DEPARTMENT character varying(100) NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100) NULL,
+  MOD_DATE timestamp without time zone,
+
+
+  CONSTRAINT TBL_GRIDMEASURE_PKEY PRIMARY KEY (ID),
+  CONSTRAINT FK_GRIDMEASURE__GM_STATUS FOREIGN KEY (FK_REF_GM_STATUS)
+      REFERENCES public.REF_GM_STATUS (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.TBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.TBL_GRIDMEASURE TO PLGM_SERVICE;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden',1,'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern',4,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',8,'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',4,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',3,'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, branch)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',2,'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  REQUESTER_NAME character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (256),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  BRANCH character varying (50),
+  LEVEL character varying (50),
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.REF_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_INSERT_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_UPDATE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_DELETE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.REQUESTER_NAME,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.BRANCH,OLD.LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
diff --git a/db/migrations/V0_12__CREATE_PLGM_DB.sql b/db/migrations/V0_12__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..c3973ac
--- /dev/null
+++ b/db/migrations/V0_12__CREATE_PLGM_DB.sql
@@ -0,0 +1,1604 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--INSERT new Foreign-key Constraints into Table TBL_GRIDMEASURES
+--(ref_cost_center, ref_branch, ref_branch_level)
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.ref_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 4
+  CACHE 1;
+ALTER TABLE public.ref_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('ref_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_user_settings TO plgm_service;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'NEW','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'APPLIED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'CANCELED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'FOR_APPROVAL','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'APPROVED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'REQUESTED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'RELEASED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'ACTIVE','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'IN_WORK','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'FINISHED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'CLOSED','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  requester_name character varying(256),
+  switching_object character varying(256),
+  fk_ref_cost_center integer,
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__cost_center FOREIGN KEY (fk_ref_cost_center)
+      REFERENCES public.ref_cost_center (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden', 1, 1, 'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2, 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern', 4, 2 ,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 8, 2, 'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 4, 3 ,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 3, 2, 'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 2, 1, 'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  REQUESTER_NAME character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  FK_REF_COST_CENTER integer,
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.REF_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_INSERT_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_UPDATE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_DELETE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.REQUESTER_NAME,OLD.SWITCHING_OBJECT,OLD.FK_REF_COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
diff --git a/db/migrations/V0_13__CREATE_PLGM_DB.sql b/db/migrations/V0_13__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..6e7a3d8
--- /dev/null
+++ b/db/migrations/V0_13__CREATE_PLGM_DB.sql
@@ -0,0 +1,1605 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Change field value in REF_USER_SETTINGS to a maximum size of 4096 characters
+--Change field value in HREF_USER_SETTINGS to a maximum size of 4096 characters
+
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.ref_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('ref_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_user_settings TO plgm_service;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'NEW','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'APPLIED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'CANCELED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'FOR_APPROVAL','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'APPROVED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'REQUESTED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'RELEASED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'ACTIVE','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'IN_WORK','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'FINISHED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'CLOSED','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  requester_name character varying(256),
+  switching_object character varying(256),
+  fk_ref_cost_center integer,
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__cost_center FOREIGN KEY (fk_ref_cost_center)
+      REFERENCES public.ref_cost_center (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden', 1, 1, 'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2, 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern', 4, 2 ,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 8, 2, 'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 4, 3 ,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 3, 2, 'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 2, 1, 'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  REQUESTER_NAME character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  FK_REF_COST_CENTER integer,
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.REF_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_INSERT_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_UPDATE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_DELETE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.REQUESTER_NAME,OLD.SWITCHING_OBJECT,OLD.FK_REF_COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
diff --git a/db/migrations/V0_14__CREATE_PLGM_DB.sql b/db/migrations/V0_14__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..547ffe9
--- /dev/null
+++ b/db/migrations/V0_14__CREATE_PLGM_DB.sql
@@ -0,0 +1,1615 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Change field value in REF_USER_SETTINGS to a maximum size of 4096 characters
+--Change field value in HREF_USER_SETTINGS to a maximum size of 4096 characters
+
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.ref_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('ref_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_user_settings TO plgm_service;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'NEW','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'APPLIED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'CANCELED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'FOR_APPROVAL','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'APPROVED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'REQUESTED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'RELEASED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'ACTIVE','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'IN_WORK','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'FINISHED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'CLOSED','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  fk_ref_cost_center integer,
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__cost_center FOREIGN KEY (fk_ref_cost_center)
+      REFERENCES public.ref_cost_center (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden', 1, 1, 'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2, 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern', 4, 2 ,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 8, 2, 'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 4, 3 ,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 3, 2, 'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 2, 1, 'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  FK_REF_COST_CENTER integer,
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.REF_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_INSERT_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_UPDATE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_DELETE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.FK_REF_COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
diff --git a/db/migrations/V0_15__CREATE_PLGM_DB.sql b/db/migrations/V0_15__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..8da55ef
--- /dev/null
+++ b/db/migrations/V0_15__CREATE_PLGM_DB.sql
@@ -0,0 +1,2015 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Change field value in REF_USER_SETTINGS to a maximum size of 4096 characters
+--Change field value in HREF_USER_SETTINGS to a maximum size of 4096 characters
+
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.ref_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('ref_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_user_settings TO plgm_service;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zu Genehmigen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Geschlossen','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  fk_ref_cost_center integer,
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__cost_center FOREIGN KEY (fk_ref_cost_center)
+      REFERENCES public.ref_cost_center (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden', 1, 1, 'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2, 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern', 4, 2 ,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 8, 2, 'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 4, 3 ,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 3, 2, 'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 2, 1, 'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  mimetype character varying(100),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  FK_REF_COST_CENTER integer,
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+  MIMETYPE character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.REF_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_INSERT_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_UPDATE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_SETTINGS_DELETE_TRG ON PUBLIC.REF_USER_SETTINGS;
+
+CREATE TRIGGER REF_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.FK_REF_COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,MIMETYPE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.MIMETYPE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,MIMETYPE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.MIMETYPE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,MIMETYPE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.MIMETYPE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_16__CREATE_PLGM_DB.sql b/db/migrations/V0_16__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..88105cb
--- /dev/null
+++ b/db/migrations/V0_16__CREATE_PLGM_DB.sql
@@ -0,0 +1,2013 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table REF_USER_SETTINGS and all dependent items renamed to TBL_USER_SETTINGS
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zu Genehmigen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Geschlossen','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  fk_ref_cost_center integer,
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__cost_center FOREIGN KEY (fk_ref_cost_center)
+      REFERENCES public.ref_cost_center (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden', 1, 1, 'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2, 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern', 4, 2 ,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 8, 2, 'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 4, 3 ,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 3, 2, 'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, fk_ref_cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 2, 1, 'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  mimetype character varying(100),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  FK_REF_COST_CENTER integer,
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+  MIMETYPE character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.FK_REF_COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,FK_REF_COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.FK_REF_COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,MIMETYPE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.MIMETYPE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,MIMETYPE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.MIMETYPE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,MIMETYPE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.MIMETYPE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_17__CREATE_PLGM_DB.sql b/db/migrations/V0_17__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..ff8e61b
--- /dev/null
+++ b/db/migrations/V0_17__CREATE_PLGM_DB.sql
@@ -0,0 +1,2011 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Foreign Key Field FK_REF_COST_CENTER in table TBL_GRIDMEASURES, HTBL_GRIDMEASURES set to String.
+--Delete Foreign Key Constraint fk_gridmeasure__cost_center
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zu Genehmigen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Geschlossen','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden', 1, 1, 'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2, 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern', 4, 2 ,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 8, 2, 'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 4, 3 ,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 3, 2, 'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 2, 1, 'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_18__CREATE_PLGM_DB.sql b/db/migrations/V0_18__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..25af019
--- /dev/null
+++ b/db/migrations/V0_18__CREATE_PLGM_DB.sql
@@ -0,0 +1,2013 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--DROP TABLE for REF_USER_SETTINGS added
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zu Genehmigen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Geschlossen','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden', 1, 1, 'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2, 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern', 4, 2 ,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 8, 2, 'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 4, 3 ,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 3, 2, 'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 2, 1, 'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_19__CREATE_PLGM_DB.sql b/db/migrations/V0_19__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..3a94fd7
--- /dev/null
+++ b/db/migrations/V0_19__CREATE_PLGM_DB.sql
@@ -0,0 +1,2014 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--DROP TABLE for TBL_USER_SETTINGS added
+--DROP SEQUENCE for TTBL_USER_SETTINGS_ID_SEQ added
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zu Genehmigen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Geschlossen','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden', 1, 1, 'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 2, 2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern', 4, 2 ,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018', 3, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 8, 2, 'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,2);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('23','Stromkasten umtauschen','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 4, 3 ,'Kobe Bryant','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1,3);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('24','Lampe','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 3, 2, 'Mary Mustang','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, cost_center, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date, fk_ref_branch, fk_ref_branch_level)
+VALUES
+  ('25','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden', 2, 1, 'Jim Brown','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018', 1, 1);
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_20__CREATE_PLGM_DB.sql b/db/migrations/V0_20__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..8352b84
--- /dev/null
+++ b/db/migrations/V0_20__CREATE_PLGM_DB.sql
@@ -0,0 +1,2050 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Data added to TBL_GRIDMEASURE
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zu Genehmigen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Geschlossen','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', '2', 'Tom Sawyer', 'Abt. Wartung',
+            'Annie Amber', 'Huck Finn', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in drei Wochen', 'Die Glühlampe austauschen', 1,
+            1, 'Polly Peach', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 1,
+            'Kabel', '2', 'Robinson Crusoe', 'Abt. Wartung',
+            'Felix Freitag', 'Daniel Defoe', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'Maggie Montag', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator defekt', 1,
+            'Transformator', '2', 'Nils Holgerson', 'Abt. Wartung',
+            'Martin Gans', 'Selma Sonnenschein', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in einem Monat', 'Den Transformator austauschen', 1,
+            1, 'Akka von Kebnekaise', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_21__CREATE_PLGM_DB.sql b/db/migrations/V0_21__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..ff39751
--- /dev/null
+++ b/db/migrations/V0_21__CREATE_PLGM_DB.sql
@@ -0,0 +1,2255 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zu Genehmigen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', '2', 'Tom Sawyer', 'Abt. Wartung',
+            'Annie Amber', 'Huck Finn', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in drei Wochen', 'Die Glühlampe austauschen', 1,
+            1, 'Polly Peach', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 1,
+            'Kabel', '2', 'Robinson Crusoe', 'Abt. Wartung',
+            'Felix Freitag', 'Daniel Defoe', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'Maggie Montag', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator defekt', 1,
+            'Transformator', '2', 'Nils Holgerson', 'Abt. Wartung',
+            'Martin Gans', 'Selma Sonnenschein', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in einem Monat', 'Den Transformator austauschen', 1,
+            1, 'Akka von Kebnekaise', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_22__CREATE_PLGM_DB.sql b/db/migrations/V0_22__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..8458e7e
--- /dev/null
+++ b/db/migrations/V0_22__CREATE_PLGM_DB.sql
@@ -0,0 +1,2255 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', '2', 'Tom Sawyer', 'Abt. Wartung',
+            'Annie Amber', 'Huck Finn', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in drei Wochen', 'Die Glühlampe austauschen', 1,
+            1, 'Polly Peach', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 1,
+            'Kabel', '2', 'Robinson Crusoe', 'Abt. Wartung',
+            'Felix Freitag', 'Daniel Defoe', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'Maggie Montag', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator defekt', 1,
+            'Transformator', '2', 'Nils Holgerson', 'Abt. Wartung',
+            'Martin Gans', 'Selma Sonnenschein', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in einem Monat', 'Den Transformator austauschen', 1,
+            1, 'Akka von Kebnekaise', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_23__CREATE_PLGM_DB.sql b/db/migrations/V0_23__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..6fa5538
--- /dev/null
+++ b/db/migrations/V0_23__CREATE_PLGM_DB.sql
@@ -0,0 +1,2259 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', '2', 'Tom Sawyer', 'Abt. Wartung',
+            'Annie Amber', 'Huck Finn', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in drei Wochen', 'Die Glühlampe austauschen', 1,
+            1, 'Polly Peach', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 1,
+            'Kabel', '2', 'Robinson Crusoe', 'Abt. Wartung',
+            'Felix Freitag', 'Daniel Defoe', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'Maggie Montag', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator defekt', 1,
+            'Transformator', '2', 'Nils Holgerson', 'Abt. Wartung',
+            'Martin Gans', 'Selma Sonnenschein', '2', '2018-05-08 00:00:00',
+            3, '2018-05-09 00:00:00', '2018-05-10 00:00:00',
+            '2018-05-11 00:00:00', '2018-05-12 00:00:00',
+            '2018-05-13 00:00:00', '2018-05-14 00:00:00', '2018-05-15 00:00:00',
+            '2018-05-16 00:00:00', 'in einem Monat', 'Den Transformator austauschen', 1,
+            1, 'Akka von Kebnekaise', 'Abt. Wartung', '2018-05-08 00:00:00',
+            'testuser', 'Abt. Wartung', '2018-05-08 00:00:00');
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_24__CREATE_PLGM_DB.sql b/db/migrations/V0_24__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..5a09d6a
--- /dev/null
+++ b/db/migrations/V0_24__CREATE_PLGM_DB.sql
@@ -0,0 +1,2460 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_0', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Gas Station', 'Station', 'Station defekt', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Alles kaputt', 'Alles', 'Alles defekt', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_25__CREATE_PLGM_DB.sql b/db/migrations/V0_25__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..ec7df19
--- /dev/null
+++ b/db/migrations/V0_25__CREATE_PLGM_DB.sql
@@ -0,0 +1,2460 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme Beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_0', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Gas Station', 'Station', 'Station defekt', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Alles kaputt', 'Alles', 'Alles defekt', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_26__CREATE_PLGM_DB.sql b/db/migrations/V0_26__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..3f3408f
--- /dev/null
+++ b/db/migrations/V0_26__CREATE_PLGM_DB.sql
@@ -0,0 +1,2460 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_0', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Gas Station', 'Station', 'Station defekt', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Alles kaputt', 'Alles', 'Alles defekt', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_27__CREATE_PLGM_DB.sql b/db/migrations/V0_27__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..2f940f0
--- /dev/null
+++ b/db/migrations/V0_27__CREATE_PLGM_DB.sql
@@ -0,0 +1,2683 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_0', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Gas Station', 'Station', 'Station defekt', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Alles kaputt', 'Alles', 'Alles defekt', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_SINGLE_GRIDMEASURE
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_single_gridmeasure_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_single_gridmeasure_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_single_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_single_gridmeasure_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  title character varying(256),
+  switching_object character varying(256),
+  cim_id character varying(256),
+  cim_name character varying(256),
+  cim_description character varying(1024),
+  planned_starttime_singlemeasure timestamp without time zone,
+  planned_endtime_singlemeasure timestamp without time zone,
+  description character varying(1024),
+  fk_tbl_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_single_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_single_gridmeasure__gridmeasure FOREIGN KEY (fk_tbl_gridmeasure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_single_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_single_gridmeasure TO plgm_service;
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_SINGLE_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+
+
+CREATE TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_SINGLE_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  TITLE character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  CIM_ID character varying (256),
+  CIM_NAME character varying (256),
+  CIM_DESCRIPTION character varying (1024),
+  PLANNED_STARTTIME_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_SINGLEMEASURE timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  FK_TBL_GRIDMEASURE integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_SINGLE_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.TITLE,OLD.SWITCHING_OBJECT,OLD.CIM_ID,OLD.CIM_NAME,OLD.CIM_DESCRIPTION,OLD.PLANNED_STARTTIME_SINGLEMEASURE,OLD.PLANNED_ENDTIME_SINGLEMEASURE,OLD.DESCRIPTION,OLD.FK_TBL_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_28__CREATE_PLGM_DB.sql b/db/migrations/V0_28__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..27ed3af
--- /dev/null
+++ b/db/migrations/V0_28__CREATE_PLGM_DB.sql
@@ -0,0 +1,2713 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_0', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Gas Station', 'Station', 'Station defekt', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Alles kaputt', 'Alles', 'Alles defekt', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_SINGLE_GRIDMEASURE
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_single_gridmeasure_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_single_gridmeasure_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_single_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_single_gridmeasure_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  title character varying(256),
+  switching_object character varying(256),
+  cim_id character varying(256),
+  cim_name character varying(256),
+  cim_description character varying(1024),
+  planned_starttime_singlemeasure timestamp without time zone,
+  planned_endtime_singlemeasure timestamp without time zone,
+  description character varying(1024),
+  fk_tbl_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_single_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_single_gridmeasure__gridmeasure FOREIGN KEY (fk_tbl_gridmeasure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_single_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_single_gridmeasure TO plgm_service;
+
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe ausschalten', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '01.07.2018', '03.07.2018',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Kabel kürzen', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '03.07.2018', '04.07.2018',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (3, 'Transformator tauschen', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '05.07.2018', '06.07.2018',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_SINGLE_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+
+
+CREATE TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_SINGLE_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  TITLE character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  CIM_ID character varying (256),
+  CIM_NAME character varying (256),
+  CIM_DESCRIPTION character varying (1024),
+  PLANNED_STARTTIME_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_SINGLEMEASURE timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  FK_TBL_GRIDMEASURE integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_SINGLE_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.TITLE,OLD.SWITCHING_OBJECT,OLD.CIM_ID,OLD.CIM_NAME,OLD.CIM_DESCRIPTION,OLD.PLANNED_STARTTIME_SINGLEMEASURE,OLD.PLANNED_ENDTIME_SINGLEMEASURE,OLD.DESCRIPTION,OLD.FK_TBL_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_29__CREATE_PLGM_DB.sql b/db/migrations/V0_29__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..dec77e3
--- /dev/null
+++ b/db/migrations/V0_29__CREATE_PLGM_DB.sql
@@ -0,0 +1,2864 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_0', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Gas Station', 'Station', 'Station defekt', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Alles kaputt', 'Alles', 'Alles defekt', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_SINGLE_GRIDMEASURE
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_single_gridmeasure_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_single_gridmeasure_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_single_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_single_gridmeasure_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  title character varying(256),
+  switching_object character varying(256),
+  cim_id character varying(256),
+  cim_name character varying(256),
+  cim_description character varying(1024),
+  planned_starttime_singlemeasure timestamp without time zone,
+  planned_endtime_singlemeasure timestamp without time zone,
+  description character varying(1024),
+  fk_tbl_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_single_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_single_gridmeasure__gridmeasure FOREIGN KEY (fk_tbl_gridmeasure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_single_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_single_gridmeasure TO plgm_service;
+
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe ausschalten', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Kabel kürzen', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (3, 'Transformator tauschen', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe erneuern', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-12 16:30:00', '2018-06-13 14:00:00',
+            'Beschreibung', 2, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-13 16:30:00', '2018-06-14 14:00:00',
+            'Beschreibung', 3, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-14 16:30:00', '2018-06-15 14:00:00',
+            'Beschreibung', 4, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Gas', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Gas 2', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Stuhl', 'Stuhl', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 6, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Kabel', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 7, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Transformator 2', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Alles', 'Alles', '2', 'cim', 'cim Beschreibung',
+            '2018-06-11 16:30:00', '2018-06-12 14:00:00',
+            'Beschreibung', 9, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Schalter', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Schalter 2', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Rechner', 'Rechner', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 11, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Maschine', 'Maschine', '2', 'cim', 'cim Beschreibung',
+            '2018-06-16 16:30:00', '2018-06-17 14:00:00',
+            'Beschreibung', 12, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Monitor', 'Monitor', '2', 'cim', 'cim Beschreibung',
+            '2018-10-16 16:30:00', '2018-10-17 14:00:00',
+            'Beschreibung', 13, 'Hugo', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_SINGLE_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+
+
+CREATE TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_SINGLE_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  TITLE character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  CIM_ID character varying (256),
+  CIM_NAME character varying (256),
+  CIM_DESCRIPTION character varying (1024),
+  PLANNED_STARTTIME_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_SINGLEMEASURE timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  FK_TBL_GRIDMEASURE integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_SINGLE_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.TITLE,OLD.SWITCHING_OBJECT,OLD.CIM_ID,OLD.CIM_NAME,OLD.CIM_DESCRIPTION,OLD.PLANNED_STARTTIME_SINGLEMEASURE,OLD.PLANNED_ENDTIME_SINGLEMEASURE,OLD.DESCRIPTION,OLD.FK_TBL_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_30__CREATE_PLGM_DB.sql b/db/migrations/V0_30__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..f65806b
--- /dev/null
+++ b/db/migrations/V0_30__CREATE_PLGM_DB.sql
@@ -0,0 +1,3069 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_0', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Gas Station', 'Station', 'Station defekt', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Alles kaputt', 'Alles', 'Alles defekt', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_SINGLE_GRIDMEASURE
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_single_gridmeasure_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_single_gridmeasure_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_single_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_single_gridmeasure_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  title character varying(256),
+  switching_object character varying(256),
+  cim_id character varying(256),
+  cim_name character varying(256),
+  cim_description character varying(1024),
+  planned_starttime_singlemeasure timestamp without time zone,
+  planned_endtime_singlemeasure timestamp without time zone,
+  description character varying(1024),
+  fk_tbl_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_single_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_single_gridmeasure__gridmeasure FOREIGN KEY (fk_tbl_gridmeasure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_single_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_single_gridmeasure TO plgm_service;
+
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe ausschalten', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Kabel kürzen', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (3, 'Transformator tauschen', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe erneuern', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-12 16:30:00', '2018-06-13 14:00:00',
+            'Beschreibung', 2, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-13 16:30:00', '2018-06-14 14:00:00',
+            'Beschreibung', 3, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-14 16:30:00', '2018-06-15 14:00:00',
+            'Beschreibung', 4, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Gas', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Gas 2', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Stuhl', 'Stuhl', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 6, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Kabel', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 7, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Transformator 2', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Alles', 'Alles', '2', 'cim', 'cim Beschreibung',
+            '2018-06-11 16:30:00', '2018-06-12 14:00:00',
+            'Beschreibung', 9, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Schalter', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Schalter 2', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Rechner', 'Rechner', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 11, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Maschine', 'Maschine', '2', 'cim', 'cim Beschreibung',
+            '2018-06-16 16:30:00', '2018-06-17 14:00:00',
+            'Beschreibung', 12, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Monitor', 'Monitor', '2', 'cim', 'cim Beschreibung',
+            '2018-10-16 16:30:00', '2018-10-17 14:00:00',
+            'Beschreibung', 13, 'Hugo', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_STEPS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_steps_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_steps_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_steps
+(
+  id integer NOT NULL DEFAULT nextval('tbl_steps_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  switching_object character varying(256),
+  target_state character varying(256),
+  fk_tbl_single_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_steps_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_steps__single_gridmeasure FOREIGN KEY (fk_tbl_single_gridmeasure)
+      REFERENCES public.tbl_single_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_steps
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_steps TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE REF_VERSION
+-- ---------------------------------------------
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_SINGLE_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+
+
+CREATE TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_SINGLE_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  TITLE character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  CIM_ID character varying (256),
+  CIM_NAME character varying (256),
+  CIM_DESCRIPTION character varying (1024),
+  PLANNED_STARTTIME_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_SINGLEMEASURE timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  FK_TBL_GRIDMEASURE integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_SINGLE_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+
+-- PUBLIC.HTBL_STEPS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_STEPS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_STEPS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_STEPS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_STEPS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_STEPS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_STEPS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  SWITCHING_OBJECT character varying (256),
+  TARGET_STATE character varying (256),
+  FK_TBL_SINGLE_GRIDMEASURE integer,
+  CREATE_USER character varying (100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying (100),
+  MOD_DATE timestamp without time zone,
+
+  CONSTRAINT HTBL_STEPS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_STEPS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_STEPS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.TITLE,OLD.SWITCHING_OBJECT,OLD.CIM_ID,OLD.CIM_NAME,OLD.CIM_DESCRIPTION,OLD.PLANNED_STARTTIME_SINGLEMEASURE,OLD.PLANNED_ENDTIME_SINGLEMEASURE,OLD.DESCRIPTION,OLD.FK_TBL_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_STEPS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_STEPS_INSERT_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_UPDATE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_STEPS (
+
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.SWITCHING_OBJECT,OLD.TARGET_STATE,OLD.FK_TBL_SINGLE_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_DELETE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_DELETE_TRG();
+
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_31__CREATE_PLGM_DB.sql b/db/migrations/V0_31__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..a6baf40
--- /dev/null
+++ b/db/migrations/V0_31__CREATE_PLGM_DB.sql
@@ -0,0 +1,3247 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_STEPS;
+DROP SEQUENCE IF EXISTS public.TBL_STEPS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Gas Station', 'Station', 'Station defekt', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Alles kaputt', 'Alles', 'Alles defekt', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_13', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_SINGLE_GRIDMEASURE
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_single_gridmeasure_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_single_gridmeasure_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_single_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_single_gridmeasure_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  title character varying(256),
+  switching_object character varying(256),
+  cim_id character varying(256),
+  cim_name character varying(256),
+  cim_description character varying(1024),
+  planned_starttime_singlemeasure timestamp without time zone,
+  planned_endtime_singlemeasure timestamp without time zone,
+  description character varying(1024),
+  fk_tbl_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_single_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_single_gridmeasure__gridmeasure FOREIGN KEY (fk_tbl_gridmeasure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_single_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_single_gridmeasure TO plgm_service;
+
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe ausschalten', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Kabel kürzen', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (3, 'Transformator tauschen', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe erneuern', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-12 16:30:00', '2018-06-13 14:00:00',
+            'Beschreibung', 2, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-13 16:30:00', '2018-06-14 14:00:00',
+            'Beschreibung', 3, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-14 16:30:00', '2018-06-15 14:00:00',
+            'Beschreibung', 4, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Gas', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Gas 2', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Stuhl', 'Stuhl', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 6, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Kabel', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 7, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Transformator 2', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Alles', 'Alles', '2', 'cim', 'cim Beschreibung',
+            '2018-06-11 16:30:00', '2018-06-12 14:00:00',
+            'Beschreibung', 9, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Schalter', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Schalter 2', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Rechner', 'Rechner', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 11, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Maschine', 'Maschine', '2', 'cim', 'cim Beschreibung',
+            '2018-06-16 16:30:00', '2018-06-17 14:00:00',
+            'Beschreibung', 12, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Monitor', 'Monitor', '2', 'cim', 'cim Beschreibung',
+            '2018-10-16 16:30:00', '2018-10-17 14:00:00',
+            'Beschreibung', 13, 'Hugo', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_STEPS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_steps_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_steps_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_steps
+(
+  id integer NOT NULL DEFAULT nextval('tbl_steps_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  switching_object character varying(256),
+  target_state character varying(256),
+  fk_tbl_single_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_steps_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_steps__single_gridmeasure FOREIGN KEY (fk_tbl_single_gridmeasure)
+      REFERENCES public.tbl_single_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_steps
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_steps TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE REF_VERSION
+-- ---------------------------------------------
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1,2, '2018-06-11 14:00:00', 'otto',12,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2,2, '2018-06-11 14:01:00', 'otto',12,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (3,2, '2018-06-11 14:03:00', 'otto',12,3, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (4,2, '2018-06-11 14:04:00', 'otto',12,4, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (5,2, '2018-06-11 14:05:00', 'otto',12,5, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (6,2, '2018-06-11 14:06:00', 'otto',12,6, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (7,2, '2018-06-11 14:07:00', 'otto',12,7, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (8,2, '2018-06-11 14:08:00', 'otto',12,8, 'admin', '2018-06-11 14:08:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (9,2, '2018-06-11 14:09:00', 'otto',12,9, 'admin', '2018-06-11 14:09:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (10,2, '2018-06-11 14:10:00', 'otto',12,10, 'admin', '2018-06-11 14:10:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (11,2, '2018-06-11 14:11:00', 'otto',12,11, 'admin', '2018-06-11 14:11:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (13,2, '2018-07-01 14:55:00', 'admin',13,0, 'admin', '2018-07-01 14:55:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (14,2, '2018-07-01 14:56:00', 'admin',13,1, 'admin', '2018-07-01 14:56:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (15,2, '2018-07-01 14:57:00', 'admin',13,3, 'admin', '2018-07-01 14:57:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (16,2, '2018-07-01 14:57:00', 'admin',13,12, 'admin', '2018-07-01 14:57:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (18,1, '2018-06-11 14:00:00', 'admin',11,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (19,1, '2018-06-11 14:01:00', 'admin',11,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (20,1, '2018-06-11 14:02:00', 'admin',11,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (21,1, '2018-06-11 14:03:00', 'admin',11,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (22,1, '2018-06-11 14:04:00', 'admin',11,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (23,1, '2018-06-11 14:05:00', 'admin',11,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (24,1, '2018-06-11 14:06:00', 'admin',11,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (25,1, '2018-06-11 14:07:00', 'admin',11,8, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (26,1, '2018-06-11 14:08:00', 'admin',11,9, 'admin', '2018-06-11 14:08:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (27,1, '2018-06-11 14:09:00', 'admin',11,10, 'admin', '2018-06-11 14:09:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (29,2, '2018-06-11 14:00:00', 'admin',10,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (30,2, '2018-06-11 14:01:00', 'admin',10,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (31,2, '2018-06-11 14:02:00', 'admin',10,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (32,2, '2018-06-11 14:03:00', 'admin',10,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (33,2, '2018-06-11 14:04:00', 'admin',10,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (34,2, '2018-06-11 14:05:00', 'admin',10,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (35,2, '2018-06-11 14:06:00', 'admin',10,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (36,2, '2018-06-11 14:07:00', 'admin',10,8, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (37,2, '2018-06-11 14:08:00', 'admin',10,9, 'admin', '2018-06-11 14:08:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (39,2, '2018-06-11 14:00:00', 'admin',9,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (40,2, '2018-06-11 14:01:00', 'admin',9,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (41,2, '2018-06-11 14:02:00', 'admin',9,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (42,2, '2018-06-11 14:03:00', 'admin',9,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (43,2, '2018-06-11 14:04:00', 'admin',9,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (44,2, '2018-06-11 14:05:00', 'admin',9,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (45,2, '2018-06-11 14:06:00', 'admin',9,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (46,2, '2018-06-11 14:07:00', 'admin',9,8, 'admin', '2018-06-11 14:07:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (48,2, '2018-06-11 14:00:00', 'admin',8,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (49,2, '2018-06-11 14:01:00', 'admin',8,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (50,2, '2018-06-11 14:02:00', 'admin',8,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (51,2, '2018-06-11 14:03:00', 'admin',8,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (52,2, '2018-06-11 14:04:00', 'admin',8,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (53,2, '2018-06-11 14:05:00', 'admin',8,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (54,2, '2018-06-11 14:06:00', 'admin',8,7, 'admin', '2018-06-11 14:06:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (56,2, '2018-06-11 14:00:00', 'admin',7,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (57,2, '2018-06-11 14:01:00', 'admin',7,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (58,2, '2018-06-11 14:02:00', 'admin',7,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (59,2, '2018-06-11 14:03:00', 'admin',7,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (60,2, '2018-06-11 14:04:00', 'admin',7,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (61,2, '2018-06-11 14:05:00', 'admin',7,6, 'admin', '2018-06-11 14:05:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (63,2, '2018-06-11 14:00:00', 'admin',6,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (64,2, '2018-06-11 14:01:00', 'admin',6,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (65,2, '2018-06-11 14:02:00', 'admin',6,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (66,2, '2018-06-11 14:03:00', 'admin',6,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (67,2, '2018-06-11 14:04:00', 'admin',6,5, 'admin', '2018-06-11 14:04:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (69,2, '2018-06-11 14:00:00', 'admin',5,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (70,2, '2018-06-11 14:01:00', 'admin',5,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (71,2, '2018-06-11 14:02:00', 'admin',5,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (72,2, '2018-06-11 14:03:00', 'admin',5,4, 'admin', '2018-06-11 14:03:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (74,2, '2018-06-11 14:00:00', 'admin',4,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (75,2, '2018-06-11 14:01:00', 'admin',4,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (76,2, '2018-06-11 14:02:00', 'admin',4,3, 'admin', '2018-06-11 14:02:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (78,2, '2018-06-11 14:00:00', 'admin',3,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (79,2, '2018-06-11 14:01:00', 'admin',3,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (80,2, '2018-06-11 14:02:00', 'admin',3,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (81,2, '2018-06-11 14:03:00', 'admin',3,2, 'admin', '2018-06-11 14:03:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (83,2, '2018-06-11 14:00:00', 'admin',2,0, 'jasper', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (84,2, '2018-06-11 14:01:00', 'admin',2,1, 'jasper', '2018-06-11 14:01:00');
+
+
+INSERT INTO public.htbl_gridmeasure(hid, haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (86,2, '2018-06-11 14:01:00', 'admin',1,0, 'otto', '2018-06-11 14:01:00');
+
+
+
+-- PUBLIC.HTBL_SINGLE_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+
+
+CREATE TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_SINGLE_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  TITLE character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  CIM_ID character varying (256),
+  CIM_NAME character varying (256),
+  CIM_DESCRIPTION character varying (1024),
+  PLANNED_STARTTIME_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_SINGLEMEASURE timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  FK_TBL_GRIDMEASURE integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_SINGLE_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+
+-- PUBLIC.HTBL_STEPS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_STEPS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_STEPS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_STEPS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_STEPS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_STEPS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_STEPS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  SWITCHING_OBJECT character varying (256),
+  TARGET_STATE character varying (256),
+  FK_TBL_SINGLE_GRIDMEASURE integer,
+  CREATE_USER character varying (100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying (100),
+  MOD_DATE timestamp without time zone,
+
+  CONSTRAINT HTBL_STEPS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_STEPS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_STEPS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.TITLE,OLD.SWITCHING_OBJECT,OLD.CIM_ID,OLD.CIM_NAME,OLD.CIM_DESCRIPTION,OLD.PLANNED_STARTTIME_SINGLEMEASURE,OLD.PLANNED_ENDTIME_SINGLEMEASURE,OLD.DESCRIPTION,OLD.FK_TBL_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_STEPS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_STEPS_INSERT_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_UPDATE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_STEPS (
+
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.SWITCHING_OBJECT,OLD.TARGET_STATE,OLD.FK_TBL_SINGLE_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_DELETE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_DELETE_TRG();
+
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_32__CREATE_PLGM_DB.sql b/db/migrations/V0_32__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..0497d72
--- /dev/null
+++ b/db/migrations/V0_32__CREATE_PLGM_DB.sql
@@ -0,0 +1,3247 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_STEPS;
+DROP SEQUENCE IF EXISTS public.TBL_STEPS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Gas Station', 'Station', 'Station defekt', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Alles kaputt', 'Alles', 'Alles defekt', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_13', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_SINGLE_GRIDMEASURE
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_single_gridmeasure_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_single_gridmeasure_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_single_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_single_gridmeasure_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  title character varying(256),
+  switching_object character varying(256),
+  cim_id character varying(256),
+  cim_name character varying(256),
+  cim_description character varying(1024),
+  planned_starttime_singlemeasure timestamp without time zone,
+  planned_endtime_singlemeasure timestamp without time zone,
+  description character varying(1024),
+  fk_tbl_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_single_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_single_gridmeasure__gridmeasure FOREIGN KEY (fk_tbl_gridmeasure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_single_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_single_gridmeasure TO plgm_service;
+
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe ausschalten', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Kabel kürzen', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (3, 'Transformator tauschen', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe erneuern', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-12 16:30:00', '2018-06-13 14:00:00',
+            'Beschreibung', 2, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-13 16:30:00', '2018-06-14 14:00:00',
+            'Beschreibung', 3, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-14 16:30:00', '2018-06-15 14:00:00',
+            'Beschreibung', 4, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Gas', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Gas 2', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Stuhl', 'Stuhl', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 6, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Kabel', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 7, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Transformator 2', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Alles', 'Alles', '2', 'cim', 'cim Beschreibung',
+            '2018-06-11 16:30:00', '2018-06-12 14:00:00',
+            'Beschreibung', 9, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Schalter', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Schalter 2', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Rechner', 'Rechner', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 11, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Maschine', 'Maschine', '2', 'cim', 'cim Beschreibung',
+            '2018-06-16 16:30:00', '2018-06-17 14:00:00',
+            'Beschreibung', 12, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Monitor', 'Monitor', '2', 'cim', 'cim Beschreibung',
+            '2018-10-16 16:30:00', '2018-10-17 14:00:00',
+            'Beschreibung', 13, 'Hugo', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_STEPS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_steps_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_steps_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_steps
+(
+  id integer NOT NULL DEFAULT nextval('tbl_steps_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  switching_object character varying(256),
+  target_state character varying(256),
+  fk_tbl_single_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_steps_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_steps__single_gridmeasure FOREIGN KEY (fk_tbl_single_gridmeasure)
+      REFERENCES public.tbl_single_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_steps
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_steps TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE REF_VERSION
+-- ---------------------------------------------
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'otto',12,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'otto',12,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'otto',12,3, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'otto',12,4, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'otto',12,5, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'otto',12,6, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:07:00', 'otto',12,7, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:08:00', 'otto',12,8, 'admin', '2018-06-11 14:08:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:09:00', 'otto',12,9, 'admin', '2018-06-11 14:09:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:10:00', 'otto',12,10, 'admin', '2018-06-11 14:10:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:11:00', 'otto',12,11, 'admin', '2018-06-11 14:11:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:55:00', 'admin',13,0, 'admin', '2018-07-01 14:55:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:56:00', 'admin',13,1, 'admin', '2018-07-01 14:56:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:57:00', 'admin',13,3, 'admin', '2018-07-01 14:57:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:57:00', 'admin',13,12, 'admin', '2018-07-01 14:57:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:00:00', 'admin',11,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:01:00', 'admin',11,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:02:00', 'admin',11,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:03:00', 'admin',11,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:04:00', 'admin',11,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:05:00', 'admin',11,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:06:00', 'admin',11,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:07:00', 'admin',11,8, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:08:00', 'admin',11,9, 'admin', '2018-06-11 14:08:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:09:00', 'admin',11,10, 'admin', '2018-06-11 14:09:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',10,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',10,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',10,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',10,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',10,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',10,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'admin',10,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:07:00', 'admin',10,8, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:08:00', 'admin',10,9, 'admin', '2018-06-11 14:08:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',9,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',9,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',9,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',9,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',9,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',9,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'admin',9,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:07:00', 'admin',9,8, 'admin', '2018-06-11 14:07:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',8,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',8,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',8,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',8,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',8,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',8,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'admin',8,7, 'admin', '2018-06-11 14:06:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',7,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',7,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',7,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',7,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',7,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',7,6, 'admin', '2018-06-11 14:05:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',6,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',6,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',6,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',6,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',6,5, 'admin', '2018-06-11 14:04:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',5,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',5,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',5,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',5,4, 'admin', '2018-06-11 14:03:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',4,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',4,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',4,3, 'admin', '2018-06-11 14:02:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',3,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',3,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',3,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',3,2, 'admin', '2018-06-11 14:03:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',2,0, 'jasper', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',2,1, 'jasper', '2018-06-11 14:01:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',1,0, 'otto', '2018-06-11 14:01:00');
+
+
+-- PUBLIC.HTBL_SINGLE_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+
+
+CREATE TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_SINGLE_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  TITLE character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  CIM_ID character varying (256),
+  CIM_NAME character varying (256),
+  CIM_DESCRIPTION character varying (1024),
+  PLANNED_STARTTIME_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_SINGLEMEASURE timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  FK_TBL_GRIDMEASURE integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_SINGLE_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+
+-- PUBLIC.HTBL_STEPS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_STEPS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_STEPS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_STEPS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_STEPS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_STEPS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_STEPS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  SWITCHING_OBJECT character varying (256),
+  TARGET_STATE character varying (256),
+  FK_TBL_SINGLE_GRIDMEASURE integer,
+  CREATE_USER character varying (100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying (100),
+  MOD_DATE timestamp without time zone,
+
+  CONSTRAINT HTBL_STEPS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_STEPS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_STEPS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.TITLE,OLD.SWITCHING_OBJECT,OLD.CIM_ID,OLD.CIM_NAME,OLD.CIM_DESCRIPTION,OLD.PLANNED_STARTTIME_SINGLEMEASURE,OLD.PLANNED_ENDTIME_SINGLEMEASURE,OLD.DESCRIPTION,OLD.FK_TBL_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_STEPS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_STEPS_INSERT_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_UPDATE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_STEPS (
+
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.SWITCHING_OBJECT,OLD.TARGET_STATE,OLD.FK_TBL_SINGLE_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_DELETE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_DELETE_TRG();
+
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT, COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_33__CREATE_PLGM_DB.sql b/db/migrations/V0_33__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..ac99837
--- /dev/null
+++ b/db/migrations/V0_33__CREATE_PLGM_DB.sql
@@ -0,0 +1,3250 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_STEPS;
+DROP SEQUENCE IF EXISTS public.TBL_STEPS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  email_addresses character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Gas Station', 'Station', 'Station defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Alles kaputt', 'Alles', 'Alles defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_13', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_SINGLE_GRIDMEASURE
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_single_gridmeasure_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_single_gridmeasure_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_single_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_single_gridmeasure_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  title character varying(256),
+  switching_object character varying(256),
+  cim_id character varying(256),
+  cim_name character varying(256),
+  cim_description character varying(1024),
+  planned_starttime_singlemeasure timestamp without time zone,
+  planned_endtime_singlemeasure timestamp without time zone,
+  description character varying(1024),
+  fk_tbl_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_single_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_single_gridmeasure__gridmeasure FOREIGN KEY (fk_tbl_gridmeasure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_single_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_single_gridmeasure TO plgm_service;
+
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe ausschalten', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Kabel kürzen', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (3, 'Transformator tauschen', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe erneuern', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-12 16:30:00', '2018-06-13 14:00:00',
+            'Beschreibung', 2, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-13 16:30:00', '2018-06-14 14:00:00',
+            'Beschreibung', 3, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-14 16:30:00', '2018-06-15 14:00:00',
+            'Beschreibung', 4, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Gas', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Gas 2', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Stuhl', 'Stuhl', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 6, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Kabel', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 7, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Transformator 2', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Alles', 'Alles', '2', 'cim', 'cim Beschreibung',
+            '2018-06-11 16:30:00', '2018-06-12 14:00:00',
+            'Beschreibung', 9, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Schalter', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Schalter 2', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Rechner', 'Rechner', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 11, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Maschine', 'Maschine', '2', 'cim', 'cim Beschreibung',
+            '2018-06-16 16:30:00', '2018-06-17 14:00:00',
+            'Beschreibung', 12, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Monitor', 'Monitor', '2', 'cim', 'cim Beschreibung',
+            '2018-10-16 16:30:00', '2018-10-17 14:00:00',
+            'Beschreibung', 13, 'Hugo', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_STEPS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_steps_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_steps_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_steps
+(
+  id integer NOT NULL DEFAULT nextval('tbl_steps_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  switching_object character varying(256),
+  target_state character varying(256),
+  fk_tbl_single_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_steps_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_steps__single_gridmeasure FOREIGN KEY (fk_tbl_single_gridmeasure)
+      REFERENCES public.tbl_single_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_steps
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_steps TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE REF_VERSION
+-- ---------------------------------------------
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  EMAIL_ADDRESSES character varying(1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'otto',12,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'otto',12,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'otto',12,3, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'otto',12,4, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'otto',12,5, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'otto',12,6, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:07:00', 'otto',12,7, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:08:00', 'otto',12,8, 'admin', '2018-06-11 14:08:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:09:00', 'otto',12,9, 'admin', '2018-06-11 14:09:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:10:00', 'otto',12,10, 'admin', '2018-06-11 14:10:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:11:00', 'otto',12,11, 'admin', '2018-06-11 14:11:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:55:00', 'admin',13,0, 'admin', '2018-07-01 14:55:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:56:00', 'admin',13,1, 'admin', '2018-07-01 14:56:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:57:00', 'admin',13,3, 'admin', '2018-07-01 14:57:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:57:00', 'admin',13,12, 'admin', '2018-07-01 14:57:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:00:00', 'admin',11,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:01:00', 'admin',11,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:02:00', 'admin',11,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:03:00', 'admin',11,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:04:00', 'admin',11,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:05:00', 'admin',11,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:06:00', 'admin',11,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:07:00', 'admin',11,8, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:08:00', 'admin',11,9, 'admin', '2018-06-11 14:08:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:09:00', 'admin',11,10, 'admin', '2018-06-11 14:09:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',10,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',10,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',10,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',10,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',10,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',10,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'admin',10,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:07:00', 'admin',10,8, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:08:00', 'admin',10,9, 'admin', '2018-06-11 14:08:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',9,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',9,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',9,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',9,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',9,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',9,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'admin',9,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:07:00', 'admin',9,8, 'admin', '2018-06-11 14:07:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',8,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',8,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',8,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',8,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',8,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',8,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'admin',8,7, 'admin', '2018-06-11 14:06:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',7,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',7,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',7,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',7,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',7,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',7,6, 'admin', '2018-06-11 14:05:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',6,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',6,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',6,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',6,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',6,5, 'admin', '2018-06-11 14:04:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',5,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',5,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',5,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',5,4, 'admin', '2018-06-11 14:03:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',4,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',4,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',4,3, 'admin', '2018-06-11 14:02:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',3,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',3,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',3,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',3,2, 'admin', '2018-06-11 14:03:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',2,0, 'jasper', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',2,1, 'jasper', '2018-06-11 14:01:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',1,0, 'otto', '2018-06-11 14:01:00');
+
+
+-- PUBLIC.HTBL_SINGLE_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+
+
+CREATE TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_SINGLE_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  TITLE character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  CIM_ID character varying (256),
+  CIM_NAME character varying (256),
+  CIM_DESCRIPTION character varying (1024),
+  PLANNED_STARTTIME_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_SINGLEMEASURE timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  FK_TBL_GRIDMEASURE integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_SINGLE_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+
+-- PUBLIC.HTBL_STEPS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_STEPS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_STEPS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_STEPS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_STEPS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_STEPS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_STEPS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  SWITCHING_OBJECT character varying (256),
+  TARGET_STATE character varying (256),
+  FK_TBL_SINGLE_GRIDMEASURE integer,
+  CREATE_USER character varying (100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying (100),
+  MOD_DATE timestamp without time zone,
+
+  CONSTRAINT HTBL_STEPS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_STEPS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_STEPS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.TITLE,OLD.SWITCHING_OBJECT,OLD.CIM_ID,OLD.CIM_NAME,OLD.CIM_DESCRIPTION,OLD.PLANNED_STARTTIME_SINGLEMEASURE,OLD.PLANNED_ENDTIME_SINGLEMEASURE,OLD.DESCRIPTION,OLD.FK_TBL_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_STEPS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_STEPS_INSERT_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_UPDATE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_STEPS (
+
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.SWITCHING_OBJECT,OLD.TARGET_STATE,OLD.FK_TBL_SINGLE_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_DELETE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_DELETE_TRG();
+
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,EMAIL_ADDRESSES,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.EMAIL_ADDRESSES,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,EMAIL_ADDRESSES,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.EMAIL_ADDRESSES,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,EMAIL_ADDRESSES,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.EMAIL_ADDRESSES,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_34__CREATE_PLGM_DB.sql b/db/migrations/V0_34__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..cf4902b
--- /dev/null
+++ b/db/migrations/V0_34__CREATE_PLGM_DB.sql
@@ -0,0 +1,3456 @@
+/*
+**********
+********************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Table TBL_LOCK added, table HTBL_LOCK added incl. Triggers
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_STEPS;
+DROP SEQUENCE IF EXISTS public.TBL_STEPS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_LOCK CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_LOCK_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_USER_SETTINGS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_USER_SETTINGS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.tbl_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_measure_documents CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_measure_documents_id_seq;
+
+DROP TABLE IF EXISTS public.tbl_id_counter CASCADE;
+DROP SEQUENCE IF EXISTS public.tbl_id_counter_id_seq;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_LOCK
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.TBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.TBL_LOCK_ID_SEQ
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_lock
+(
+  id integer NOT NULL DEFAULT nextval('TBL_LOCK_ID_SEQ'::regclass),
+  key integer NOT NULL, -- Id from tbl_gridmeasure
+  username character varying(50) NOT NULL,
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_lock_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_lock
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_lock TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_lock_unique_key ON public.tbl_lock (key ASC, info ASC );
+
+-- ---------------------------------------------
+-- TABLE TBL_USER_SETTINGS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_user_settings_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_user_settings_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_user_settings
+(
+  id integer NOT NULL DEFAULT nextval('tbl_user_settings_id_seq'::regclass),
+  username character varying(50) NOT NULL,
+  setting_type character varying(50),
+  value character varying(4096),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_user_settings_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_user_settings
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_user_settings TO plgm_service;
+
+CREATE UNIQUE INDEX tbl_user_set_unique_key ON public.tbl_user_settings (username ASC, setting_type ASC );
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_ID_COUNTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_id_counter_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_id_counter_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_id_counter
+(
+  id integer NOT NULL DEFAULT nextval('tbl_id_counter_id_seq'::regclass),
+  counter integer NOT NULL,
+  counter_type character varying(256),
+  info character varying(256),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_id_counter_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_id_counter
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_id_counter TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  COLOR_CODE character varying(20),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('S', 'Strom', '#fc6042','testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('G', 'Gas', '#fdea64', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('F', 'Fernwärme', '#2cc990', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, color_code, create_user, create_date, mod_user, mod_date)
+    VALUES ('W', 'Wasser', '#2c82c9', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'Neu','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'Beantragt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'Storniert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'Zur Genehmigung','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'Genehmigt','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'Angefordert','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'Freigegeben','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'Schalten aktiv','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'In Arbeit','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Arbeit beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'Maßnahme beendet','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Geschlossen','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'Abgelehnt','system','17.06.2018','system','17.06.2018');
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+-- REQUESTER_NAME COLUMN DELETED--
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.tbl_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_gridmeasure_id_seq'::regclass),
+  id_descriptive character varying(50),
+  title character varying(256),
+  affected_resource character varying(256),
+  remark character varying(1024),
+  email_addresses character varying(1024),
+  fk_ref_gm_status integer,
+  switching_object character varying(256),
+  cost_center character varying(50),
+  responsible_onsite_name character varying(256),
+  responsible_onsite_department character varying(256),
+  approval_by character varying(256),
+  area_of_switching character varying(256),
+  appointment_repetition character varying(100),
+  appointment_startdate timestamp without time zone,
+  appointment_numberof integer,
+  planned_starttime_first_sequence timestamp without time zone,
+  planned_starttime_first_singlemeasure timestamp without time zone,
+  planned_endtime_last_singlemeasure timestamp without time zone,
+  planned_endtime_gridmeasure timestamp without time zone,
+  starttime_first_sequence timestamp without time zone,
+  starttime_first_singlemeasure timestamp without time zone,
+  endtime_last_singlemeasure timestamp without time zone,
+  endtime_gridmeasure timestamp without time zone,
+  time_of_reallocation character varying(100),
+  description character varying(1024),
+  fk_ref_branch integer,
+  fk_ref_branch_level integer,
+  create_user character varying(100) NOT NULL,
+  create_user_department character varying(100),
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_user_department character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_gridmeasure__gm_status FOREIGN KEY (fk_ref_gm_status)
+      REFERENCES public.ref_gm_status (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch FOREIGN KEY (fk_ref_branch)
+      REFERENCES public.ref_branch (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT fk_gridmeasure__branch_level FOREIGN KEY (fk_ref_branch_level)
+      REFERENCES public.ref_branch_level (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_gridmeasure TO plgm_service;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_1', 'Kabel erneuern', 'Kabel', 'Kabel defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 0,
+            'Kabel', 'K-155', 'hugo', 'Abteilung 1',
+            'otto', 'Frankfurt', 'einmalig', '2018-06-14 15:15:00',
+            7, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Das Kabel austauschen', 1,
+            1, 'otto', 4, '2018-06-09 15:00:00',
+            'otto', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_2', 'Lampe erneuern', 'Lampe', 'Lampe defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 1,
+            'Lampe', 'K-004', 'otto', 'Abteilung 3',
+            'jasper', 'Mannheim', 'einmalig', '2018-06-16 15:15:00',
+            3, '2018-06-11 15:00:00', '2018-06-12 16:30:00',
+            '2018-06-13 14:00:00', '2018-06-19 20:15:00',
+            '2018-06-16 15:15:00', '2018-06-17 15:45:00', '2018-06-18 13:00:00',
+            '2018-06-20 16:00:00', 'in zwei Tagen', 'Die Lampe austauschen', 2,
+            1, 'jasper', 3, '2018-06-11 15:00:00',
+            'jasper', 4, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_3', 'Transformator erneuern', 'Transformator', 'Transformator defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 2,
+            'Transformator', 'K-222', 'otto', 'Abteilung 4',
+            'hugo', 'Murr', 'täglich', '2018-06-17 15:15:00',
+            6, '2018-06-12 15:00:00', '2018-06-13 16:30:00',
+            '2018-06-14 14:00:00', '2018-06-20 20:15:00',
+            '2018-06-17 15:15:00', '2018-06-18 15:45:00', '2018-06-19 13:00:00',
+            '2018-06-21 16:00:00', 'in 8 Tagen', 'Den Transformator austauschen', 4,
+            1, 'hugo', 4, '2018-06-12 15:00:00',
+            'otto', 4, '2018-06-17 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_4', 'Transformator ersetzen', 'Transformator', 'Transformator kaputt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 3,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 7',
+            'otto', 'Stuttgart', 'einmalig', '2018-06-18 15:15:00',
+            3, '2018-06-13 15:00:00', '2018-06-14 16:30:00',
+            '2018-06-15 14:00:00', '2018-06-21 20:15:00',
+            '2018-06-18 15:15:00', '2018-06-19 15:45:00', '2018-06-20 13:00:00',
+            '2018-06-22 16:00:00', 'in 9 Tagen', 'Den Transformator austauschen', 3,
+            1, 'otto', 4, '2018-06-13 15:00:00',
+            'otto', 5, '2018-06-18 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_5', 'Gas Station', 'Station', 'Station defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 4,
+            'Station', 'K-004', 'hugo', 'Abteilung 5',
+            'otto', 'Ludwigsburg', 'wöchentlich', '2018-07-14 15:15:00',
+            1, '2018-07-09 15:00:00', '2018-07-10 16:30:00',
+            '2018-07-11 14:00:00', '2018-07-17 20:15:00',
+            '2018-07-14 15:15:00', '2018-07-15 15:45:00', '2018-07-16 13:00:00',
+            '2018-07-18 16:00:00', 'in zwei Wochen', 'Die Gas Station untersuchen', 2,
+            1, 'otto', 5, '2018-07-09 15:00:00',
+            'otto', 3, '2018-07-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_6', 'Stuhl mit drei Beinen', 'Stuhl', 'Stuhl kaputt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 5,
+            'Stuhl', 'K-155', 'bruno', 'Abteilung 0',
+            'otto', 'Hamburg', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Stuhl austauschen', 4,
+            1, 'claudio', 4, '2018-06-07 15:00:00',
+            'claudio', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_7', 'Kabel vergrößern', 'Kabel', 'Kabel zu kurz', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 6,
+            'Kabel', 'K-222', 'otto', 'Abteilung 76',
+            'dagmar', 'Steinheim', 'einmalig', '2018-08-14 15:15:00',
+            27, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-08-18 16:00:00', 'in zwei Wochen', 'Das Kabel vergrößern', 3,
+            1, 'claudio', 3, '2018-08-09 15:00:00',
+            'bruno', 5, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_8', 'Transformator austauschen', 'Transformator', 'Transformator 160 Grads', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 7,
+            'Transformator', 'K-155', 'hugo', 'Abteilung 1',
+            'dagmar', 'Murr', 'täglich', '2018-06-14 15:15:00',
+            6, '2018-06-09 15:00:00', '2018-06-10 16:30:00',
+            '2018-06-11 14:00:00', '2018-06-17 20:15:00',
+            '2018-06-14 15:15:00', '2018-06-15 15:45:00', '2018-06-16 13:00:00',
+            '2018-06-18 16:00:00', 'in zwei Tagen', 'Den Transformator austauschen', 1,
+            1, 'dagmar', 4, '2018-06-09 15:00:00',
+            'dagmar', 3, '2018-06-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_9', 'Alles kaputt', 'Alles', 'Alles defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 8,
+            'Alles', 'K-222', 'hugo', 'Abteilung 100',
+            'otto', 'Berlin', 'einmalig', '2018-06-15 15:15:00',
+            2, '2018-06-10 15:00:00', '2018-06-11 16:30:00',
+            '2018-06-12 14:00:00', '2018-06-18 20:15:00',
+            '2018-06-15 15:15:00', '2018-06-16 15:45:00', '2018-06-17 13:00:00',
+            '2018-06-19 16:00:00', 'in zwei Jahren', 'Alles wegwerfen', 2,
+            3, 'bruno', 5, '2018-06-10 15:00:00',
+            'claudio', 5, '2018-06-15 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_10', 'Schalter erneuern', 'Schalter', 'Schalter defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 9,
+            'Schalter', 'K-004', 'otto', 'Abteilung 15',
+            'hugo', 'Kassel', 'einmalig', '2018-08-14 15:15:00',
+            9, '2018-08-09 15:00:00', '2018-08-10 16:30:00',
+            '2018-08-11 14:00:00', '2018-08-17 20:15:00',
+            '2018-08-14 15:15:00', '2018-08-15 15:45:00', '2018-08-16 13:00:00',
+            '2018-08-18 16:00:00', 'in 6 Tagen', 'Den Schalter austauschen', 1,
+            1, 'dagmar', 3, '2018-08-09 15:00:00',
+            'otto', 3, '2018-08-14 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_11', 'Rechner austauschen', 'Rechner', 'Rechner defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 10,
+            'Rechner', 'K-155', 'bruno', 'Abteilung 14',
+            'claudio', 'Murr', 'einmalig', '2018-06-12 15:15:00',
+            3, '2018-06-07 15:00:00', '2018-06-08 16:30:00',
+            '2018-06-09 14:00:00', '2018-06-15 20:15:00',
+            '2018-06-12 15:15:00', '2018-06-13 15:45:00', '2018-06-14 13:00:00',
+            '2018-06-16 16:00:00', 'in zwei Tagen', 'Den Rechner austauschen', 4,
+            1, 'hugo', 5, '2018-06-07 15:00:00',
+            'otto', 3, '2018-06-12 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_12', 'Maschine untersuchen', 'Maschine', 'Maschine defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 11,
+            'Maschine', 'K-004', 'bruno', 'Abteilung 1',
+            'otto', 'Ludwigsburg', 'einmalig', '2018-06-20 15:15:00',
+            5, '2018-06-15 15:00:00', '2018-06-16 16:30:00',
+            '2018-06-17 14:00:00', '2018-06-23 20:15:00',
+            '2018-06-20 15:15:00', '2018-06-21 15:45:00', '2018-06-22 13:00:00',
+            '2018-06-24 16:00:00', 'in 8 Tagen', 'Die Maschine austauschen', 1,
+            1, 'bruno', 4, '2018-06-15 15:00:00',
+            'bruno', 3, '2018-06-20 15:15:00');
+
+INSERT INTO public.tbl_gridmeasure(
+            id_descriptive, title, affected_resource, remark, email_addresses, fk_ref_gm_status,
+            switching_object, cost_center, responsible_onsite_name, responsible_onsite_department,
+            approval_by, area_of_switching, appointment_repetition, appointment_startdate,
+            appointment_numberof, planned_starttime_first_sequence, planned_starttime_first_singlemeasure,
+            planned_endtime_last_singlemeasure, planned_endtime_gridmeasure,
+            starttime_first_sequence, starttime_first_singlemeasure, endtime_last_singlemeasure,
+            endtime_gridmeasure, time_of_reallocation, description, fk_ref_branch,
+            fk_ref_branch_level, create_user, create_user_department, create_date,
+            mod_user, mod_user_department, mod_date)
+    VALUES ('2018_13', 'Monitor kaputt', 'Monitor', 'Monitor defekt', 'mailingListRecipient@test.de; mailingList2Recipient@test.de', 12,
+            'Monitor', 'K-222', 'jasper', 'Abteilung 167',
+            'hugo', 'Asperg', 'wöchentlich', '2018-10-20 15:15:00',
+            5, '2018-10-15 15:00:00', '2018-10-16 16:30:00',
+            '2018-10-17 14:00:00', '2018-10-23 20:15:00',
+            '2018-10-20 15:15:00', '2018-10-21 15:45:00', '2018-10-22 13:00:00',
+            '2018-10-24 16:00:00', 'in 8 Tagen', 'Den Monitor austauschen', 4,
+            1, 'jasper', 4, '2018-10-15 15:00:00',
+            'bruno', 3, '2018-10-20 15:15:00');
+
+
+
+
+-- ---------------------------------------------
+-- TABLE TBL_SINGLE_GRIDMEASURE
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_single_gridmeasure_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_single_gridmeasure_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_single_gridmeasure
+(
+  id integer NOT NULL DEFAULT nextval('tbl_single_gridmeasure_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  title character varying(256),
+  switching_object character varying(256),
+  cim_id character varying(256),
+  cim_name character varying(256),
+  cim_description character varying(1024),
+  planned_starttime_singlemeasure timestamp without time zone,
+  planned_endtime_singlemeasure timestamp without time zone,
+  description character varying(1024),
+  fk_tbl_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_single_gridmeasure_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_single_gridmeasure__gridmeasure FOREIGN KEY (fk_tbl_gridmeasure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_single_gridmeasure
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_single_gridmeasure TO plgm_service;
+
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe ausschalten', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Kabel kürzen', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (3, 'Transformator tauschen', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 1, 'Otto', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Lampe erneuern', 'Lampe', '2', 'cim', 'cim Beschreibung',
+            '2018-06-12 16:30:00', '2018-06-13 14:00:00',
+            'Beschreibung', 2, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-13 16:30:00', '2018-06-14 14:00:00',
+            'Beschreibung', 3, 'Hugo', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-14 16:30:00', '2018-06-15 14:00:00',
+            'Beschreibung', 4, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Gas', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Gas 2', 'Gas', '2', 'cim', 'cim Beschreibung',
+            '2018-07-10 16:30:00', '2018-07-11 14:00:00',
+            'Beschreibung', 5, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Stuhl', 'Stuhl', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 6, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Kabel', 'Kabel', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 7, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Transformator', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Transformator 2', 'Transformator', '2', 'cim', 'cim Beschreibung',
+            '2018-06-10 16:30:00', '2018-06-11 14:00:00',
+            'Beschreibung', 8, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Alles', 'Alles', '2', 'cim', 'cim Beschreibung',
+            '2018-06-11 16:30:00', '2018-06-12 14:00:00',
+            'Beschreibung', 9, 'Otto', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Schalter', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (2, 'Schalter 2', 'Schalter', '2', 'cim', 'cim Beschreibung',
+            '2018-08-10 16:30:00', '2018-08-11 14:00:00',
+            'Beschreibung', 10, 'Otto', '01.07.2018', 'Hugo',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Rechner', 'Rechner', '2', 'cim', 'cim Beschreibung',
+            '2018-06-08 16:30:00', '2018-06-09 14:00:00',
+            'Beschreibung', 11, 'Jasper', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Maschine', 'Maschine', '2', 'cim', 'cim Beschreibung',
+            '2018-06-16 16:30:00', '2018-06-17 14:00:00',
+            'Beschreibung', 12, 'Hugo', '01.07.2018', 'Jasper',
+            '01.07.2018');
+
+INSERT INTO public.tbl_single_gridmeasure(
+            sortorder, title, switching_object, cim_id, cim_name, cim_description,
+            planned_starttime_singlemeasure, planned_endtime_singlemeasure,
+            description, fk_tbl_gridmeasure, create_user, create_date, mod_user,
+            mod_date)
+    VALUES (1, 'Monitor', 'Monitor', '2', 'cim', 'cim Beschreibung',
+            '2018-10-16 16:30:00', '2018-10-17 14:00:00',
+            'Beschreibung', 13, 'Hugo', '01.07.2018', 'Otto',
+            '01.07.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_STEPS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_steps_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_steps_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_steps
+(
+  id integer NOT NULL DEFAULT nextval('tbl_steps_id_seq'::regclass),
+  sortorder integer NOT NULL,
+  switching_object character varying(256),
+  target_state character varying(256),
+  fk_tbl_single_gridmeasure integer NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_steps_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_steps__single_gridmeasure FOREIGN KEY (fk_tbl_single_gridmeasure)
+      REFERENCES public.tbl_single_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_steps
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_steps TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE REF_VERSION
+-- ---------------------------------------------
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ---------------------------------------------
+-- TABLE TBL_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_documents_id_seq'::regclass),
+  document_name character varying(260),
+  document bytea,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_documents_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_documents TO plgm_service;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_MEASURE_DOCUMENTS
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.tbl_measure_documents_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_measure_documents_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.tbl_measure_documents
+(
+  id integer NOT NULL DEFAULT nextval('tbl_measure_documents_id_seq'::regclass),
+  fk_tbl_measure integer,
+  fk_tbl_documents integer,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT tbl_measure_documents_pkey PRIMARY KEY (id),
+  CONSTRAINT fk_tbl_measure_documents_measure FOREIGN KEY (fk_tbl_measure)
+      REFERENCES public.tbl_gridmeasure (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE,
+  CONSTRAINT fk_tbl_measure_documents_documents FOREIGN KEY (fk_tbl_documents)
+      REFERENCES public.tbl_documents (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_measure_documents
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.tbl_measure_documents TO plgm_service;
+
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HTBL_LOCK Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_LOCK;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_LOCK_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_LOCK_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_LOCK_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_LOCK
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_LOCK_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  KEY integer,
+  USERNAME character varying (50),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_LOCK_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_LOCK
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_LOCK TO PLGM_SERVICE;
+
+
+
+
+-- PUBLIC.HTBL_USER_SETTINGS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_USER_SETTINGS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_USER_SETTINGS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_USER_SETTINGS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_USER_SETTINGS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  USERNAME character varying (50),
+  SETTING_TYPE character varying (50),
+  VALUE character varying(4096),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_USER_SETTINGS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_USER_SETTINGS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_USER_SETTINGS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  COLOR_CODE character varying (20),
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+-- REQUESTER_NAME COLUMN DELETED--
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  EMAIL_ADDRESSES character varying(1024),
+  FK_REF_GM_STATUS integer,
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (50),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION character varying (100),
+  DESCRIPTION character varying (1024),
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'otto',12,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'otto',12,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'otto',12,3, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'otto',12,4, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'otto',12,5, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'otto',12,6, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:07:00', 'otto',12,7, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:08:00', 'otto',12,8, 'admin', '2018-06-11 14:08:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:09:00', 'otto',12,9, 'admin', '2018-06-11 14:09:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:10:00', 'otto',12,10, 'admin', '2018-06-11 14:10:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:11:00', 'otto',12,11, 'admin', '2018-06-11 14:11:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:55:00', 'admin',13,0, 'admin', '2018-07-01 14:55:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:56:00', 'admin',13,1, 'admin', '2018-07-01 14:56:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:57:00', 'admin',13,3, 'admin', '2018-07-01 14:57:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-07-01 14:57:00', 'admin',13,12, 'admin', '2018-07-01 14:57:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:00:00', 'admin',11,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:01:00', 'admin',11,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:02:00', 'admin',11,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:03:00', 'admin',11,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:04:00', 'admin',11,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:05:00', 'admin',11,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:06:00', 'admin',11,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:07:00', 'admin',11,8, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:08:00', 'admin',11,9, 'admin', '2018-06-11 14:08:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (1, '2018-06-11 14:09:00', 'admin',11,10, 'admin', '2018-06-11 14:09:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',10,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',10,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',10,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',10,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',10,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',10,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'admin',10,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:07:00', 'admin',10,8, 'admin', '2018-06-11 14:07:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:08:00', 'admin',10,9, 'admin', '2018-06-11 14:08:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',9,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',9,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',9,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',9,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',9,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',9,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'admin',9,7, 'admin', '2018-06-11 14:06:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:07:00', 'admin',9,8, 'admin', '2018-06-11 14:07:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',8,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',8,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',8,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',8,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',8,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',8,6, 'admin', '2018-06-11 14:05:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:06:00', 'admin',8,7, 'admin', '2018-06-11 14:06:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',7,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',7,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',7,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',7,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',7,5, 'admin', '2018-06-11 14:04:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:05:00', 'admin',7,6, 'admin', '2018-06-11 14:05:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',6,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',6,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',6,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',6,4, 'admin', '2018-06-11 14:03:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:04:00', 'admin',6,5, 'admin', '2018-06-11 14:04:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',5,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',5,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',5,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',5,4, 'admin', '2018-06-11 14:03:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',4,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',4,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',4,3, 'admin', '2018-06-11 14:02:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',3,0, 'admin', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',3,1, 'admin', '2018-06-11 14:01:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:02:00', 'admin',3,3, 'admin', '2018-06-11 14:02:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:03:00', 'admin',3,2, 'admin', '2018-06-11 14:03:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:00:00', 'admin',2,0, 'jasper', '2018-06-11 14:00:00');
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',2,1, 'jasper', '2018-06-11 14:01:00');
+
+
+INSERT INTO public.htbl_gridmeasure(haction, hdate, huser, id, fk_ref_gm_status, mod_user, mod_date)
+VALUES (2, '2018-06-11 14:01:00', 'admin',1,0, 'otto', '2018-06-11 14:01:00');
+
+
+-- PUBLIC.HTBL_ID_COUNTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_ID_COUNTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_ID_COUNTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_ID_COUNTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_ID_COUNTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_ID_COUNTER
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_ID_COUNTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  COUNTER integer,
+  COUNTER_TYPE character varying (256),
+  INFO character varying (256),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_ID_COUNTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_ID_COUNTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_ID_COUNTER TO PLGM_SERVICE;
+
+
+
+-- PUBLIC.HTBL_SINGLE_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+
+
+CREATE TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_SINGLE_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  TITLE character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  CIM_ID character varying (256),
+  CIM_NAME character varying (256),
+  CIM_DESCRIPTION character varying (1024),
+  PLANNED_STARTTIME_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_SINGLEMEASURE timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  FK_TBL_GRIDMEASURE integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_SINGLE_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_SINGLE_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+
+-- PUBLIC.HTBL_STEPS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_STEPS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_STEPS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_STEPS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_STEPS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_STEPS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_STEPS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  SORTORDER integer,
+  SWITCHING_OBJECT character varying (256),
+  TARGET_STATE character varying (256),
+  FK_TBL_SINGLE_GRIDMEASURE integer,
+  CREATE_USER character varying (100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying (100),
+  MOD_DATE timestamp without time zone,
+
+  CONSTRAINT HTBL_STEPS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_STEPS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_STEPS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  DOCUMENT_NAME character varying (260),
+  DOCUMENT bytea,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_DOCUMENTS TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_MEASURE_DOCUMENTS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_MEASURE_DOCUMENTS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  FK_TBL_MEASURE integer,
+  FK_TBL_DOCUMENTS integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_MEASURE_DOCUMENTS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_MEASURE_DOCUMENTS TO PLGM_SERVICE;
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.TBL_ID_COUNTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_ID_COUNTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_ID_COUNTER (
+						  ID,COUNTER,COUNTER_TYPE,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.COUNTER,NEW.COUNTER_TYPE,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_ID_COUNTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_ID_COUNTER_INSERT_TRG ON PUBLIC.TBL_ID_COUNTER;
+
+CREATE TRIGGER TBL_ID_COUNTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_ID_COUNTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_ID_COUNTER_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_ID_COUNTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_ID_COUNTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_ID_COUNTER (
+						  ID,COUNTER,COUNTER_TYPE,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.COUNTER,NEW.COUNTER_TYPE,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_ID_COUNTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_ID_COUNTER_UPDATE_TRG ON PUBLIC.TBL_ID_COUNTER;
+
+CREATE TRIGGER TBL_ID_COUNTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_ID_COUNTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_ID_COUNTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_ID_COUNTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_ID_COUNTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_ID_COUNTER (
+
+						  ID,COUNTER,COUNTER_TYPE,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.COUNTER,OLD.COUNTER_TYPE,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_ID_COUNTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_ID_COUNTER_DELETE_TRG ON PUBLIC.TBL_ID_COUNTER;
+
+CREATE TRIGGER TBL_ID_COUNTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_ID_COUNTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_ID_COUNTER_DELETE_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.TITLE,NEW.SWITCHING_OBJECT,NEW.CIM_ID,NEW.CIM_NAME,NEW.CIM_DESCRIPTION,NEW.PLANNED_STARTTIME_SINGLEMEASURE,NEW.PLANNED_ENDTIME_SINGLEMEASURE,NEW.DESCRIPTION,NEW.FK_TBL_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_SINGLE_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_SINGLE_GRIDMEASURE (
+
+						  ID,SORTORDER,TITLE,SWITCHING_OBJECT,CIM_ID,CIM_NAME,CIM_DESCRIPTION,PLANNED_STARTTIME_SINGLEMEASURE,PLANNED_ENDTIME_SINGLEMEASURE,DESCRIPTION,FK_TBL_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.TITLE,OLD.SWITCHING_OBJECT,OLD.CIM_ID,OLD.CIM_NAME,OLD.CIM_DESCRIPTION,OLD.PLANNED_STARTTIME_SINGLEMEASURE,OLD.PLANNED_ENDTIME_SINGLEMEASURE,OLD.DESCRIPTION,OLD.FK_TBL_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_SINGLE_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_SINGLE_GRIDMEASURE;
+
+CREATE TRIGGER TBL_SINGLE_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_SINGLE_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_SINGLE_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.TBL_STEPS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_STEPS_INSERT_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_STEPS (
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.SORTORDER,NEW.SWITCHING_OBJECT,NEW.TARGET_STATE,NEW.FK_TBL_SINGLE_GRIDMEASURE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_UPDATE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_STEPS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_STEPS (
+
+						  ID,SORTORDER,SWITCHING_OBJECT,TARGET_STATE,FK_TBL_SINGLE_GRIDMEASURE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.SORTORDER,OLD.SWITCHING_OBJECT,OLD.TARGET_STATE,OLD.FK_TBL_SINGLE_GRIDMEASURE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_STEPS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_STEPS_DELETE_TRG ON PUBLIC.TBL_STEPS;
+
+CREATE TRIGGER TBL_STEPS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_STEPS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_STEPS_DELETE_TRG();
+
+
+-- PUBLIC.TBL_LOCK INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_LOCK_INSERT_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_LOCK (
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.KEY,NEW.USERNAME,NEW.INFO,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_UPDATE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_LOCK DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_LOCK (
+
+						  ID,KEY,USERNAME,INFO,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.KEY,OLD.USERNAME,OLD.INFO,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_LOCK_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_LOCK_DELETE_TRG ON PUBLIC.TBL_LOCK;
+
+CREATE TRIGGER TBL_LOCK_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_LOCK
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_LOCK_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_INSERT_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_USER_SETTINGS (
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.USERNAME,NEW.SETTING_TYPE,NEW.VALUE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_UPDATE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_USER_SETTINGS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_USER_SETTINGS (
+
+						  ID,USERNAME,SETTING_TYPE,VALUE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.USERNAME,OLD.SETTING_TYPE,OLD.VALUE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_USER_SETTINGS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_USER_SETTINGS_DELETE_TRG ON PUBLIC.TBL_USER_SETTINGS;
+
+CREATE TRIGGER TBL_USER_SETTINGS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_USER_SETTINGS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_USER_SETTINGS_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.COLOR_CODE,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,COLOR_CODE,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.COLOR_CODE,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,EMAIL_ADDRESSES,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.EMAIL_ADDRESSES,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,EMAIL_ADDRESSES,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.EMAIL_ADDRESSES,NEW.FK_REF_GM_STATUS,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,EMAIL_ADDRESSES,FK_REF_GM_STATUS,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.EMAIL_ADDRESSES,OLD.FK_REF_GM_STATUS,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+-- PUBLIC.TBL_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_DOCUMENTS (
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.DOCUMENT_NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_DOCUMENTS (
+
+						  ID,DOCUMENT_NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.DOCUMENT_NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_DOCUMENTS;
+
+CREATE TRIGGER TBL_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_DOCUMENTS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_INSERT_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.FK_TBL_MEASURE,NEW.FK_TBL_DOCUMENTS,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_UPDATE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_MEASURE_DOCUMENTS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_MEASURE_DOCUMENTS (
+
+						  ID,FK_TBL_MEASURE,FK_TBL_DOCUMENTS,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.FK_TBL_MEASURE,OLD.FK_TBL_DOCUMENTS,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_MEASURE_DOCUMENTS_DELETE_TRG ON PUBLIC.TBL_MEASURE_DOCUMENTS;
+
+CREATE TRIGGER TBL_MEASURE_DOCUMENTS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_MEASURE_DOCUMENTS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_MEASURE_DOCUMENTS_DELETE_TRG();
diff --git a/db/migrations/V0_3__CREATE_PLGM_DB.sql b/db/migrations/V0_3__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..8c3c5c4
--- /dev/null
+++ b/db/migrations/V0_3__CREATE_PLGM_DB.sql
@@ -0,0 +1,1268 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--CREATE ROLE PLGM_SERVICE LOGIN
+--NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
+--ALTER ROLE PLGM_SERVICE with password 'plgm_service';
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_TITLE;
+DROP SEQUENCE IF EXISTS public.REF_GM_TITLE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_TERRITORY_RESPONSIBILITY;
+DROP SEQUENCE IF EXISTS public.REF_TERR_RESP_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,  
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+  
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,  
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+-- ---------------------------------------------
+-- TABLE REF_GM_TITLE
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_TITLE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+  
+ALTER TABLE public.REF_GM_TITLE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_TITLE
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_TITLE_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,  
+  CONSTRAINT REF_GM_TITLE_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_GM_TITLE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_TITLE TO PLGM_SERVICE;
+
+-- ---------------------------------------------
+-- TABLE REF_TERRITORY_RESPONSIBILITY
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_TERR_RESP_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+  
+ALTER TABLE public.REF_TERR_RESP_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_TERRITORY_RESPONSIBILITY
+(
+  ID integer NOT NULL DEFAULT nextval('REF_TERR_RESP_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,  
+  CONSTRAINT REF_TERR_RESP_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_TERRITORY_RESPONSIBILITY
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_TITLE TO PLGM_SERVICE;
+
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+  
+ALTER TABLE public.REF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+CREATE TABLE public.REF_BRANCH_LEVEL
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,  
+  CONSTRAINT REF_BRANCH_LEVEL_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+-- ---------------------------------------------
+-- TABLE REF_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+  
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.TBL_GRIDMEASURE
+(
+  ID integer NOT NULL DEFAULT nextval('TBL_GRIDMEASURE_ID_SEQ'::regclass),
+  ID_EXT character varying(50) NOT NULL,
+  FK_REF_GM_TITLE integer NOT NULL,
+  FK_REF_GM_STATUS integer NOT NULL,
+  FK_REF_BRANCH integer NOT NULL,
+  FK_REF_BRANCH_LEVEL integer NOT NULL,
+  FK_REF_TERR_RESP integer NOT NULL,
+  COST_CENTRE character varying(50) NULL,
+
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_USER_DEPARTMENT character varying(100) NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100) NULL,
+  MOD_DATE timestamp without time zone,  
+  
+  
+  CONSTRAINT TBL_GRIDMEASURE_PKEY PRIMARY KEY (ID),
+  CONSTRAINT FK_GRIDMEASURE__GM_TITLE FOREIGN KEY (FK_REF_GM_TITLE)
+      REFERENCES public.REF_GM_TITLE (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,  
+  CONSTRAINT FK_GRIDMEASURE__GM_STATUS FOREIGN KEY (FK_REF_GM_STATUS)
+      REFERENCES public.REF_GM_STATUS (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,  
+  CONSTRAINT FK_GRIDMEASURE__BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,  
+  CONSTRAINT FK_GRIDMEASURE__TERR_RESP FOREIGN KEY (FK_REF_TERR_RESP)
+      REFERENCES public.REF_TERRITORY_RESPONSIBILITY (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION 
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.TBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.TBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+  DESCRIPTION character varying(255),
+  
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+  
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_GM_TITLE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_TITLE;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_TITLE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_TITLE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_TITLE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+  
+CREATE TABLE PUBLIC.HREF_GM_TITLE
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_TITLE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_TITLE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_TITLE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_TITLE TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_TERRITORY_RESPONSIBILITY Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_TERRITORY_RESPONSIBILITY;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_TERRITORY_RESPONSIBILITY_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_TERRITORY_RESPONSIBILITY_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+  
+ALTER TABLE PUBLIC.HREF_TERRITORY_RESPONSIBILITY_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_TERRITORY_RESPONSIBILITY
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_TERRITORY_RESPONSIBILITY_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_TERRITORY_RESPONSIBILITY_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_TERRITORY_RESPONSIBILITY
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_TERRITORY_RESPONSIBILITY TO PLGM_SERVICE;
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+  
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_EXT character varying(50),
+  FK_REF_GM_TITLE integer,
+  FK_REF_GM_STATUS integer,
+  FK_REF_BRANCH integer,
+  FK_REF_BRANCH_LEVEL integer,
+  FK_REF_TERR_RESP integer,
+  COST_CENTRE character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_USER_DEPARTMENT character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100),
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.REF_GM_TITLE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_TITLE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_TITLE (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_TITLE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_TITLE_INSERT_TRG ON PUBLIC.REF_GM_TITLE;
+
+CREATE TRIGGER REF_GM_TITLE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_TITLE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_TITLE_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_TITLE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_TITLE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_TITLE (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_TITLE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_TITLE_UPDATE_TRG ON PUBLIC.REF_GM_TITLE;
+
+CREATE TRIGGER REF_GM_TITLE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_TITLE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_TITLE_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_TITLE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_TITLE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_TITLE (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_TITLE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_TITLE_DELETE_TRG ON PUBLIC.REF_GM_TITLE;
+
+CREATE TRIGGER REF_GM_TITLE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_TITLE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_TITLE_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.REF_TERRITORY_RESPONSIBILITY INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_TERRITORY_RESPONSIBILITY_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_TERRITORY_RESPONSIBILITY (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_TERRITORY_RESPONSIBILITY_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_TERRITORY_RESPONSIBILITY_INSERT_TRG ON PUBLIC.REF_TERRITORY_RESPONSIBILITY;
+
+CREATE TRIGGER REF_TERRITORY_RESPONSIBILITY_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_TERRITORY_RESPONSIBILITY
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_TERRITORY_RESPONSIBILITY_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_TERRITORY_RESPONSIBILITY UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_TERRITORY_RESPONSIBILITY_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_TERRITORY_RESPONSIBILITY (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_TERRITORY_RESPONSIBILITY_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_TERRITORY_RESPONSIBILITY_UPDATE_TRG ON PUBLIC.REF_TERRITORY_RESPONSIBILITY;
+
+CREATE TRIGGER REF_TERRITORY_RESPONSIBILITY_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_TERRITORY_RESPONSIBILITY
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_TERRITORY_RESPONSIBILITY_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_TERRITORY_RESPONSIBILITY DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_TERRITORY_RESPONSIBILITY_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_TERRITORY_RESPONSIBILITY (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_TERRITORY_RESPONSIBILITY_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_TERRITORY_RESPONSIBILITY_DELETE_TRG ON PUBLIC.REF_TERRITORY_RESPONSIBILITY;
+
+CREATE TRIGGER REF_TERRITORY_RESPONSIBILITY_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_TERRITORY_RESPONSIBILITY
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_TERRITORY_RESPONSIBILITY_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_EXT,FK_REF_GM_TITLE,FK_REF_GM_STATUS,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,FK_REF_TERR_RESP,COST_CENTRE,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_EXT,NEW.FK_REF_GM_TITLE,NEW.FK_REF_GM_STATUS,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.FK_REF_TERR_RESP,NEW.COST_CENTRE,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_EXT,FK_REF_GM_TITLE,FK_REF_GM_STATUS,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,FK_REF_TERR_RESP,COST_CENTRE,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_EXT,NEW.FK_REF_GM_TITLE,NEW.FK_REF_GM_STATUS,NEW.FK_REF_BRANCH,NEW.FK_REF_BRANCH_LEVEL,NEW.FK_REF_TERR_RESP,NEW.COST_CENTRE,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_EXT,FK_REF_GM_TITLE,FK_REF_GM_STATUS,FK_REF_BRANCH,FK_REF_BRANCH_LEVEL,FK_REF_TERR_RESP,COST_CENTRE,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_EXT,OLD.FK_REF_GM_TITLE,OLD.FK_REF_GM_STATUS,OLD.FK_REF_BRANCH,OLD.FK_REF_BRANCH_LEVEL,OLD.FK_REF_TERR_RESP,OLD.COST_CENTRE,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+  
+
diff --git a/db/migrations/V0_4__CREATE_PLGM_DB.sql b/db/migrations/V0_4__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..9e0e6ce
--- /dev/null
+++ b/db/migrations/V0_4__CREATE_PLGM_DB.sql
@@ -0,0 +1,668 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--CREATE ROLE PLGM_SERVICE LOGIN
+--NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
+--ALTER ROLE PLGM_SERVICE with password 'plgm_service';
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,  
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+  
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,  
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+  
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.TBL_GRIDMEASURE
+(
+  ID integer NOT NULL DEFAULT nextval('TBL_GRIDMEASURE_ID_SEQ'::regclass),
+  ID_EXT character varying(50) NULL,
+  TITLE character varying(256) NULL,
+  AFFECTED_RESOURCE character varying(256) NULL,
+  REMARK character varying(1024) NULL,
+  FK_REF_GM_STATUS integer NULL,
+
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_USER_DEPARTMENT character varying(100) NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100) NULL,
+  MOD_DATE timestamp without time zone,  
+  
+  
+  CONSTRAINT TBL_GRIDMEASURE_PKEY PRIMARY KEY (ID),
+  CONSTRAINT FK_GRIDMEASURE__GM_STATUS FOREIGN KEY (FK_REF_GM_STATUS)
+      REFERENCES public.REF_GM_STATUS (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.TBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.TBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+  DESCRIPTION character varying(255),
+  
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_EXT character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_EXT,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_EXT,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_EXT,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_EXT,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_EXT,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_EXT,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+  
+
diff --git a/db/migrations/V0_5__CREATE_PLGM_DB.sql b/db/migrations/V0_5__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..3a828f7
--- /dev/null
+++ b/db/migrations/V0_5__CREATE_PLGM_DB.sql
@@ -0,0 +1,729 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--ADD DATA TO TABLE TBL_GRIDMEASURE;
+--ADD DATA TO TABLE REF_GM_STATUS;
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'angelegt','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'beantragt','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'zurückgewiesen','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'zur Genehmigung','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'storniert','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'genehmigt','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'storniert','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'freigegeben','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Schalten aktiv','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'in Arbeit','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Arbeit beendet','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'beendet','Suse Sommerwind','20.03.2018',NULL,'20.03.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.TBL_GRIDMEASURE
+(
+  ID integer NOT NULL DEFAULT nextval('TBL_GRIDMEASURE_ID_SEQ'::regclass),
+  ID_EXT character varying(50) NULL,
+  TITLE character varying(256) NULL,
+  AFFECTED_RESOURCE character varying(256) NULL,
+  REMARK character varying(1024) NULL,
+  FK_REF_GM_STATUS integer NULL,
+
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_USER_DEPARTMENT character varying(100) NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100) NULL,
+  MOD_DATE timestamp without time zone,
+
+
+  CONSTRAINT TBL_GRIDMEASURE_PKEY PRIMARY KEY (ID),
+  CONSTRAINT FK_GRIDMEASURE__GM_STATUS FOREIGN KEY (FK_REF_GM_STATUS)
+      REFERENCES public.REF_GM_STATUS (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.TBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.TBL_GRIDMEASURE TO PLGM_SERVICE;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_ext, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden',1,'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_ext, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern',4,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_ext, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',8,'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018');
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+  DESCRIPTION character varying(255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_EXT character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_EXT,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_EXT,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_EXT,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_EXT,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_EXT,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_EXT,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+
+
diff --git a/db/migrations/V0_6__CREATE_PLGM_DB.sql b/db/migrations/V0_6__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..96bb8c0
--- /dev/null
+++ b/db/migrations/V0_6__CREATE_PLGM_DB.sql
@@ -0,0 +1,733 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--ADD DATA TO TABLE TBL_GRIDMEASURE;
+--ADD DATA TO TABLE REF_GM_STATUS;
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'neu','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'angelegt','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'beantragt','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'zurückgewiesen','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'zur Genehmigung','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'storniert','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'genehmigt','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'storniert','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'freigegeben','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Schalten aktiv','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'in Arbeit','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Arbeit beendet','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'beendet','system','20.03.2018','system','20.03.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.TBL_GRIDMEASURE
+(
+  ID integer NOT NULL DEFAULT nextval('TBL_GRIDMEASURE_ID_SEQ'::regclass),
+  ID_EXT character varying(50) NULL,
+  TITLE character varying(256) NULL,
+  AFFECTED_RESOURCE character varying(256) NULL,
+  REMARK character varying(1024) NULL,
+  FK_REF_GM_STATUS integer NULL,
+
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_USER_DEPARTMENT character varying(100) NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100) NULL,
+  MOD_DATE timestamp without time zone,
+
+
+  CONSTRAINT TBL_GRIDMEASURE_PKEY PRIMARY KEY (ID),
+  CONSTRAINT FK_GRIDMEASURE__GM_STATUS FOREIGN KEY (FK_REF_GM_STATUS)
+      REFERENCES public.REF_GM_STATUS (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.TBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.TBL_GRIDMEASURE TO PLGM_SERVICE;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_ext, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden',1,'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_ext, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern',4,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_ext, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',8,'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018');
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+  DESCRIPTION character varying(255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_EXT character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_EXT,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_EXT,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_EXT,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_EXT,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_EXT,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_EXT,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
+
+
+
+
diff --git a/db/migrations/V0_7__CREATE_PLGM_DB.sql b/db/migrations/V0_7__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..f30d01a
--- /dev/null
+++ b/db/migrations/V0_7__CREATE_PLGM_DB.sql
@@ -0,0 +1,777 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--ADD DATA TO TABLE TBL_GRIDMEASURE;
+--ADD DATA TO TABLE REF_GM_STATUS;
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'neu','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'angelegt','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'beantragt','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'zurückgewiesen','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'zur Genehmigung','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'storniert','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'genehmigt','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'storniert','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'freigegeben','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'Schalten aktiv','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'in Arbeit','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (11,'Arbeit beendet','system','20.03.2018','system','20.03.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (12,'beendet','system','20.03.2018','system','20.03.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.TBL_GRIDMEASURE
+(
+  ID integer NOT NULL DEFAULT nextval('TBL_GRIDMEASURE_ID_SEQ'::regclass),
+  ID_DESCRIPTIVE character varying(50) NULL,
+  TITLE character varying(256) NULL,
+  AFFECTED_RESOURCE character varying(256) NULL,
+  REMARK character varying(1024) NULL,
+  FK_REF_GM_STATUS integer NULL,
+  REQUESTER_NAME character varying(256) NULL,
+  SWITCHING_OBJECT character varying(256) NULL,
+  COST_CENTER character varying(256) NULL,
+  RESPONSIBLE_ONSITE_NAME character varying(256) NULL,
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying(256) NULL,
+  APPROVAL_BY character varying(256) NULL,
+  AREA_OF_SWITCHING character varying(256) NULL,
+  APPOINTMENT_REPETITION character varying(100) NULL,
+  APPOINTMENT_STARTDATE timestamp without time zone NULL,
+  APPOINTMENT_NUMBEROF integer NULL,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  TIME_OF_REALLOCATION timestamp without time zone NULL,
+  DESCRIPTION character varying(1024) NULL,
+  BRANCH character varying(50) NULL,
+  LEVEL character varying(50) NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_USER_DEPARTMENT character varying(100) NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100) NULL,
+  MOD_DATE timestamp without time zone,
+
+
+  CONSTRAINT TBL_GRIDMEASURE_PKEY PRIMARY KEY (ID),
+  CONSTRAINT FK_GRIDMEASURE__GM_STATUS FOREIGN KEY (FK_REF_GM_STATUS)
+      REFERENCES public.REF_GM_STATUS (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.TBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.TBL_GRIDMEASURE TO PLGM_SERVICE;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden',1,'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern',4,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',8,'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018');
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+  DESCRIPTION character varying(255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  REQUESTER_NAME character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (256),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  BRANCH character varying (50),
+  LEVEL character varying (50),
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.REQUESTER_NAME,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.BRANCH,OLD.LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
diff --git a/db/migrations/V0_8__CREATE_PLGM_DB.sql b/db/migrations/V0_8__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..db4dd0a
--- /dev/null
+++ b/db/migrations/V0_8__CREATE_PLGM_DB.sql
@@ -0,0 +1,768 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Update Data Inserts into Table REF_GM_STATUS;
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'NEW','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'APPLIED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'CANCELED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'FOR_APPROVAL','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'APPROVED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'REQUESTED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'RELEASED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'ACTIVE','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'IN_WORK','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'FINISHED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'CLOSED','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.TBL_GRIDMEASURE
+(
+  ID integer NOT NULL DEFAULT nextval('TBL_GRIDMEASURE_ID_SEQ'::regclass),
+  ID_DESCRIPTIVE character varying(50) NULL,
+  TITLE character varying(256) NULL,
+  AFFECTED_RESOURCE character varying(256) NULL,
+  REMARK character varying(1024) NULL,
+  FK_REF_GM_STATUS integer NULL,
+  REQUESTER_NAME character varying(256) NULL,
+  SWITCHING_OBJECT character varying(256) NULL,
+  COST_CENTER character varying(256) NULL,
+  RESPONSIBLE_ONSITE_NAME character varying(256) NULL,
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying(256) NULL,
+  APPROVAL_BY character varying(256) NULL,
+  AREA_OF_SWITCHING character varying(256) NULL,
+  APPOINTMENT_REPETITION character varying(100) NULL,
+  APPOINTMENT_STARTDATE timestamp without time zone NULL,
+  APPOINTMENT_NUMBEROF integer NULL,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  TIME_OF_REALLOCATION timestamp without time zone NULL,
+  DESCRIPTION character varying(1024) NULL,
+  BRANCH character varying(50) NULL,
+  LEVEL character varying(50) NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_USER_DEPARTMENT character varying(100) NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100) NULL,
+  MOD_DATE timestamp without time zone,
+
+
+  CONSTRAINT TBL_GRIDMEASURE_PKEY PRIMARY KEY (ID),
+  CONSTRAINT FK_GRIDMEASURE__GM_STATUS FOREIGN KEY (FK_REF_GM_STATUS)
+      REFERENCES public.REF_GM_STATUS (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.TBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.TBL_GRIDMEASURE TO PLGM_SERVICE;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden',1,'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern',4,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',8,'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018');
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+  DESCRIPTION character varying(255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  REQUESTER_NAME character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (256),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  BRANCH character varying (50),
+  LEVEL character varying (50),
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.REQUESTER_NAME,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.BRANCH,OLD.LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
diff --git a/db/migrations/V0_9__CREATE_PLGM_DB.sql b/db/migrations/V0_9__CREATE_PLGM_DB.sql
new file mode 100644
index 0000000..b9da2c1
--- /dev/null
+++ b/db/migrations/V0_9__CREATE_PLGM_DB.sql
@@ -0,0 +1,1406 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+--Add Table REF_BRANCH_LEVEL with UPDATE- INSERT- and DELETE-Triggers and INSERT Values;
+--Add Table HREF_BRANCH_LEVEL;
+--INSERT Values for Table REF_BRANCH
+--Add Table REF_COST_CENTER with UPDATE- INSERT- and DELETE-Triggers and INSERT Values
+--Add Table HREF_COST_CENTER
+--Add Table REF_USER_DEPARTMENT with UPDATE- INSERT- and DELETE-Triggers and INSERT Values
+--Add Table HREF_USER_DEPARTMENT
+
+--Set DROP TABLE...CASCADE for all Tables
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.REF_USER_DEPARTMENT CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_USER_DEPARTMENT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COST_CENTER CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COST_CENTER_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_GRIDMEASURE CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_GRIDMEASURE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_BRANCH_LEVEL CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_BRANCH_LEVEL_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_GM_STATUS CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_GM_STATUS_ID_SEQ;
+
+
+-- ---------------------------------------------
+-- TABLE REF_USER_DEPARTMENT
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 3
+  CACHE 1;
+ALTER TABLE public.REF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_USER_DEPARTMENT
+(
+  id integer NOT NULL DEFAULT nextval('REF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  name character varying(50) NOT NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT ref_user_department_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_USER_DEPARTMENT
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_USER_DEPARTMENT TO plgm_service;
+
+
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Schnelle Truppe', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Aufsicht', 'testuser', '12.04.2018','testuser', '12.04.2018');
+INSERT INTO public.ref_user_department(
+            name, create_user, create_date, mod_user, mod_date)
+    VALUES ('Abt. Wartung', 'testuser', '12.04.2018','testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_COST_CENTER
+-- ---------------------------------------------
+
+CREATE SEQUENCE public.REF_COST_CENTER_ID_SEQ
+   INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.REF_COST_CENTER_ID_SEQ
+  OWNER TO plgm_service;
+
+
+CREATE TABLE public.REF_COST_CENTER
+(
+  id integer NOT NULL DEFAULT nextval('REF_COST_CENTER_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone NOT NULL,
+  CONSTRAINT REF_COST_CENTER_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_COST_CENTER
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.REF_COST_CENTER TO plgm_service;
+
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-155', 'Kostenstelle der Abteilung abc', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-004', 'Kostenstelle der Abteilung xyz', 'testuser','12.04.2018','testuser','12.04.2018');
+INSERT INTO public.ref_cost_center(
+            name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('K-222', 'Kostenstelle der Abteilung hij', 'testuser','12.04.2018','testuser','12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_BRANCH
+(
+  ID integer NOT NULL DEFAULT nextval('REF_BRANCH_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  DESCRIPTION character varying(255),
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone  NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone NOT NULL,
+  CONSTRAINT REF_BRANCH_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_BRANCH TO PLGM_SERVICE;
+
+INSERT INTO public.ref_branch(name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('Hochspannung', 'eine Beschreibung', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('Mittelspannung', 'eine Beschreibung', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.ref_branch(name, description, create_user, create_date, mod_user, mod_date)
+    VALUES ('Niederspannung', 'eine Beschreibung', 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_BRANCH_LEVEL
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_branch_level_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_branch_level_id_seq
+  OWNER TO plgm_service;
+
+CREATE TABLE public.ref_branch_level
+(
+  id integer NOT NULL DEFAULT nextval('ref_branch_level_id_seq'::regclass),
+  name character varying(50) NOT NULL,
+  description character varying(255),
+  fk_ref_branch integer NULL,
+  create_user character varying(100) NOT NULL,
+  create_date timestamp without time zone NOT NULL,
+  mod_user character varying(100),
+  mod_date timestamp without time zone,
+  CONSTRAINT ref_branch_level_pkey PRIMARY KEY (id),
+  CONSTRAINT FK_REF_BRANCH_LEVEL__REF_BRANCH FOREIGN KEY (FK_REF_BRANCH)
+      REFERENCES public.REF_BRANCH (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.ref_branch_level
+  OWNER TO plgm_service;
+GRANT ALL ON TABLE public.ref_branch_level TO plgm_service;
+
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level1', 'eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level2', 'noch eine Beschreibung', 2, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+INSERT INTO public.REF_BRANCH_LEVEL(
+            name, description, fk_ref_branch, create_user, create_date, mod_user, mod_date)
+    VALUES ('Level3', 'und noch eine Beschreibung', 3, 'testuser', '12.04.2018', 'testuser', '12.04.2018');
+
+-- ---------------------------------------------
+-- TABLE REF_GM_STATUS
+-- ---------------------------------------------
+CREATE SEQUENCE public.REF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.REF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.REF_GM_STATUS
+(
+  ID integer NOT NULL DEFAULT nextval('REF_GM_STATUS_ID_SEQ'::regclass),
+  NAME character varying(50) NOT NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT REF_GM_STATUS_PKEY PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE public.REF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_GM_STATUS TO PLGM_SERVICE;
+
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (0,'NEW','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (1,'APPLIED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (2,'CANCELED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (3,'FOR_APPROVAL','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (4,'APPROVED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (5,'REQUESTED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (6,'RELEASED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (7,'ACTIVE','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (8,'IN_WORK','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (9,'FINISHED','system','09.04.2018','system','09.04.2018');
+INSERT INTO
+  public.REF_GM_STATUS(id, name, create_user, create_date, mod_user, mod_date)
+VALUES
+  (10,'CLOSED','system','09.04.2018','system','09.04.2018');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_GRIDMEASURE
+-- ---------------------------------------------
+CREATE SEQUENCE public.TBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE public.TBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE public.TBL_GRIDMEASURE
+(
+  ID integer NOT NULL DEFAULT nextval('TBL_GRIDMEASURE_ID_SEQ'::regclass),
+  ID_DESCRIPTIVE character varying(50) NULL,
+  TITLE character varying(256) NULL,
+  AFFECTED_RESOURCE character varying(256) NULL,
+  REMARK character varying(1024) NULL,
+  FK_REF_GM_STATUS integer NULL,
+  REQUESTER_NAME character varying(256) NULL,
+  SWITCHING_OBJECT character varying(256) NULL,
+  COST_CENTER character varying(256) NULL,
+  RESPONSIBLE_ONSITE_NAME character varying(256) NULL,
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying(256) NULL,
+  APPROVAL_BY character varying(256) NULL,
+  AREA_OF_SWITCHING character varying(256) NULL,
+  APPOINTMENT_REPETITION character varying(100) NULL,
+  APPOINTMENT_STARTDATE timestamp without time zone NULL,
+  APPOINTMENT_NUMBEROF integer NULL,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone NULL,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone NULL,
+  ENDTIME_GRIDMEASURE timestamp without time zone NULL,
+  TIME_OF_REALLOCATION timestamp without time zone NULL,
+  DESCRIPTION character varying(1024) NULL,
+  BRANCH character varying(50) NULL,
+  LEVEL character varying(50) NULL,
+  CREATE_USER character varying(100) NOT NULL,
+  CREATE_USER_DEPARTMENT character varying(100) NULL,
+  CREATE_DATE timestamp without time zone NOT NULL,
+  MOD_USER character varying(100),
+  MOD_USER_DEPARTMENT character varying(100) NULL,
+  MOD_DATE timestamp without time zone,
+
+
+  CONSTRAINT TBL_GRIDMEASURE_PKEY PRIMARY KEY (ID),
+  CONSTRAINT FK_GRIDMEASURE__GM_STATUS FOREIGN KEY (FK_REF_GM_STATUS)
+      REFERENCES public.REF_GM_STATUS (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.TBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.TBL_GRIDMEASURE TO PLGM_SERVICE;
+
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('20','Kabel erneuern','Leitung xyz','Kabel wurde vom Bagger überfahren und muss auf 150 cm erneuert werden',1,'Marko Maienschein','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('21','Kabel abdichten','Kabel zzz','Isolierung erneuern',4,'Tom Tulipan','Akute Einsatztruppe','19.03.2018',NULL,NULL,'19.03.2018');
+INSERT INTO
+  public.TBL_GRIDMEASURE(id_descriptive, title, affected_resource, remark, fk_ref_gm_status, create_user, create_user_department, create_date, mod_user, mod_user_department, mod_date)
+VALUES
+  ('22','Stromkasten reparieren','Kasten srt','Kasten wurde gerammt Frontdeckel muß ausgetauscht werden',8,'Wendy Wüstenwind','Akute Einsatztruppe','17.03.2018',NULL,NULL,'17.03.2018');
+
+
+DROP TABLE IF EXISTS public.REF_VERSION;
+
+CREATE TABLE public.REF_VERSION
+(
+  id integer NOT NULL,
+  version character varying(100) NOT NULL,
+  CONSTRAINT ref_version_pkey PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.REF_VERSION
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE public.REF_VERSION TO PLGM_SERVICE;
+
+INSERT INTO REF_VERSION VALUES (1, '0.0.1_PG');
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- HISTORY-TABLES
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- PUBLIC.HREF_USER_DEPARTMENT Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_USER_DEPARTMENT
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_USER_DEPARTMENT_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_USER_DEPARTMENT_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_USER_DEPARTMENT
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_USER_DEPARTMENT TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_COST_CENTER Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_COST_CENTER;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_COST_CENTER_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_COST_CENTER
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_COST_CENTER_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_COST_CENTER_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_COST_CENTER
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_COST_CENTER TO PLGM_SERVICE;
+
+-- PUBLIC.HREF_BRANCH Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+  DESCRIPTION character varying(255),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_BRANCH_LEVEL Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_BRANCH_LEVEL
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_BRANCH_LEVEL_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying (50),
+  DESCRIPTION character varying (255),
+  FK_REF_BRANCH integer,
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_BRANCH_LEVEL_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_BRANCH_LEVEL
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_BRANCH_LEVEL TO PLGM_SERVICE;
+
+
+-- PUBLIC.HREF_GM_STATUS Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HREF_GM_STATUS;
+DROP SEQUENCE IF EXISTS PUBLIC.HREF_GM_STATUS_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HREF_GM_STATUS
+(
+  HID integer NOT NULL DEFAULT nextval('HREF_GM_STATUS_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  NAME character varying(50),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HREF_GM_STATUS_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HREF_GM_STATUS
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HREF_GM_STATUS TO PLGM_SERVICE;
+
+
+-- PUBLIC.HTBL_GRIDMEASURE Automatic generanted History Table DDL --
+-- <GENERATED CODE!>
+
+DROP TABLE IF EXISTS PUBLIC.HTBL_GRIDMEASURE;
+DROP SEQUENCE IF EXISTS PUBLIC.HTBL_GRIDMEASURE_ID_SEQ;
+
+CREATE SEQUENCE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE_ID_SEQ
+  OWNER TO PLGM_SERVICE;
+
+CREATE TABLE PUBLIC.HTBL_GRIDMEASURE
+(
+  HID integer NOT NULL DEFAULT nextval('HTBL_GRIDMEASURE_ID_SEQ'::regclass),
+  HACTION integer NOT NULL,
+  HDATE timestamp without time zone NOT NULL,
+  HUSER character varying(100),
+
+  ID integer,
+  ID_DESCRIPTIVE character varying (50),
+  TITLE character varying (256),
+  AFFECTED_RESOURCE character varying (256),
+  REMARK character varying (1024),
+  FK_REF_GM_STATUS integer,
+  REQUESTER_NAME character varying (256),
+  SWITCHING_OBJECT character varying (256),
+  COST_CENTER character varying (256),
+  RESPONSIBLE_ONSITE_NAME character varying (256),
+  RESPONSIBLE_ONSITE_DEPARTMENT character varying (256),
+  APPROVAL_BY character varying (256),
+  AREA_OF_SWITCHING character varying (256),
+  APPOINTMENT_REPETITION character varying (100),
+  APPOINTMENT_STARTDATE timestamp without time zone,
+  APPOINTMENT_NUMBEROF integer,
+  PLANNED_STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  PLANNED_STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  PLANNED_ENDTIME_GRIDMEASURE timestamp without time zone,
+  STARTTIME_FIRST_SEQUENCE timestamp without time zone,
+  STARTTIME_FIRST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_LAST_SINGLEMEASURE timestamp without time zone,
+  ENDTIME_GRIDMEASURE timestamp without time zone,
+  TIME_OF_REALLOCATION timestamp without time zone,
+  DESCRIPTION character varying (1024),
+  BRANCH character varying (50),
+  LEVEL character varying (50),
+  CREATE_USER_DEPARTMENT character varying (100),
+  MOD_USER_DEPARTMENT character varying (100),
+
+  CREATE_USER character varying(100),
+  CREATE_DATE timestamp without time zone,
+  MOD_USER character varying(100),
+  MOD_DATE timestamp without time zone,
+  CONSTRAINT HTBL_GRIDMEASURE_PKEY PRIMARY KEY (HID)
+)
+WITH (
+  OIDS=FALSE
+);
+
+ALTER TABLE PUBLIC.HTBL_GRIDMEASURE
+  OWNER TO PLGM_SERVICE;
+GRANT ALL ON TABLE PUBLIC.HTBL_GRIDMEASURE TO PLGM_SERVICE;
+
+
+
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- TRIGGER
+-- ----------------------------------------------------------------------------
+-- ----------------------------------------------------------------------------
+-- PUBLIC.REF_USER_DEPARTMENT INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_INSERT_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_USER_DEPARTMENT (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_UPDATE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_USER_DEPARTMENT DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_USER_DEPARTMENT (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_USER_DEPARTMENT_DELETE_TRG ON PUBLIC.REF_USER_DEPARTMENT;
+
+CREATE TRIGGER REF_USER_DEPARTMENT_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_USER_DEPARTMENT
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_USER_DEPARTMENT_DELETE_TRG();
+
+
+-- PUBLIC.HREF_COST_CENTER INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_INSERT_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_INSERT_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HHREF_COST_CENTER (
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.HID,NEW.HACTION,NEW.HDATE,NEW.HUSER,NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_UPDATE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_UPDATE_TRG();
+
+
+
+-- PUBLIC.HREF_COST_CENTER DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HHREF_COST_CENTER (
+
+						  HID,HACTION,HDATE,HUSER,ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.HID,OLD.HACTION,OLD.HDATE,OLD.HUSER,OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.HREF_COST_CENTER_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS HREF_COST_CENTER_DELETE_TRG ON PUBLIC.HREF_COST_CENTER;
+
+CREATE TRIGGER HREF_COST_CENTER_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.HREF_COST_CENTER
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.HREF_COST_CENTER_DELETE_TRG();
+
+
+
+
+
+
+
+-- PUBLIC.REF_BRANCH INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_INSERT_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH (
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_UPDATE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH (
+
+						  ID,NAME,DESCRIPTION,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_DELETE_TRG ON PUBLIC.REF_BRANCH;
+
+CREATE TRIGGER REF_BRANCH_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_DELETE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_INSERT_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_BRANCH_LEVEL (
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.DESCRIPTION,NEW.FK_REF_BRANCH,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_UPDATE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_BRANCH_LEVEL DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_BRANCH_LEVEL (
+
+						  ID,NAME,DESCRIPTION,FK_REF_BRANCH,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.DESCRIPTION,OLD.FK_REF_BRANCH,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_BRANCH_LEVEL_DELETE_TRG ON PUBLIC.REF_BRANCH_LEVEL;
+
+CREATE TRIGGER REF_BRANCH_LEVEL_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_BRANCH_LEVEL
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_BRANCH_LEVEL_DELETE_TRG();
+
+
+
+
+
+-- PUBLIC.REF_GM_STATUS INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_INSERT_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_INSERT_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HREF_GM_STATUS (
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.NAME,NEW.CREATE_USER,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_UPDATE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_UPDATE_TRG();
+
+
+
+-- PUBLIC.REF_GM_STATUS DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HREF_GM_STATUS (
+
+						  ID,NAME,CREATE_USER,CREATE_DATE,MOD_USER,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.NAME,OLD.CREATE_USER,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.REF_GM_STATUS_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS REF_GM_STATUS_DELETE_TRG ON PUBLIC.REF_GM_STATUS;
+
+CREATE TRIGGER REF_GM_STATUS_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.REF_GM_STATUS
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.REF_GM_STATUS_DELETE_TRG();
+
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE INSERT TRIGGER --
+-- <GENERATED CODE!>
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				 (
+
+						  NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+
+                          1,
+						  current_timestamp,
+					      NEW.CREATE_USER );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_INSERT_TRG()
+  OWNER TO PLGM_SERVICE;
+
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_INSERT_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_INSERT_TRG
+  BEFORE INSERT
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_INSERT_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE UPDATE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+	INSERT INTO HTBL_GRIDMEASURE (
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 			    (
+	                      NEW.ID,NEW.ID_DESCRIPTIVE,NEW.TITLE,NEW.AFFECTED_RESOURCE,NEW.REMARK,NEW.FK_REF_GM_STATUS,NEW.REQUESTER_NAME,NEW.SWITCHING_OBJECT,NEW.COST_CENTER,NEW.RESPONSIBLE_ONSITE_NAME,NEW.RESPONSIBLE_ONSITE_DEPARTMENT,NEW.APPROVAL_BY,NEW.AREA_OF_SWITCHING,NEW.APPOINTMENT_REPETITION,NEW.APPOINTMENT_STARTDATE,NEW.APPOINTMENT_NUMBEROF,NEW.PLANNED_STARTTIME_FIRST_SEQUENCE,NEW.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_LAST_SINGLEMEASURE,NEW.PLANNED_ENDTIME_GRIDMEASURE,NEW.STARTTIME_FIRST_SEQUENCE,NEW.STARTTIME_FIRST_SINGLEMEASURE,NEW.ENDTIME_LAST_SINGLEMEASURE,NEW.ENDTIME_GRIDMEASURE,NEW.TIME_OF_REALLOCATION,NEW.DESCRIPTION,NEW.BRANCH,NEW.LEVEL,NEW.CREATE_USER,NEW.CREATE_USER_DEPARTMENT,NEW.CREATE_DATE,NEW.MOD_USER,NEW.MOD_USER_DEPARTMENT,NEW.MOD_DATE,
+                          2,
+						  current_timestamp,
+					      NEW.MOD_USER
+					    );
+
+        RETURN NEW;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_UPDATE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_UPDATE_TRG
+  BEFORE UPDATE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_UPDATE_TRG();
+
+
+
+-- PUBLIC.TBL_GRIDMEASURE DELETE TRIGGER --
+-- <GENERATED CODE!>
+
+CREATE OR REPLACE FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  RETURNS trigger AS
+$BODY$
+    BEGIN
+    IF TG_OP = 'DELETE' THEN
+	INSERT INTO HTBL_GRIDMEASURE (
+
+						  ID,ID_DESCRIPTIVE,TITLE,AFFECTED_RESOURCE,REMARK,FK_REF_GM_STATUS,REQUESTER_NAME,SWITCHING_OBJECT,COST_CENTER,RESPONSIBLE_ONSITE_NAME,RESPONSIBLE_ONSITE_DEPARTMENT,APPROVAL_BY,AREA_OF_SWITCHING,APPOINTMENT_REPETITION,APPOINTMENT_STARTDATE,APPOINTMENT_NUMBEROF,PLANNED_STARTTIME_FIRST_SEQUENCE,PLANNED_STARTTIME_FIRST_SINGLEMEASURE,PLANNED_ENDTIME_LAST_SINGLEMEASURE,PLANNED_ENDTIME_GRIDMEASURE,STARTTIME_FIRST_SEQUENCE,STARTTIME_FIRST_SINGLEMEASURE,ENDTIME_LAST_SINGLEMEASURE,ENDTIME_GRIDMEASURE,TIME_OF_REALLOCATION,DESCRIPTION,BRANCH,LEVEL,CREATE_USER,CREATE_USER_DEPARTMENT,CREATE_DATE,MOD_USER,MOD_USER_DEPARTMENT,MOD_DATE,
+
+						  HACTION,
+						  HDATE,
+						  HUSER
+						 )
+	VALUES 				(
+						  OLD.ID,OLD.ID_DESCRIPTIVE,OLD.TITLE,OLD.AFFECTED_RESOURCE,OLD.REMARK,OLD.FK_REF_GM_STATUS,OLD.REQUESTER_NAME,OLD.SWITCHING_OBJECT,OLD.COST_CENTER,OLD.RESPONSIBLE_ONSITE_NAME,OLD.RESPONSIBLE_ONSITE_DEPARTMENT,OLD.APPROVAL_BY,OLD.AREA_OF_SWITCHING,OLD.APPOINTMENT_REPETITION,OLD.APPOINTMENT_STARTDATE,OLD.APPOINTMENT_NUMBEROF,OLD.PLANNED_STARTTIME_FIRST_SEQUENCE,OLD.PLANNED_STARTTIME_FIRST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_LAST_SINGLEMEASURE,OLD.PLANNED_ENDTIME_GRIDMEASURE,OLD.STARTTIME_FIRST_SEQUENCE,OLD.STARTTIME_FIRST_SINGLEMEASURE,OLD.ENDTIME_LAST_SINGLEMEASURE,OLD.ENDTIME_GRIDMEASURE,OLD.TIME_OF_REALLOCATION,OLD.DESCRIPTION,OLD.BRANCH,OLD.LEVEL,OLD.CREATE_USER,OLD.CREATE_USER_DEPARTMENT,OLD.CREATE_DATE,OLD.MOD_USER,OLD.MOD_USER_DEPARTMENT,OLD.MOD_DATE,
+
+                          3,
+						  current_timestamp,
+					      OLD.MOD_USER );
+	END IF;
+
+        RETURN OLD;
+    END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION PUBLIC.TBL_GRIDMEASURE_DELETE_TRG()
+  OWNER TO PLGM_SERVICE;
+
+DROP TRIGGER IF EXISTS TBL_GRIDMEASURE_DELETE_TRG ON PUBLIC.TBL_GRIDMEASURE;
+
+CREATE TRIGGER TBL_GRIDMEASURE_DELETE_TRG
+  BEFORE DELETE
+  ON PUBLIC.TBL_GRIDMEASURE
+  FOR EACH ROW
+  EXECUTE PROCEDURE PUBLIC.TBL_GRIDMEASURE_DELETE_TRG();
+
+
+
diff --git a/deploy/conf/context.xml b/deploy/conf/context.xml
new file mode 100644
index 0000000..26d8e55
--- /dev/null
+++ b/deploy/conf/context.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ ******************************************************************************
+  ~ * Copyright © 2018 PTA GmbH.
+  ~ * All rights reserved. This program and the accompanying materials
+  ~ * are made available under the terms of the Eclipse Public License v1.0
+  ~ * which accompanies this distribution, and is available at
+  ~ *
+  ~ *     http://www.eclipse.org/legal/epl-v10.html
+  ~ *
+  ~ ******************************************************************************
+  -->
+<!-- The contents of this file will be loaded for each web application -->
+<Context>
+
+    <!-- Default set of monitored resources. If one of these changes, the    -->
+    <!-- web application will be reloaded.                                   -->
+    <WatchedResource>WEB-INF/web.xml</WatchedResource>
+    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
+
+    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
+    <!--
+    <Manager pathname="" />
+    -->
+
+    <Parameter name="OK_PORTAL_ENVIRONMENT" override="false" value="Production"/>
+    <Parameter name="OK_ELOGBOOK_ENVIRONMENT" override="false" value="Production"/>
+    <Parameter name="OK_MICS_HOME_ENVIRONMENT" override="false" value="Production"/>
+
+    <Resource name="jdbc/okBetriebstagebuchDS"
+      auth="Container"
+      type="javax.sql.DataSource"
+      driverClassName="org.postgresql.Driver"
+      url="jdbc:postgresql://localhost:5432/betriebstagebuch"
+      username="btbservice"
+      password="btbservice"/>
+</Context>
diff --git a/deploy/lib/postgresql-42.0.0.jar b/deploy/lib/postgresql-42.0.0.jar
new file mode 100644
index 0000000..b89509b
--- /dev/null
+++ b/deploy/lib/postgresql-42.0.0.jar
Binary files differ
diff --git a/devlocal.yml b/devlocal.yml
new file mode 100644
index 0000000..8aa45cd
--- /dev/null
+++ b/devlocal.yml
@@ -0,0 +1,39 @@
+persistencyUnit: planned-grid-measures-devserver
+portalBaseURL: http://localhost:8080/portal/rest/beservice
+portalFeLoginURL: http://localhost:8080/portalFE/#/login
+whiteListDocumenttypes: application/pdf,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,image/png,image/jpeg
+
+dbConn:
+  driver: org.postgresql.Driver
+  url: jdbc:postgresql://172.18.22.160:5432/PlannedGridMeasuresDev
+  user: plgm_service
+  password: plgm_service
+
+emailConfiguration:
+  smtpHost: 172.18.22.160
+  port: 1025
+  sender: testSender@test.de
+
+logging:
+  level: INFO
+  appenders:
+    - type: file
+      currentLogFilename: /log/planned-grid-measures.log
+      threshold: ALL
+      archive: true
+      archivedLogFilenamePattern: /log/planned-grid-measures-%d.log
+      archivedFileCount: 5
+      timeZone: UTC
+  loggers:
+    org.eclipse.openk: DEBUG
+    org.eclipse.jetty.servlets: DEBUG
+
+server:
+  applicationConnectors:
+  - type: http
+    port: 9050
+  adminConnectors:
+  - type: http
+    port: 9051
+    
+
diff --git a/devserver.yml b/devserver.yml
new file mode 100644
index 0000000..8fe6043
--- /dev/null
+++ b/devserver.yml
@@ -0,0 +1,38 @@
+persistencyUnit: planned-grid-measures-devserver
+portalBaseURL: http://localhost:8880/portal/rest/beservice
+portalFeLoginURL: http://172.18.22.160:8880/portalFE/#/login
+whiteListDocumenttypes: application/pdf,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,image/png,image/jpeg
+dbConn:
+  driver: org.postgresql.Driver
+  url: jdbc:postgresql://172.18.22.160:5432/PlannedGridMeasuresDev
+  user: plgm_service
+  password: plgm_service
+
+emailConfiguration:
+  smtpHost: localhost
+  port: 1025
+  sender: testSenderDevServer@test.de
+
+logging:
+  level: INFO
+  appenders:
+    - type: file
+      currentLogFilename: /log/planned-grid-measures.log
+      threshold: ALL
+      archive: true
+      archivedLogFilenamePattern: /log/planned-grid-measures-%d.log
+      archivedFileCount: 5
+      timeZone: UTC
+  loggers:
+    org.eclipse.openk: DEBUG
+    org.eclipse.jetty.servlets: DEBUG
+
+server:
+  applicationConnectors:
+  - type: http
+    port: 9050
+  adminConnectors:
+  - type: http
+    port: 9051
+    
+
diff --git a/emailConfiguration/emailTemplates/activeEmailTemplate.txt b/emailConfiguration/emailTemplates/activeEmailTemplate.txt
new file mode 100644
index 0000000..8fd4686
--- /dev/null
+++ b/emailConfiguration/emailTemplates/activeEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: active1Recipient@test.de, active2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Schalten aktiv geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/appliedEmailTemplate.txt b/emailConfiguration/emailTemplates/appliedEmailTemplate.txt
new file mode 100644
index 0000000..b69fb77
--- /dev/null
+++ b/emailConfiguration/emailTemplates/appliedEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: applied1Recipient@test.de, applied2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Beantragt geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/approvedEmailTemplate.txt b/emailConfiguration/emailTemplates/approvedEmailTemplate.txt
new file mode 100644
index 0000000..27c72b1
--- /dev/null
+++ b/emailConfiguration/emailTemplates/approvedEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: approved1Recipient@test.de, approved2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Genehmigt geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/canceledEmailTemplate.txt b/emailConfiguration/emailTemplates/canceledEmailTemplate.txt
new file mode 100644
index 0000000..78bc41a
--- /dev/null
+++ b/emailConfiguration/emailTemplates/canceledEmailTemplate.txt
@@ -0,0 +1,17 @@
+To: canceled1Recipient@test.de, canceled2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Storniert geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Bemerkung:
+$gridMeasureRemark$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/closedEmailTemplate.txt b/emailConfiguration/emailTemplates/closedEmailTemplate.txt
new file mode 100644
index 0000000..fbd09af
--- /dev/null
+++ b/emailConfiguration/emailTemplates/closedEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: closed1Recipient@test.de, closed2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Geschlossen geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/finishedEmailTemplate.txt b/emailConfiguration/emailTemplates/finishedEmailTemplate.txt
new file mode 100644
index 0000000..f08d661
--- /dev/null
+++ b/emailConfiguration/emailTemplates/finishedEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: finished1Recipient@test.de, finished2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Maßnahme beendet geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/forapprovalEmailTemplate.txt b/emailConfiguration/emailTemplates/forapprovalEmailTemplate.txt
new file mode 100644
index 0000000..e5d2b50
--- /dev/null
+++ b/emailConfiguration/emailTemplates/forapprovalEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: forapproval1Recipient@test.de, forapproval2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Zur Genehmigung geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/inworkEmailTemplate.txt b/emailConfiguration/emailTemplates/inworkEmailTemplate.txt
new file mode 100644
index 0000000..060080b
--- /dev/null
+++ b/emailConfiguration/emailTemplates/inworkEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: inwork1Recipient@test.de, inwork2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status In Arbeit geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/rejectedEmailTemplate.txt b/emailConfiguration/emailTemplates/rejectedEmailTemplate.txt
new file mode 100644
index 0000000..397488d
--- /dev/null
+++ b/emailConfiguration/emailTemplates/rejectedEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: rejected1Recipient@test.de, rejected2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde zurückgewiesen.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/releasedEmailTemplate.txt b/emailConfiguration/emailTemplates/releasedEmailTemplate.txt
new file mode 100644
index 0000000..338c5a4
--- /dev/null
+++ b/emailConfiguration/emailTemplates/releasedEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: released1Recipient@test.de, released2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Freigegeben geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/requestedEmailTemplate.txt b/emailConfiguration/emailTemplates/requestedEmailTemplate.txt
new file mode 100644
index 0000000..c26687b
--- /dev/null
+++ b/emailConfiguration/emailTemplates/requestedEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: requested1Recipient@test.de, requested2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Angefordert geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/emailTemplates/workfinishedEmailTemplate.txt b/emailConfiguration/emailTemplates/workfinishedEmailTemplate.txt
new file mode 100644
index 0000000..83e42c0
--- /dev/null
+++ b/emailConfiguration/emailTemplates/workfinishedEmailTemplate.txt
@@ -0,0 +1,14 @@
+To: workfinished1Recipient@test.de, workfinished2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" und Ende: $plannedEndtimeLastSinglemeasure$ wurde in den Status Arbeit beendet geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfiguration/mailTemplatesPaths.json b/emailConfiguration/mailTemplatesPaths.json
new file mode 100644
index 0000000..bc3f213
--- /dev/null
+++ b/emailConfiguration/mailTemplatesPaths.json
@@ -0,0 +1,14 @@
+{
+  "appliedEmailTemplate": "emailConfiguration/emailTemplates/appliedEmailTemplate.txt",
+  "forapprovalEmailTemplate": "emailConfiguration/emailTemplates/forapprovalEmailTemplate.txt",
+  "approvedEmailTemplate": "emailConfiguration/emailTemplates/approvedEmailTemplate.txt",
+  "requestedEmailTemplate": "emailConfiguration/emailTemplates/requestedEmailTemplate.txt",
+  "releasedEmailTemplate": "emailConfiguration/emailTemplates/releasedEmailTemplate.txt",
+  "activeEmailTemplate": "emailConfiguration/emailTemplates/activeEmailTemplate.txt",
+  "inworkEmailTemplate": "emailConfiguration/emailTemplates/inworkEmailTemplate.txt",
+  "workfinishedEmailTemplate": "emailConfiguration/emailTemplates/workfinishedEmailTemplate.txt",
+  "finishedEmailTemplate": "emailConfiguration/emailTemplates/finishedEmailTemplate.txt",
+  "closedEmailTemplate": "emailConfiguration/emailTemplates/closedEmailTemplate.txt",
+  "cancelledEmailTemplate": "emailConfiguration/emailTemplates/canceledEmailTemplate.txt",
+  "rejectedEmailTemplate": "emailConfiguration/emailTemplates/rejectedEmailTemplate.txt"
+}
\ No newline at end of file
diff --git a/emailConfigurationTest/emailTemplates/appliedEmailTemplateTest.txt b/emailConfigurationTest/emailTemplates/appliedEmailTemplateTest.txt
new file mode 100644
index 0000000..8652e28
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/appliedEmailTemplateTest.txt
@@ -0,0 +1,15 @@
+To: test1Recipient@test.de, test2Recipient@test.de
+CC: testCCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Beantragt geändert.
+
+Body:
+TEST
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/emailTemplates/approvedEmailTemplateTest.txt b/emailConfigurationTest/emailTemplates/approvedEmailTemplateTest.txt
new file mode 100644
index 0000000..8652e28
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/approvedEmailTemplateTest.txt
@@ -0,0 +1,15 @@
+To: test1Recipient@test.de, test2Recipient@test.de
+CC: testCCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Beantragt geändert.
+
+Body:
+TEST
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/emailTemplates/canceledEmailTemplateTest.txt b/emailConfigurationTest/emailTemplates/canceledEmailTemplateTest.txt
new file mode 100644
index 0000000..0b4b57f
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/canceledEmailTemplateTest.txt
@@ -0,0 +1,17 @@
+To: canceled1Recipient@test.de, canceled2Recipient@test.de
+CC: test1CCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme "$gridMeasureTitle$" mit Beginn: "$plannedStarttimeFirstSinglemeasure$" wurde in den Status Storniert geändert.
+
+Body:
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Die Grund für die Stornierung lautet folgendermassen:
+$gridMeasureRemark$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/emailTemplates/closedEmailTemplateTest.txt b/emailConfigurationTest/emailTemplates/closedEmailTemplateTest.txt
new file mode 100644
index 0000000..56e4a26
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/closedEmailTemplateTest.txt
@@ -0,0 +1,15 @@
+To: test1Recipient@test.de, test2Recipient@test.de
+CC: testCCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Geschlossen geändert.
+
+Body:
+TEST
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerCCRecipient.txt b/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerCCRecipient.txt
new file mode 100644
index 0000000..5415e6a
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerCCRecipient.txt
@@ -0,0 +1,15 @@
+To: test1@Recipienttest.de, test2Recipient@test.de
+CC: testCCRecipient@test.de, test2CCR&!cipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Beantragt geändert.
+
+Body:
+TEST
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerRecipient.txt b/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerRecipient.txt
new file mode 100644
index 0000000..b28f00b
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerRecipient.txt
@@ -0,0 +1,15 @@
+To: test1Recipienttest.de, test2Recipient@test.de
+CC: testCCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Beantragt geändert.
+
+Body:
+TEST
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerRecipientWithoutCC.txt b/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerRecipientWithoutCC.txt
new file mode 100644
index 0000000..17f0147
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerRecipientWithoutCC.txt
@@ -0,0 +1,14 @@
+To: test1@Recipienttest.de, test2Recipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Beantragt geändert.
+
+Body:
+TEST
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerToRecipient.txt b/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerToRecipient.txt
new file mode 100644
index 0000000..4beab52
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/emailTemplateTestFehlerToRecipient.txt
@@ -0,0 +1,15 @@
+To: test1@Recip&ienttest.de, test2Recipient@test.de
+CC: testCCRecipient@test.de, test2CCRcipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Beantragt geändert.
+
+Body:
+TEST
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/emailTemplates/releasedEmailTemplateTest.txt b/emailConfigurationTest/emailTemplates/releasedEmailTemplateTest.txt
new file mode 100644
index 0000000..7dd9ed4
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/releasedEmailTemplateTest.txt
@@ -0,0 +1,15 @@
+To: test1Recipient@test.de, test2Recipient@test.de
+CC: testCCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Freigegeben geändert.
+
+Body:
+TEST
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/emailTemplates/requestedEmailTemplateTest.txt b/emailConfigurationTest/emailTemplates/requestedEmailTemplateTest.txt
new file mode 100644
index 0000000..900dbc5
--- /dev/null
+++ b/emailConfigurationTest/emailTemplates/requestedEmailTemplateTest.txt
@@ -0,0 +1,15 @@
+To: test1Recipient@test.de, test2Recipient@test.de
+CC: testCCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Angefordet geändert.
+
+Body:
+TEST
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Admin-Meister-Team der PTA GmbH
diff --git a/emailConfigurationTest/mailTemplatesPaths.json b/emailConfigurationTest/mailTemplatesPaths.json
new file mode 100644
index 0000000..bfdf746
--- /dev/null
+++ b/emailConfigurationTest/mailTemplatesPaths.json
@@ -0,0 +1,15 @@
+{
+  "appliedEmailTemplate": "emailConfigurationTest/emailTemplates/appliedEmailTemplateTest.txt",
+  "forapprovalEmailTemplate": "",
+  "approvedEmailTemplate": "emailConfigurationTest/emailTemplates/approvedEmailTemplateTest.txt",
+  "requestedEmailTemplate": "emailConfigurationTest/emailTemplates/requestedEmailTemplateTest.txt",
+  "releasedEmailTemplate": "emailConfigurationTest/emailTemplates/releasedEmailTemplateTest.txt",
+  "activeEmailTemplate": "",
+  "inworkEmailTemplate": "",
+  "workfinishedEmailTemplate": "",
+  "finishedEmailTemplate": "",
+  "closedEmailTemplate": "emailConfigurationTest/emailTemplates/closedEmailTemplateTest.txt",
+
+  "cancelledEmailTemplate": "",
+  "rejectedEmailTemplate": ""
+}
\ No newline at end of file
diff --git a/get_started.txt b/get_started.txt
new file mode 100644
index 0000000..bf2d9fc
--- /dev/null
+++ b/get_started.txt
@@ -0,0 +1,108 @@
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+GET STARTED
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+
+**********************************************************************
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *
+PLEASE BE SURE THAT YOU HAVE FIRST PORTAL INSTALLED AND CONFIGURED ! *
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *
+**********************************************************************
+
+
+---------------- REQUIREMENTS -------------
+Java 1.8
+Apache Maven 3.5.0
+
+IF you have this versions, check if you have set JAVA_HOME and M2_HOME.
+    - If yes: Ignore step 1 and 2
+    - If no: Follow the corresponding steps below
+
+
+-------------------- 1 ---------------------
+Install java 8
+
+- Open a cmd and check your java version
+    $ java -version
+- If you dont have java version 1.8 then download and install it from:
+        http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
+- Set JAVA_HOME (Windows OS):
+    Right click on This Computer and select Properties.
+    On the Advanced tab, select Environment Variables, and then edit JAVA_HOME to point to where the JDK software is located, for example, C:\Program Files\Java\jdk1.8.xxx.
+    Also, edit The Path variable in System variables and add the bin path (C:\Program Files\Java\jdk1.8.xxx\bin)
+- Restart your PC
+- Confirm by checking the version
+    $ java -version
+
+
+-------------------- 2 ---------------------
+Install Apache Maven to your pc
+
+Maven is a tool that can be used for building and managing any Java-based project.
+
+- Download maven 3.5.0 from
+        https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.0/
+- Extract the folder and place it on your C drive
+- Set M2_HOME (Windows OS):
+    - Right click on This Computer and select Properties.
+    - On the Advanced tab, select Environment Variables, and then create M2_HOME to point to where the Maven software is located, for example, C:\apache-maven-3.5.0.
+    - Also edit The Path variable in System variables and add the bin path (C:\apache-maven-3.5.0\bin)
+- Restart your PC
+- Confirm with
+    $ mvn -v
+
+-------------------- 3 ---------------------
+To get started with the project you have to clone all (elogbook and portal backend-frontend ) projects.
+
+- Create a folder and do following for each of them
+- Open a cmd and navigate to the folder
+- use the command to create a clone of each project
+    § git clone <project_url>
+- if you are going to develop, important is a switch to the develop branch
+    - navigate in the folder with the clone and switch to develop branch
+        $ git checkout <branch>
+- At the end just pull the actual version of the code
+    $ git pull origin <branch>
+
+
+--------------------------
+Active Develop Branches: |
+Backend -> DEVELOP_BE    |
+Frontend -> DEVELOP_FE   |
+-------------------------|
+Stable Branches: master  |
+--------------------------
+
+
+-------------------- 4 ---------------------
+Build the maven project
+
+Building the maven project, will produce a <project_name>.war file(Web Application Archive), which is needed to run the project.
+- Open a command line and navigate to the root folder of the backend project
+- Use the following call to cleanly build and install artifacts into the local repository:
+    $ mvn clean install
+
+-------------------- 5 ---------------------
+Open and familiarize yourself with the project
+
+- if you successfully build the maven project you can find in /target/generated-docs all the documentations of this projects
+    - "howtoBuild" -> here you can read how to build the whole (backend and frontend) project
+    - "howtoRun" -> here you can read how to run the Application
+    - "architectureDocumentation" -> here you can read about the architecture pf this module
+    - "swaggerInterfaceDocumentation" -> here you can read about the backend REST Services which are used
+
+- Other useful files:
+    - /target/site/jacoco/index.html -> jacoco code coverage review
+    - /target/surefire-reports -> test reports
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+NEXT STEP -> READ THE elogbook_howtoBuild FILE    !
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
\ No newline at end of file
diff --git a/my_wrapper_script.sh b/my_wrapper_script.sh
new file mode 100644
index 0000000..962f57e
--- /dev/null
+++ b/my_wrapper_script.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+cd microservices/mics-backend/
+java -jar target/planned-grid-measures.jar server devlocal.yml
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e639cb6
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,473 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+        xmlns="http://maven.apache.org/POM/4.0.0"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <prerequisites>
+        <maven>3.0.0</maven>
+    </prerequisites>
+
+    <groupId>org.eclipse.openk</groupId>
+    <artifactId>planned-grid-measures</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>planned-grid-measures</name>
+
+    <properties>
+        <java-source-target-version>1.8</java-source-target-version>
+
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <maven.test.skip>false</maven.test.skip>
+        <mainClass>org.eclipse.openk.PlannedGridMeasuresApplication</mainClass>
+        <skip.asciidoc>false</skip.asciidoc>
+
+        <dropwizard.version>1.3.1</dropwizard.version>
+        <httpclient.version>4.5.3</httpclient.version>
+        <commons-io.version>2.5</commons-io.version>
+        <junit.version>4.12</junit.version>
+        <easymock.version>3.4</easymock.version>
+        <powermock-api-easymock.version>1.6.6</powermock-api-easymock.version>
+        <jacoco-maven-plugin.version>0.7.9</jacoco-maven-plugin.version>
+        <sonar-maven-plugin.version>3.2</sonar-maven-plugin.version>
+        <flyway-maven-plugin-version>4.2.0</flyway-maven-plugin-version>
+        <maven-compiler-plugin-version>3.6.1</maven-compiler-plugin-version>
+        <maven-jar-plugin-version>2.6</maven-jar-plugin-version>
+        <maven-project-info-reports-plugin-version>3.0.0</maven-project-info-reports-plugin-version>
+        <maven-shade-plugin.version>2.4.1</maven-shade-plugin.version>
+        <maven-javadoc-plugin-version>2.10.3</maven-javadoc-plugin-version>
+        <maven-source-plugin-version>2.4</maven-source-plugin-version>
+        <swagger-jersey2-jaxrs>1.5.12</swagger-jersey2-jaxrs>
+        <swagger-maven-plugin-version>3.1.6</swagger-maven-plugin-version>
+        <java-jwt-version>3.2.0</java-jwt-version>
+        <gson-version>2.8.5</gson-version>
+        <commons-codec-version>1.11</commons-codec-version>
+        <eclipselink-version>2.6.4</eclipselink-version>
+        <postgresql-version>9.1-901-1.jdbc4</postgresql-version>
+        <asciidoctor-maven-plugin-version>1.5.3</asciidoctor-maven-plugin-version>
+        <asciidoctorj-pdf-version>1.5.0-alpha.11</asciidoctorj-pdf-version>
+        <asciidoctorj-version>1.5.4</asciidoctorj-version>
+        <asciidoctorj-diagram-versions>1.5.4.1</asciidoctorj-diagram-versions>
+        <jruby-complete-version>1.7.21</jruby-complete-version>
+        <javax.mail.version>1.4</javax.mail.version>
+        <greenmail.version>1.5.7</greenmail.version>
+
+        <database.url>jdbc:postgresql://172.18.22.160:5432/PlannedGridMeasuresDev</database.url>
+        <database.user>postgres</database.user>
+        <database.password>admin</database.password>
+
+    </properties>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>io.dropwizard</groupId>
+                <artifactId>dropwizard-bom</artifactId>
+                <version>${dropwizard.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+
+
+    <dependencies>
+        <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
+        <dependency>
+            <groupId>javax.ws.rs</groupId>
+            <artifactId>javax.ws.rs-api</artifactId>
+            <version>2.1</version>
+        </dependency>
+        <dependency>
+            <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>${httpclient.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>${gson-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons-io.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>eclipselink</artifactId>
+            <version>${eclipselink-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>${postgresql-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymock</artifactId>
+            <version>${easymock.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-api-easymock</artifactId>
+            <version>${powermock-api-easymock.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jacoco</groupId>
+            <artifactId>jacoco-maven-plugin</artifactId>
+            <version>${jacoco-maven-plugin.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-beanutils</groupId>
+                    <artifactId>commons-beanutils</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>${java-jwt-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-jersey2-jaxrs</artifactId>
+            <version>${swagger-jersey2-jaxrs}</version>
+            <scope>compile</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.google.code.findbugs</groupId>
+                    <artifactId>annotations</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${commons-codec-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${javax.mail.version}</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.icegreen/greenmail -->
+        <dependency>
+            <groupId>com.icegreen</groupId>
+            <artifactId>greenmail</artifactId>
+            <version>${greenmail.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.flywaydb</groupId>
+                <artifactId>flyway-maven-plugin</artifactId>
+                <version>${flyway-maven-plugin-version}</version>
+                <configuration>
+                    <sqlMigrationSeparator>__</sqlMigrationSeparator>
+                    <locations>
+                        <location>filesystem:db/migrations/</location>
+                    </locations>
+                    <url>${database.url}</url>
+                    <user>${database.user}</user>
+                    <password>${database.password}</password>
+                    <schemas>
+                        <schema>public</schema>
+                    </schemas>
+
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>${maven-shade-plugin.version}</version>
+                <configuration>
+                    <createDependencyReducedPom>true</createDependencyReducedPom>
+                    <transformers>
+                        <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                            <mainClass>${mainClass}</mainClass>
+                        </transformer>
+                    </transformers>
+                    <!-- exclude signed Manifests -->
+                    <filters>
+                        <filter>
+                            <artifact>*:*</artifact>
+                            <excludes>
+                                <exclude>META-INF/*.SF</exclude>
+                                <exclude>META-INF/*.DSA</exclude>
+                                <exclude>META-INF/*.RSA</exclude>
+                            </excludes>
+                        </filter>
+                    </filters>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>${maven-jar-plugin-version}</version>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <addClasspath>true</addClasspath>
+                            <mainClass>${mainClass}</mainClass>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>${maven-compiler-plugin-version}</version>
+                <configuration>
+                    <source>${java-source-target-version}</source>
+                    <target>${java-source-target-version}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>${maven-source-plugin-version}</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>${maven-javadoc-plugin-version}</version>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.sonarsource.scanner.maven</groupId>
+                <artifactId>sonar-maven-plugin</artifactId>
+                <version>${sonar-maven-plugin.version}</version>
+            </plugin>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <version>${jacoco-maven-plugin.version}</version>
+                <configuration>
+                    <skip>${maven.test.skip}</skip>
+                    <output>file</output>
+                    <append>true</append>
+                    <excludes>
+                        <exclude>**/Globals.*</exclude>
+                    </excludes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>jacoco-initialize</id>
+                        <goals>
+                            <goal>prepare-agent</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>jacoco-site</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>report</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.asciidoctor</groupId>
+                <artifactId>asciidoctor-maven-plugin</artifactId>
+                <version>${asciidoctor-maven-plugin-version}</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj-pdf</artifactId>
+                        <version>${asciidoctorj-pdf-version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.jruby</groupId>
+                        <artifactId>jruby-complete</artifactId>
+                        <version>${jruby-complete-version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj</artifactId>
+                        <version>${asciidoctorj-version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj-diagram</artifactId>
+                        <version>${asciidoctorj-diagram-versions}</version>
+                    </dependency>
+                </dependencies>
+                <configuration>
+                    <sourceDirectory>src/main/asciidoc</sourceDirectory>
+                    <requires>
+                        <require>asciidoctor-diagram</require>
+                    </requires>
+                    <attributes>
+                        <imagesoutdir>${project.build.directory}/generated-docs/images</imagesoutdir>
+                        <imagesDir>${project.build.directory}/generated-docs/images</imagesDir>
+                    </attributes>
+                </configuration>
+                <executions>
+
+                    <execution>
+                        <id>output-html</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <skip>${skip.asciidoc}</skip>
+                            <imagesDir>${project.build.directory}/generated-docs/images</imagesDir>
+                            <requires>
+                                <require>asciidoctor-diagram</require>
+                            </requires>
+                            <sourceHighlighter>coderay</sourceHighlighter>
+                            <backend>html</backend>
+                            <doctype>book</doctype>
+                            <imagesDir>./images</imagesDir>
+                        </configuration>
+                    </execution>
+                    <!--execution>
+                        <id>output-pdf</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <skip>${skip.asciidoc}</skip>
+                            <imagesDir>${project.build.directory}/generated-docs/images</imagesDir>
+                            <requires>
+                                <require>asciidoctor-diagram</require>
+                            </requires>
+                            <sourceHighlighter>coderay</sourceHighlighter>
+                            <backend>pdf</backend>
+                            <doctype>book</doctype>
+                            <imagesDir>./images</imagesDir>
+                            <attributes>
+                                <icons>font</icons>
+                                <pagenums />
+                                <toc />
+                                <idprefix />
+                                <idseparator>-</idseparator>
+                            </attributes>
+                        </configuration>
+                    </execution-->
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>com.github.kongchen</groupId>
+                <artifactId>swagger-maven-plugin</artifactId>
+                <version>${swagger-maven-plugin-version}</version>
+                <configuration>
+                    <skipSwaggerGeneration>false</skipSwaggerGeneration>
+                    <apiSources>
+                        <apiSource>
+                            <springmvc>false</springmvc>
+                            <locations>
+                                <location>org.eclipse.openk</location>
+                            </locations>
+                            <schemes>
+                                <shema>http</shema>
+                            </schemes>
+                            <host>localhost:9050</host>
+                            <basePath>/mics/gridMeasures</basePath>
+                            <info>
+                                <title>plannedGridMeasures@openK - Backend REST-Service documentation</title>
+                                <version>v1</version>
+                                <description>This documentation contains the description of all used REST services.</description>
+                                <termsOfService>
+                                    .
+                                </termsOfService>
+                                <contact>
+                                    <email>nn@pta.de</email>
+                                    <name></name>
+                                </contact>
+                                <license>
+                                    <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
+                                    <name>Apache 2.0</name>
+                                </license>
+                            </info>
+                            <outputFormats>yaml</outputFormats>
+                            <templatePath>${basedir}/templates/strapdown.html.hbs</templatePath>
+                            <outputPath>target/generated-docs/swaggerInterfaceDocumentation.html</outputPath>
+                            <swaggerDirectory>target/generated-docs</swaggerDirectory>
+                            <securityDefinitions>
+                                <securityDefinition>
+                                    <json>/securityDefinitions.json</json>
+                                </securityDefinition>
+                            </securityDefinitions>
+                        </apiSource>
+                    </apiSources>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <version>${maven-project-info-reports-plugin-version}</version>
+                <configuration>
+                    <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
+                    <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>${maven-javadoc-plugin-version}</version>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
diff --git a/prodserver.yml b/prodserver.yml
new file mode 100644
index 0000000..16970c3
--- /dev/null
+++ b/prodserver.yml
@@ -0,0 +1,40 @@
+persistencyUnit: planned-grid-measures-devserver
+portalBaseURL: http://localhost:8080/portal/rest/beservice
+portalFeLoginURL: http://172.18.22.160:8880/portalFE/#/login
+whiteListDocumenttypes: application/pdf,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,image/png,image/jpeg
+
+
+dbConn:
+  driver: org.postgresql.Driver
+  url: jdbc:postgresql://localhost:5432/plannedgridmeasuresqa
+  user: plgm_service
+  password: plgm_service
+
+emailConfiguration:
+  smtpHost: localhost
+  port: 1025
+  sender: testSenderDevServer@test.de
+
+logging:
+  level: INFO
+  appenders:
+    - type: file
+      currentLogFilename: /opt/mics/logs/planned-grid-measures.log
+      threshold: ALL
+      archive: true
+      archivedLogFilenamePattern: /opt/mics/logs/planned-grid-measures-%d.log
+      archivedFileCount: 5
+      timeZone: UTC
+  loggers:
+    org.eclipse.openk: DEBUG
+    org.eclipse.jetty.servlets: DEBUG
+
+server:
+  applicationConnectors:
+  - type: http
+    port: 9050
+  adminConnectors:
+  - type: http
+    port: 9051
+    
+
diff --git a/qserver.yml b/qserver.yml
new file mode 100644
index 0000000..08c68bf
--- /dev/null
+++ b/qserver.yml
@@ -0,0 +1,40 @@
+persistencyUnit: planned-grid-measures-devserver
+portalBaseURL: http://localhost:8080/portal/rest/beservice
+portalFeLoginURL: http://169.50.13.154/portalFE/#/login
+whiteListDocumenttypes: application/pdf,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,image/png,image/jpeg
+
+
+dbConn:
+  driver: org.postgresql.Driver
+  url: jdbc:postgresql://localhost:5432/plannedgridmeasuresqa
+  user: plgm_service
+  password: plgm_service
+
+emailConfiguration:
+  smtpHost: localhost
+  port: 1025
+  sender: testSenderDevServer@test.de
+
+logging:
+  level: INFO
+  appenders:
+    - type: file
+      currentLogFilename: /opt/mics/logs/planned-grid-measures.log
+      threshold: ALL
+      archive: true
+      archivedLogFilenamePattern: /opt/mics/logs/planned-grid-measures-%d.log
+      archivedFileCount: 5
+      timeZone: UTC
+  loggers:
+    org.eclipse.openk: DEBUG
+    org.eclipse.jetty.servlets: DEBUG
+
+server:
+  applicationConnectors:
+  - type: http
+    port: 9050
+  adminConnectors:
+  - type: http
+    port: 9051
+    
+
diff --git a/roleAccessConfiguration/role-access-definition.json b/roleAccessConfiguration/role-access-definition.json
new file mode 100644
index 0000000..3b51740
--- /dev/null
+++ b/roleAccessConfiguration/role-access-definition.json
@@ -0,0 +1,797 @@
+{
+    "editRoles": [
+        {
+            "name": "planned-policies-measureapplicant",
+            "gridMeasureStatusIds": [
+                0
+            ]
+        },
+        {
+            "name": "planned-policies-measureplanner",
+            "gridMeasureStatusIds": [
+                1
+            ]
+        },
+        {
+            "name": "planned-policies-measureapprover",
+            "gridMeasureStatusIds": [
+                3
+            ]
+        },
+        {
+            "name": "planned-policies-requester",
+            "gridMeasureStatusIds": [
+                4
+            ]
+        },
+        {
+            "name": "planned-policies-clearance",
+            "gridMeasureStatusIds": [
+                5
+            ]
+        },
+        {
+            "name": "planned-policies-executor",
+            "gridMeasureStatusIds": [
+                6,
+                7,
+                8
+            ]
+        },
+        {
+            "name": "planned-policies-completion",
+            "gridMeasureStatusIds": [
+                9,
+                10
+            ]
+        }
+    ],
+    "controls": [
+        {
+            "gridMeasureStatusId": 0,
+            "activeButtons": [
+                "apply",
+                "save",
+                "cancel"
+            ],
+            "inactiveFields": [
+                "statusId",
+                "modUser",
+                "id",
+                "applicantControl"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 1,
+            "activeButtons": [
+                "cancel",
+                "[skipForApproval:false]forapproval",
+                "[skipForApproval:true]approve",
+                "save"
+            ],
+            "inactiveFields": [
+                "createUserDepartment",
+                "modUserDepartment",
+                "id",
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "goToGridMeasureDetailBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 2,
+            "activeButtons": [],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "goToGridMeasureDetailBtn",
+                "file",
+                "fileUploadLabel",
+                "remark",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+
+            ]
+        },
+        {
+            "gridMeasureStatusId": 3,
+            "activeButtons": [
+                "save",
+                "cancel",
+                "reject",
+                "approve"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 4,
+            "activeButtons": [
+                "save",
+                "cancel",
+                "[endAfterApproved:false][skipRequesting:false]request",
+                "[endAfterApproved:false][skipRequesting:true][endAfterReleased:false]activate",
+                "[endAfterApproved:false][skipRequesting:true][endAfterReleased:true]close",
+                "[endAfterApproved:true]close"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 5,
+            "activeButtons": [
+                "save",
+                "cancel",
+                "reject",
+                "release"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 6,
+            "activeButtons": [
+                "save",
+                "[endAfterReleased:false]activate",
+                "[endAfterReleased:true]close"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 7,
+            "activeButtons": [
+                "save",
+                "[skipInWork:false]inwork",
+                "[skipInWork:true]finish"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 8,
+            "activeButtons": [
+                "save",
+                 "workfinish"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 9,
+            "activeButtons": [
+                "save",
+                "finish"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 10,
+            "activeButtons": [
+                "save",
+                "close"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 11,
+            "activeButtons": [],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "remark",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 12,
+            "activeButtons": [],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "remark",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure",
+                "singleGMAffectedResourcesGroupList",
+                "singleGMAffectedResources",
+                "stepAffectedResourcesGroupList",
+                "stepAffectedResources",
+                "stepSwitchingObject",
+                "stepTargetState",
+                "useResourceBtn",
+                "addStepBtn",
+                "createInvertedStep",
+                "deleteSingleGridMeasureBtn",
+                "emailAddress",
+                "addEmailDistributionEntryBtn"
+            ]
+        }
+    ],
+    "stornoSection":
+    {
+      "stornoRoles": [
+        "planned-policies-measureapplicant",
+        "planned-policies-measureplanner",
+        "planned-policies-measureapprover",
+        "planned-policies-requester",
+        "planned-policies-clearance"
+      ]
+    },
+    "duplicateSection":
+    {
+        "duplicateRoles": [
+            "planned-policies-measureapplicant"
+        ]
+    }
+}
\ No newline at end of file
diff --git a/sonar-project.properties b/sonar-project.properties
new file mode 100644
index 0000000..bac54d4
--- /dev/null
+++ b/sonar-project.properties
@@ -0,0 +1,16 @@
+# must be unique in a given SonarQube instance
+sonar.projectKey=openk.pta.de:plannedGridMeasures-mics-backend-BE
+# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
+sonar.projectName=plannedGridMeasures-mics-backend-BE
+sonar.projectVersion=0.0.1_Snapshot
+ 
+sonar.sourceEncoding=UTF-8
+sonar.sources=src/main
+sonar.language=java
+sonar.exclusions=**/common/Globals.java,**/rest/*.java,**/LoggerUtil.java,**/dao/*.java,**/dao/interfaces/*.java,**/controller/BackendController*.java,**/auth2/**/*.java,**/communication/RestServiceWrapper.java,**/controller/BackendController.java
+sonar.binaries=target/classes
+sonar.cpd.exclusions=**/model/*.java,**/api/*.java
+sonar.tests=src/test
+sonar.java.coveragePlugin=jacoco
+sonar.junit.reportPaths=target/surefire-reports
+sonar.jacoco.reportPath=target/jacoco.exec
diff --git a/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
new file mode 100644
index 0000000..55af5d4
--- /dev/null
+++ b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
@@ -0,0 +1,1119 @@
+////
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+////
+openKonsequenz - Architecture of the module 'Planned Grid Measures'
+===================================================================
+:Author: Frank Dietrich
+:Email: frank.dietrich@pta.de
+:Date: 2018-03-19
+:Revision: 1
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+This documentation bases on ARC42-Template (v7.0):
+
+<<<
+
+== Introduction and Goals
+
+=== Requirements Overview
+
+The module 'Planned Grid Measures' should support the network operators by managing the required maintenance and repair work.
+It has to provide an overview of all planned grid measures including its actual status. For that the service engineers must be
+able to update the status of their tasks by using mobile clients (smartphone or tablet pc). To get an unique planning
+of a grid measure, it is required to select the affected resources out of the network operator's inventory (network topology).
+Therefore the inventory must be imported from the module 'CIM-Cache', which contains this information. Finally the planned grid
+measures have to be transfered to the central network control unit (CNCU).
+
+The full requirements of the module 'Planned Grid Measures' (in German: Modul 'Geplante Netzmaßnahme') is described in the document
+
+* "Anfragespezifikation Modul Geplante Netzmaßnahme" from 12-09-2017.
+
+=== Quality Goals
+The module 'Planned Grid Measures' represents a user module that bases on the architecture platform of openKONSEQUENZ. The main quality
+goals of the platform are:
+
+* *Flexibility* The reference platform shall grant that different systems and modules from different vendors/developers can interact and interoperate, and may be exchanged or recombined.
+* *Availability* All platform modules that are running on the platform can only be as available as the platform same for user modules that are based on platform modules.
+* *Maintainability* (and testability as part of maintainability)  The platform and its platform modules shall be used longer than 15 years.
+* *Integration performance* New implemented functionality of oK own modules and external modules shall be included fast / automatically.
+* *Security* The platform and its modules need to underly security-by-design
+
+The main quality goals of the user module planned grid measures are:
+
+* *Functionality* The user module must fulfil the functional requirements mentioned in the section before
+* *Ergonomics* The web interface must be realized according to oK-GUI-Styleguide.
+* *Good documentation* (i.e. code and architecture documentation) makes code changes easier and automatic
+tests facilitate rigorous verification.
+* *Modifiability* (and testability as part of modifiability)
+* *Integration performance* The user module must be easy integratable in different production environments.
+
+The following documents contain the quality goals in detail:
+
+* Architecture Committee Handbook v1.3.1 from 05-09-2017
+* Quality Committee Handbook v1.1.1 from 11-09-2017
+
+The architecture is based on the AC-Handbook. The quality demands are described in the QC-Handbook.
+Both specifications were fully complied with in the project, so that a high quality is given.
+
+The code quality regarding static code analysis and unit test code coverage on the backend and fronend sides
+are ensured by the use of sonarqube. The rule set and the qualtity gate are defined by the default, the
+so called "sonar way".
+
+The module 'Planned Grid Measures' is part of the Eclipse project 'Eclipse openK User Modules'.
+This project bases on the Eclipse Public Licence 2.0.
+
+=== Stakeholders
+
+.Stakeholders
+[options="header,footer"]
+|=========================================================
+|Role/Name|Contact|Expectations
+|Product Owner (represents the Distribution System Operators)|Rainer Fuhrmann, Benjamin Woboril, Oliver Tantu|The software must fulfil their functional and nonfunctional Requirements.
+|Module Developer|Michel Alessandrini, Jonas Tewolde, Frank Dietrich|All relevant business and technical information must be available for implementing the software.
+|External Reviewer (represents the AC/QC)|Heiko Oberländer, Alexander Langold|The software and the documentation is realized according the Quality and Architecture Handbook of openKONSEQUENZ.
+|External Reviewer (represents the Eclipse-Requirements)|Angelika  Wittek|The software is  licensed under the EPL 2.0. It must be validated that all requirements are fulfilled.
+|System Integrator|n.n.|A documentation for the integration of the module in the DSO specific environments must be available.
+|=========================================================
+
+== Architecture Constraints
+
+TODO: LINK zum Eclipse Repository anpassen
+
+The main architecture constraints are:
+
+* *Public License* The module must be available under the “Eclipse Public License 2.0”.
+* *Availability* The source code of the module must be accessible to any interested person/company.
+Therefore the project is published at https://projects.eclipse.org/projects/technology.elogbook
+* *Standardization* The module must use standardized data structures (CIM) [if available] and the reference platform.
+
+=== Technical Constraints
+
+TODO: Bibliotheken und Versionen aktualisieren
+
+The following technical constraints are given:
+
+.Technical Contraints
+[options="header,footer"]
+|========================================================
+|Component|Constraints
+|Basis components of the reference platform
+a|* Application Server Tomcat
+* JPA EclipseLink
+* Database PostgreSQL
+
+|Enterprise Service Bus
+a|* ESB Talend
+* Communication via RESTful Webservices
+
+|Programming Language Frontend
+a|* Angular
+* Bootstrap
+* jQuery
+* REST/JSON Interfaces
+
+|GUI design
+a|* According to oK-GUI-Styleguide
+
+|Java QA environment
+a| * Sonarqube 5.6.6
+
+|Programming Language
+a|* Backend: Java 1.8
+* Frontend: Angular 4.0.0 (Javascript, Typescript, HTML5, CSS3)
+
+|IDE
+a|* Not restricted (Eclipse, IntelliJ, Microsoft Developer Studio, Microsoft Visual Code ...)
+
+|Build system
+a|* Backend: Maven
+* Frontend: NodeJS + Angular/cli
+
+|Libraries, Frameworks,Components
+a|* Used Libraries/Frameworks have to be compatible to the Eclipse Public License
+
+|Architecture Documentation
+a|* According ARC42-Template
+|========================================================
+
+
+=== Technical Dependencies
+
+==== Modules
+The following modules are required to use the 'Planned Grid Measures':
+
+.Modules
+[options="header,footer"]
+|=========================================================
+|Name of the module|Purpose|Status of the module
+|'Auth&Auth'|Authentification and Authorization|available
+|'CIM-Cache'|Provision of the network operator's inventory|partly available
+|'SCADA-Adapter'|Communication with the SCADA System|not available
+|=========================================================
+
+
+==== Libraries
+TODO: Bibliotheken und Versionen am Ende des Projekts aktualisieren
+
+The following libraries are used:
+
+.Libraries
+[options="header,footer"]
+|=========================================================
+|Name of the library|Version|Artefact-id|Usage|License|Tier
+|Node.js|6.10.0 LTS||JavaScript Runtime (server side)|MIT License|Frontend
+|npm (in Node.js enthalten)|3.10.10||Node Package Manager (package manager for libraries)|Artistic License 2.0|Frontend
+|Angular|4.0.0||UI-Framework|MIT License|Frontend
+|Angular Material|2.0.0-beta.2||Angular Material Design Components|MIT License|Frontend
+|Bootstrap|3.3.7||CSS-Framework |MIT License|Frontend
+|jQuery|3.1.1||JavaScript Bibliothek|MIT License|Frontend
+|ng2-daterangepicker|1.0.4||Angular 2 Daterangepicker Component|MIT License|Frontend
+|Moment.js|2.16.0||JavaScript library for date and time processing|MIT License|Frontend
+|core-js|2.4.1||JavaScript Polyfill for angular support within older browsers|MIT License|Frontend
+|rxjs|5.0.1||JavaScript Polyfill for Observables|Apache License 2.0|Frontend
+|TS-helpers|1.1.1||Helper library for compiling typescript|MIT License|Frontend
+|zone.js|0.7.2||JavaScript Polyfill for asynchronous data binding|MIT License|Frontend
+|org.apache.httpcomponents.httpclient|4.5.3
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.httpcomponents</groupId>
+    <artifactId>httpclient</artifactId>
+    <version>4.5.3</version>
+</dependency>
+----
+|Backend, Http-Client|Apache 2.0|Backend
+
+|org.json.json|20160810
+
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>org.json</groupId>
+    <artifactId>json</artifactId>
+    <version>20160810</version>
+</dependency>
+----
+|Backend - Json functionality|Json|Backend
+
+|org.jboss.resteasy.resteasy-jaxrs|3.0.21_Final
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>org.jboss.resteasy</groupId>
+    <artifactId>resteasy-jaxrs</artifactId>
+    <version>3.0.21.Final</version>
+</dependency>
+----
+|Backend - RestServer|Apache 2.0 / CC0.1.0/ Public|Backend
+
+|org.jboss.resteasy.jaxrs-api|3.0.12.Final
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>org.jboss.resteasy</groupId>
+    <artifactId>jaxrs-api</artifactId>
+    <version>3.0.12.Final</version>
+</dependency>
+----
+|Rest-Server|Apache 2.0|Backend
+
+|javax.servlet.servlet-api|3.0.1
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>javax.servlet</groupId>
+    <artifactId>servlet-api</artifactId>
+    <version>3.0.1</version>
+</dependency>
+----
+|Backend - Logging Servlet |CDDL GLP 2.0|Backend
+
+|com.google.code.gson.gson|2.8.0
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>com.google.code.gson</groupId>
+    <artifactId>gson</artifactId>
+    <version>2.8.0</version>
+</dependency>
+----
+|Backend Json de-serialization|Apache 2.0|Backend
+
+|log4j.log4j|1.2.17
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>log4j</groupId>
+    <artifactId>log4j</artifactId>
+    <version>1.2.17</version>
+</dependency>
+----
+|Backend logging|Apache 2.0|Backend
+
+|commons-io|2.5
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>commons-io</groupId>
+    <artifactId>commons-io</artifactId>
+    <version>2.5</version>
+</dependency>
+----
+|IO utils|Apache 2.0
+
+|org.eclipse.persistence.eclipselink|2.6.4|Backend
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>org.eclipse.persistence</groupId>
+    <artifactId>eclipselink</artifactId>
+    <version>2.6.4</version>
+</dependency>
+----
+|JPA implementation|EDL 1.0 EPL 1.0|Backend
+
+|postgresql.postgresql|9.1-901-1.jdbc4
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>postgresql</groupId>
+    <artifactId>postgresql</artifactId>
+    <version>9.1-901-1.jdbc4</version>
+</dependency>
+----
+|DB driver|BSD|Backend
+
+|junit.junit|4.12
+
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>junit</groupId>
+    <artifactId>junit</artifactId>
+    <version>4.12</version>
+</dependency>
+----
+|Unit testing|EPL 1.0|Backend
+
+|org.easymock.easymock|3.4
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>org.easymock</groupId>
+    <artifactId>easymock</artifactId>
+    <version>3.4</version>
+</dependency>
+----
+|Unit testing|Apache 2.0|Backend
+
+|org.powermock.powermock-api-easymock|1.6.6
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>org.powermock</groupId>
+    <artifactId>powermock-api-easymock</artifactId>
+    <version>1.6.6</version>
+</dependency>
+----
+|Unit testing|Apache 2.0|Backend
+
+|org.jacoco.jacoco-maven-plugin|0.7.9
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>org.jacoco</groupId>
+    <artifactId>jacoco-maven-plugin</artifactId>
+    <version>0.7.9</version>
+</dependency>
+----
+|Test coverage|EPL 1.0|Backend
+
+|javax.mail.mail|1.4
+a|
+[source,xml]
+----
+<dependency>
+    <groupId>javax.mail</groupId>
+    <artifactId>mail</artifactId>
+    <version>1.4</version>
+</dependency>
+----
+|Mail|CDDL GLP 2.0|Backend
+|=========================================================
+
+== System Scope and Context
+
+=== Business Context
+
+The user module 'Planned Grid Measures' communicates via Restful Webservices with the follwowing modules
+(see also figure 1):
+
+* *Core Module 'Auth & Auth'* The 'Planned Grid Measures' can only be used by authorized users.
+   Therefore, it is essential to invoke the module 'Auth & Auth' for authorization and authentication
+   purposes.
+* *Domain Module 'CIM-Cache'* The 'Planned Grid Measures' needs the information about the inventory
+  (network topology) of the network operator.
+  Therefore, it is essential to invoke the module 'CIM-Cache' to load this data.
+* *Core Module 'SCADA Adapter'* The 'Planned Grid Measures' transfers information to the SCADA-system via
+  the module 'SCADA-Apdapter'. Therefore, it must provide an interface for receiving the according data.
+
+.System-Context of 'Planned Grid Measures'
+[options="header,footer"]
+[plantuml]
+----
+
+
+Node SCADA {
+  component "SCADA Adapter"
+}
+
+
+Node AUTH_N_AUTH {
+  component "Auth&Auth"
+}
+
+
+Node CIM_CACHE {
+  component "CIM-Cache"
+}
+
+
+SCADA--sca_api
+AUTH_N_AUTH--ana_api
+CIM_CACHE--cim_api
+
+Node PLANNED_GRID_MEASURES {
+    component "Planned Grid Measures"
+}
+
+
+PLANNED_GRID_MEASURES-->ana_api : use
+PLANNED_GRID_MEASURES-->cim_api : use
+PLANNED_GRID_MEASURES-->sca_api : use
+
+
+
+----
+
+
+
+
+
+
+
+=== Technical Context
+
+The following aspects have to be taken into account for external communication of the module 'Planned Grid Measures':
+
+* RESTful web services are used as interface-technology.
+* Each external interface (interfaces between modules or external systems) has to be documented.
+* Dependencies of modules to services realized by other modules have to be specified and documented explicitly.
+* When CIM is not appropriate (like access management), other standards in their respective domain shall be taken into account first to avoid proprietary and inaccurate interfaces. The interface has also be documented in the overall openKONSEQUENZ interface profile and it should use REST & XML.
+
+The interfaces of the module 'Planned Grid Measures' are described in the interface documentation.
+
+=== Solution Strategy
+
+The module 'Planned Grid Measures' bases on a three-tier architecture:
+
+. *Frontend* - The GUI is implemented as a web-frontend with rich-client functionalities.
+. *Backend* - The business functionalities are implemented in the backend tier. It provides the business functions via RESTful Webservices.
+. *Database* - The database stores all module specific data.
+
+TODO: microservices ergänzen
+
+== Building Block View
+
+=== Whitebox Overall System
+
+The module 'Planned Grid Measures' contains two components (see figure 2):
+
+. *UI* - Represents the graphical user interface and consumes the services from the Business logic component via RESTful webservices.
+. *Business Logic* - Realizes the business functionality and the data storage of the module. The
+module itself is split up in several components due to the requirement to use
+microservices.
+
+.Module components
+[options="header,footer"]
+[plantuml]
+----
+node Module {
+    rectangle UI
+    rectangle BusinessLogic
+
+    interface REST
+
+    UI -> REST
+    REST -- BusinessLogic
+}
+----
+
+
+Bases on the abstract concept mentioned above, the following figure shows the concrete realization of the main components.
+The mapping from the abstract to the concrete view is as follows:
+
+. UI
+ - plannedGridMeasuresFE-SPA
+. Business Logic
+ - MICS-HOME: (project independent webapplication)
+ - MICS-CENTRAL: (project independent service distribution and
+ service dispatcher.
+ - planned-grid-measures.war (Backend: Rest-Service)
+ - planned-grid-measures-DB
+
+.Distribution of components
+[options="header,footer"]
+[plantuml]
+----
+node ClientComputer {
+    node WebBrowser {
+        component (PlannedGridMeasureFE SPA)
+    }
+}
+
+node DMZ {
+    node ApacheTomcat {
+        component (mics-home.war RESTService)
+    }
+}
+
+node openKonsequenz_LAN {
+
+
+    node PostgresDMBS {
+        component (PlannedGridMeasures database)
+    }
+    node MICS.CENTRAL {
+        component (mics-central.jar)
+    }
+    node Auth_n_Auth.Module {
+        component (auth_n_auth.war)
+    }
+    node PlannedGridMeasuresBackend {
+        component (planned-grid-measures.jar)
+    }
+    node KeyCloak {
+      component (Keycloak Server)
+    }
+    node CimCache {
+          component (Cim Cache)
+    }
+}
+
+WebBrowser --> ApacheTomcat
+ApacheTomcat --> MICS.CENTRAL
+MICS.CENTRAL --> PlannedGridMeasuresBackend
+MICS.CENTRAL --> Auth_n_Auth.Module
+MICS.CENTRAL --> CimCache
+PlannedGridMeasuresBackend --> PostgresDMBS
+Auth_n_Auth.Module --> KeyCloak
+----
+
+The communication between WebBrowser and Apache Tomcat is established via HTTP/HTTPS.
+ApacheTomcat is connected to the data source (PostgresDBMS) via TCP/IP.
+
+The structure of the backend is based on microservices. To do so we are using "Dropwizard" framework.
+Dropwizard is an open source Java framework for developing high-performance RESTful backends.
+Dropwizard provides the most useful Java libraries, which you need to deploy a RESTful application, into one embedded application package.
+The most important are:
+
+ * Embedded Jetty: Every application is packaged as a jar instead of war file and starts its own embedded jetty container. There is no WAR file and no external servlet container.
+
+ * JAX-RS: Jersey (the reference implementation for JAX-RS) is used to write RESTful web services.
+
+ * JSON: The REST services speaks JSON. Jackson library is used to do all the JSON processing.
+
+ * Logging: It is done using Logback and SLF4J.
+
+ * Hibernate Validator: Dropwizard uses Hibernate Validator API for declarative validation.
+
+ * Metrics: Dropwizard has support for monitoring using the metrics library. It provides unparalleled insight into what our code does in production.
+
+==== plannedGridMeasureFE SPA
+
+This component implements the presentation logic for the *planned-grid-measures*-module using the *Angular*-TypeScript
+framework. The Frontend is a so called *Single Page Application* (SPA) because
+it behaves like a single HTML-page. 
+
+
+==== planned-grid-measures.jar (Backend tier)
+
+This component implements the business functionality of the planned grid measures. And it provides services, that the
+GridMeasureFE – SPA can use the functions in the frontend.
+
+The "Dropwizard" framework is used to implement this application.
+
+==== mics-central.jar (Backend tier)
+
+This component knows all relevant microservices. The microservices are configured here
+and organized in "distribution clusters". Every Microservice has a unique name
+which identifies it. The main task of the "Mics-Central" is to receive a service request (for example from the
+"Mics-Home" application) and to resolve the call. Knowing all configured services, the central
+finds the matching service for the request using the "name", and forwards the request information. The
+result of the service-request is returned to the caller thereafter.
+
+This component is performing application health checks. That means that it  verifies if a specific component or responsibility is performing correctly.
+
+We are using Dropwizard metrics to implement health checks.
+
+==== mics-home.war (Backend tier)
+
+This component receives all service-calls from the frontend. It is placed parallel to the
+Frontend-SPA with the same HTTP-host and the same Port. Any configuration for the
+frontend is done in it's home application.
+
+==== PlannedGridMeasuresDev-DB (Database tier)
+
+This component stores the data of the planned grid measures. It provides an interface to the planned-grid-measures.jar to create or
+change data in the database.
+
+The PlannedGridMeasuresDev-DB runs on a Postgres DBMS.
+(The decision to use the Postgres DBMS was made by the openKONSEQUENCE archtecture committee)
+
+The pleannedGridMeasures needs information from the system "SCADA". Therefore, it must provide an interface for receiving the according data, see figure 1.
+(see below "Import functionality")
+
+=== Level 2
+
+==== GridMeasureFE – SPA (Frontend tier)
+
+The frontend component implements the concept of a single-page application (SPA). The framework used is Angular5.
+
+It divides the GridMeasureFE into three layers:
+
+. *Components* - The components (Pages, Lists, Dialogs, Common Comp.) represent the presentation layer and the control layer. A component contains the control logic (.ts-file), an HTML-fragment as presentation description (.html-file) and a style definition (.css-file).
+. *Services* - The service component communicates with the interfaces of the backend via HTTP requests by using the model component.
+. *Model* - The model corresponds to the View-Model of the backend tier.
+
+.Frontend tier
+[options="header,footer"]
+[plantuml]
+----
+
+node PlannedGridMeasure_Frontend  {
+    component Model
+
+
+    node Components {
+        component "Pages"
+        component Lists
+        component "Common Components"
+    }
+
+    component Services
+
+    Components --> Services
+    Components --> Model
+    Services --> Model
+}
+
+node "Planned Grid Measure Backend (simplified)" {
+    component RestService
+    component ViewModel_API
+}
+
+Services .. RestService
+Model .. ViewModel_API
+RestService --> ViewModel_API
+----
+
+
+==== planned-grid-measures.war (Backend tier)
+
+The backend tier contains five components which can be summarized in three layers:
+
+. *Presentation layer* - Represented by
+ .. REST-Srv
+ .. View Model
+. *Controller layer* - Represented by
+ ..	Controller
+.	*Model layer* - Represented by
+ ..	DAO
+ ..	Model
+
+
+
+.Backend tier
+[options="header,footer"]
+[plantuml]
+----
+
+node "Planned Grid Measure Backend"  {
+    component Model
+
+
+    component RestService
+
+    component ViewModel_API
+
+    component Controller
+
+    component DAO
+
+    RestService --> ViewModel_API
+    RestService --> Controller
+    DAO --> Model
+    Controller --> DAO
+ }
+
+node DBMS {
+    component PlannedGridMeasuresDB
+}
+
+DAO --> PlannedGridMeasuresDB
+----
+
+==== PlannedGridMeasures-DB (Database tier)
+
+The PlannedGridMeasures-DB is realized as a relational database system.
+
+.Database tier
+[options="header,footer"]
+[plantuml]
+----
+
+node DBMS {
+    component PlannedGridMeasuresDB
+}
+----
+
+
+==== Program Configuration
+In the root-directory of the planned-grid-measure backend there
+is a configuration file named *backendSettings.json*.
+
+[source, json]
+{
+  "reminderPeriod": 48,
+  "bpmnGridConfig": {
+      "skipForApproval": false,
+      "endAfterApproved": false,
+      "skipRequesting": false,
+      "endAfterReleased": false,
+      "skipInWork": false
+  },
+  "emailTemplateAddressesForNotification": "approvedEmailTemplate, canceledEmailTemplate",
+  "reloadMailAddressesInMin": 1
+}
+
+The following configurations can be done in this file:
+
+- reminderPeriod: Number of hours before now, used to highlight gridmeasures
+- bmpnGridConfig.*: Switches for the process workflow:
+
+ .. skipAfterApproval=true will skip the approval-subworkflow
+ .. endAfterApproved=true will end the whole process when the gridmeasure is
+ approved
+ .. skipRequesting=true will skip the requesting-subworkflog
+ .. endAfterReleased=true will stop the process, once the gridmeasure is has
+ the status released
+ .. skipAfterWork=true will jump over the process after work
+
+[TIP]
+The names of the workflow switches are also used in the *roleAccessConfiguration*
+json file (see below).
+
+- emailTemplateAddressesForNotification: Mail-addresses enlisted in these email-templates
+  will automatically show up in the field 'E-Mail-Adresse' in a new Gridmeasure.
+
+- reloadMailAddressesInMin: There is a routine to load all available mail-addresses from
+  the database to a cache (for autocomplete function of mail-addresses). Here is set, in which
+  time-intervall this routine shall start again (in minutes).
+
+
+
+In Backend tier we are using a JSON file to configure
+the editing rights of a role and
+the controlling rights of a user accordingly to the grid measure status.
+
+This JSON file is located in *roleAccessConfiguration folder.
+
+The structure of this JSON file is:
+
+[source, json]
+{
+    "editRoles": [
+        {
+            "name": "planned-policies-measureapplicant",
+            "gridMeasureStatusIds": [
+                0
+            ]
+        },
+        ...
+    ],
+    "controls": [
+        {
+            "gridMeasureStatusId": 0,
+            "activeButtons": [
+                "apply",
+                "save"
+            ],
+            "inactiveFields": [
+                "statusId",
+                "modUser",
+                "id",
+                "applicantControl"
+            ]
+        },
+         {
+            "gridMeasureStatusId": 0,
+            "activeButtons": [
+                "apply",
+                "save"
+            ],
+            "inactiveFields": [
+                "statusId",
+                "modUser",
+                "id",
+                "applicantControl"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 1,
+            "activeButtons": [
+                "cancel",
+                "[skipForApproval:false]forapproval",
+                "[skipForApproval:true]approve",
+                "save"
+            ],
+            "inactiveFields": [
+                "createUserDepartment",
+                "modUserDepartment",
+                "id",
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "goToGridMeasureDetailBtn"
+            ]
+        },
+        ...
+    ]
+}
+
+There are two objects in this JSON file. The first one (*editRoles*) controls
+which statutes (with status is meaning a grid measure with a specific status e.g New or Applied)
+can a role edit and the second (*controls*) which buttons and fields are active
+in the grid measure detail page for each status.
+
+** *editRoles*: this object is an array. There are as many elements as the roles.
+Each element of this array has two members.
+The *name* member contains the role of the user and the *gridMeasureStatusIds* contains the grid measures statuses,
+which this role can edit.
+The second member is an array, which means that a user-role can edit more than one statuses.
+
+** *controls*: this object is also an array. This array has as many
+elements as the statuses are. Each of these elements has three members.
+The first one, *gridMeasureStatusId*, is the status of the grid measure.
+For each status are the active buttons (*activeButtons*) and
+the inactive fields (*inactiveFields*) defined. Both, buttons and fields, are arrays.
+
+[TIP]
+The workflow switches can be used to toggle the visibility of buttons.
+Example: Look at
+the line *[skipForApproval:false]forapproval*. The button *forapproval* will
+only be shown, if the workflow-switch is configured to *false*.
+
+
+
+==== E-Mail Configuration
+The E-Mail is been configured in the Backend tier. There are 3 steps for the E-Mail Configuration:
+
+. *SMTP Settings* are configured in the according yml-file found in the root folder of the microservice.
+  (For Example:  'prodserver.yml' is located next to 'planned-grid-measures.jar')
+  "sender" is the general email sender address for every e-mail.
+
+[source, yml]
+{
+  ...
+  emailConfiguration:
+    smtpHost: localhost
+    port: 1025
+    sender: testSenderDevServer@test.de
+  ...
+}
+
+[start=2]
+. *E-Mail Templatepaths* are configured in the 'mailTemplatesPaths.json' to be found in the folder 'emailConfiguration' also
+  which is found in the root folder.
+
+
+[source, json]
+{
+  "appliedEmailTemplate": "emailConfiguration/emailTemplates/appliedEmailTemplate.txt",
+  "cancelledEmailTemplate": "",
+  "rejectedEmailTemplate": "",
+  "approvalEmailTemplate": ""
+}
+
+[start=3]
+. These *E-Mail-Templates* are to be found where you have configured them in Step 2.
+  These Templates are txt-files which have to have the following structure:
+
+....
+To: test1Recipient@test.de, test2Recipient@test.de
+CC: testCCRecipient@test.de, test2CCRecipient@test.de
+Subject: Die Maßnahme $gridMeasureTitle$ mit Beginn: $plannedStarttimeFirstSinglemeasure$ wurde in den Status Beantragt geändert.
+
+Body:
+
+Sehr geehrte Damen und Herren,
+
+die im Betreff genannte Maßnahme ist über folgenden Link erreichbar:
+
+$directMeasureLink$
+
+Mit freundlichen Grüßen
+
+Ihre Entwickler-Team der PTA GmbH
+....
+
+*Structure Keywords* are `To:` ,`CC:`,`Subject:`, and `Body:`. After `Body:` is where you put the content of your E-Mail the other
+keywords are self-explanatory.
+
+Then you have also *Content Keywords* starting and ending with a dollar sign like '$directMeasureLink$'
+these keywords will be replaced according to their scope of application.
+
+*Content Keywords List*
+
+.Content Keywords
+|===
+|Keyword |Explanation
+
+|$gridMeasureTitle$
+|Titel der Maßnahme
+
+|$plannedStarttimeFirstSinglemeasure$
+|Beginn der ersten geplanten Einzelmaßnahme
+
+|$directMeasureLink$
+|Direkter Link zur Netzmaßnahme
+
+|===
+
+
+
+== Runtime View
+
+=== Login / Authentication
+
+
+There is no login page, since the openK-Portal-Application is responsible for Authentication and
+the whole SSO (single sign on) process.
+Therefore the elogbook application has to be started by providing a valid authentication token.
+This token is a JWT (JSON Web Token).
+
+.plannedGridMeasure application is called by the *portal* application. The User is already logged in
+[plantuml]
+....
+actor User
+participant PortalFrontend
+participant PortalBackend
+participant GridMeasureFrontend
+entity GridMeasureStorage
+participant GridMeasureBackend
+
+
+User->PortalFrontend: Start GridMeasure(JWT)
+PortalFrontend->GridMeasureFrontend: nav. to frontend-URL with JWT
+GridMeasureFrontend->GridMeasureStorage: Extract JWT and store token in session
+... some delay ...
+GridMeasureFrontend->GridMeasureBackend: Call any secured service with JWT
+group Call secured service
+
+    GridMeasureBackend->PortalBackend: "/checkAut(JWT)"
+    group Authorization succeeded
+        GridMeasureBackend->GridMeasureBackend: run service
+        GridMeasureBackend->GridMeasureFrontend: return service result
+    end
+    group Authorization failed
+        GridMeasureBackend->GridMeasureFrontend: return HTTP Code 401
+    end
+end
+....
+
+=== Plan and approve grid measures
+
+The process how grid measures are planned, approved and requested is shown in the following diagrams:
+The process described there is exactly represented in the code of the backend (package "bpmn/gridmeasure").
+
+image::massnahme_planen_und_genehmigen_1.png[]
+
+image::massnahme_durchfuehren_u_abschliessen_1.png[]
+
+image::massnahme_durchfuehren_u_abschliessen_2.png[]
+
+When the rest service"storeGridMeasure" is called on the backend, the process resumes at the
+process step that corresponds to the existing status (in the database) of the "GridMeasure"
+to be saved.
+
+Example: The gridmeasure with id 5 has the status "FOR_APPROVAL" in the database.
+Now the rest service "storeGridMeasure" is called with a gridmeasure (id=5) having the status "cancelled"
+(="storniert") in the given object.
+
+Because gridmeasure 5 still has the status "FOR_APPROVAL" in the database, the process resumes at
+"<FOR_APPROVAL> Maßnahmeantrag und Ablauf prüfen". The next decision is made looking at the status
+of the grid measure object, passed to the service "storeGridMeasure" (which is "CANCELLED"). This results in "firing"
+PORT2 in the diagram, etc
+
+=== Deployment of the application components
+
+==== Deployment of the frontend
+
+The Frontend SPA is built as a folder, that contains all the required files for
+the application. When deploying the frontend application, the content of the "dist"-folder
+within the Frontend development-directory has to be copied into the
+target-directory of the apache-tomcat:
+
+ <Apache-Tomcat>/webapps/plannedGridMeasuresFE
+
+If the target folder does not exist, it has to be created manually.
+
+==== Deployment of the backend
+TODO:
+
+==== Deployment of the database
+The component "Flyway" is used to make to distribute structural
+or content related changes to the database.
+
+The database is built out of the scripts in the directory "db/migrations". Every sql
+script contains the complete db script for the grid measure database (in different versions).
+The highest version number indicates the currently valid script.
+
+==== Configuration of the system
+
+===== DB based configuration
+
+TODO: _fd -> extract configuration script!
+
+. Grid territories - The grid-territories have to be configured in the DB-Table *ref_grid_territory*
+
+Please modify the "03_config_DB_*.sql" script (in "<elogbook backend project dir>\db\postgreSQL" ) to change the
+configuration. (This file is contained in the *oracle* folder as well.
+
+===== Configuration of the webserver
+
+There exists the file *context.xml* in the "conf" subdirectory (*<TOMCAT>/conf*) of the target apache tomcat installation.
+Add the following parameter and resource in order to access the correct mics-home configuration:
+
+.context.xml
+[source,xml]
+----
+[...]
+<!-- The contents of this file will be loaded for each web application -->
+<Context>
+
+    <!-- Default set of monitored resources. If one of these changes, the    -->
+    <!-- web application will be reloaded.                                   -->
+    <WatchedResource>WEB-INF/web.xml</WatchedResource>
+    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
+
+    <!-- Parameter for different backend configs  -->
+    <Parameter name="OK_PORTAL_ENVIRONMENT" override="false" value="Production"/>
+	<Parameter name="OK_MICS_HOME_ENVIRONMENT" override="false" value="Production"/>
+
+[...]
+----
+
+If you configure the parameter "OK_MICS_HOME_ENVIRONMENT" to the value "Production", then
+the configuration file "<TOMCAT>/webapps/mics-home-service/WEB-INF/classes/backendConfigProduction.json
+will be used.
+
+===== Configuration of the planned grid measures backend
+
+When starting the microservice of the planned grid measures backend you have to provide a configuration "YML"
+file.
+
+TODO: Describe configuration possibilities.
+
+
+
+=== CI- and CD-Components
+
+==== GIT-Repository
+
+Frontend Repository:
+http://git.eclipse.org/c/elogbook/elogbookFE.git/
+
+Backend Repository (containing this documentation and the db creation scripts)
+http://git.eclipse.org/c/elogbook/elogbook.git/
+
+
+=== Continuous Deployment
+
+The continuous deployment is realized on two platforms:
+
+ * the development platform (Dev-Environment)
+ * the quality platform (Q-Environment)
+
+The automatic deployment on both of the environments is
+directly linked to the branches on the GIT-repositories:
+
+. "SNAPSHOT" or "DEVELOP"
+. "MASTER" or "TRUNC"
+
+The running development is exclusively made on the Snapshot-Branch. Every time
+a developer checks in (pushes) code to the repository, an automatic build
+starts on the hudson ci-server. If the Snapshot-build is successful, then
+outcome of that build is directly deployed on the Dev-Environment.
+
+At the end of a scrum sprint or when a big userstory is realized, all
+the code changes are merged from the *Snapshot*-Branch to the *Trunc*.
+This automatically triggers the build and the deployment on the
+Q-Environment.
+
+
+== Design Decisions
+
+All architecture decisions based on the Architecture Committee Handbook. There are no deviations.
+
+== Risks and Technical Debts
+
+(Currently there aren't any known issues)
+
+<<<
+
+== Glossary
+
+.Abbreviations and glossary terms
+[options="header,footer"]
+|========================================================
+|Short|Long|German|Description
+|AC|Architecture Committee|Architektur-Komittee|Gives Framework and Constraints according to architecture for oK projects.
+|CNCU|Central Network Control Unit||
+|DAO|Data Access Objects||
+|DSO|Distribution System Operator|Verteilnetz-betreiber (VNB)|Manages the distribution network for energy, gas or water.
+|EPL|Eclipse Public License||Underlying license model for Eclipse projects like elogbook@openK
+|ESB|Enterprise Service Bus||Central instance for exchange of data to overcome point-to-point connections.
+|GNM|Geplante Netzmaßnahme||German name of the module 'Planned Grid Measures'
+|oK|openKONSEQUENZ|openKONSEQUENZ|Name of the consortium of DSOs
+|QC|Quality Committee|Qualitätskomitee|Gives framework and constraints according to quality for oK projects.
+|SCADA|Supervisory Control and Data Acquisition|Netzleitsystem|System, that allows DSOs view/control actual parameters of their power grid.
+|========================================================
diff --git a/src/main/asciidoc/howto/howtoBuild.adoc b/src/main/asciidoc/howto/howtoBuild.adoc
new file mode 100644
index 0000000..9f45d43
--- /dev/null
+++ b/src/main/asciidoc/howto/howtoBuild.adoc
@@ -0,0 +1,79 @@
+////
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+////
+= openKonsequenz - How to build the module "eLogbook@openK"
+:Date: 2017-11-17
+:Revision: 1
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+<<<
+
+IMPORTANT: Please be sure that you have first *Portal (Auth n Auth)* installed and configured!
+
+== Requirements
+* Node.js 6.10.3
+* Angular-CLI
+* Graphviz
+
+== How to build the Backend
+To build the backend you need to have installed Apache Maven and Java (look at `/deploy/`*get_started.txt*).
+
+=== Install Graphviz
+Graphviz is open source graph visualization software. You need this software because of auto-generated graphics in the documentations.
+
+* Download and install Graphviz from http://www.graphviz.org/Download_windows.php
+* If not, set the PATH variable
+
+ Name of variable: GRAPHVIZ_DOT
+ Value of variable: <GRAPHVIZ_DIR>\bin\dot.exe
+
+
+== How to build the Frontend
+
+=== Install Node.js
+
+Node.js is an open-source, cross-platform JavaScript run-time environment for executing JavaScript (also Typescript which is a strongly typed form of JavaScript) code server-side.
+
+* Download Node.js 6.10.3 from https://nodejs.org/download/release/v6.10.3/ by clicking on a xxx.msi image for windows.
+* Run the downloaded Node.js .msi Installer - including accepting the license, selecting the destination, and authenticating for the install.
+This requires Administrator privileges, and you may need to authenticate
+* To ensure Node.js has been installed, run the following in your terminal - you should get something like v6.10.0
+
+[source,command]
+----
+    $ node -v
+----
+{blank}
+
+=== Update the npm Angular-CLI client
+This package manager comes bundled with Node.js and its good to have the latest version.
+
+* Open a command line and navigate to the root folder of the frontend project
+* Run the following commands (the version is defined in the package.json file):
+
+[source,command]
+----
+    $ npm install --save-dev @angular/cli
+----
+{blank}
+
+[source,command]
+----
+    $ npm install
+----
+{blank}
+
+TIP: Next Step -> Read the *howtoRun* file!
+
+
+
diff --git a/src/main/asciidoc/howto/howtoRun.adoc b/src/main/asciidoc/howto/howtoRun.adoc
new file mode 100644
index 0000000..8e6902b
--- /dev/null
+++ b/src/main/asciidoc/howto/howtoRun.adoc
@@ -0,0 +1,324 @@
+////
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+////
+= openKonsequenz - How to run the module "Plannedgridmeasures"
+:Date: 2018-06-25
+:Revision: 1
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+<<<
+
+IMPORTANT: Please be sure that you have first *Portal (Auth n Auth)* installed and configured!
+
+== Requirements
+* Java 8 Runtime Environment
+*  Build-Artifacts (look at *howtoBuild* or you get them from a Jenkins source as zip):
+** MicsHomeService Backend
+** MicsCentralService Backend-Microservice
+** PlannedGridMeasures Backend-Microservice
+** PlannedGridMeasures Frontend
+
+== Prerequisites
+
+* *To see this application running you have to run Portal application too.* The reason is the authentication, which happened in the Portal login phase.
+
+==== Install and Configure Apache Tomcat
+Tomcat is an open-source Java Servlet Container and provides a "pure Java" HTTP web server environment in which Java code can run.
+
+1. Download Tomcat version 8.5.24 from https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin
+and extract it (apache-tomcat-8.5.24.zip).
+2. Configure Tomcat:
+ a. Configure the *context.xml* file. Copy the *<Resource … >* block from the project file `deploy/conf/`*context.xml*
+and paste it in the `<tomcat>/conf/`*context.xml* in the *<Context>* block.
+
+b. Dont forget to save it.
+
+
+TIP: For more informations check *Deployment View* Chapter in *http://87.128.212.254:8880/gridMeasuresADoc/architectureDocumentation.html[PlannedGridMeasures Architecture Documentation]*.
+
+** Tomcat also needs the database driver to be placed in `<tomcat>/lib`. Find it in the project file `deploy/lib/`*postgresql-xxx.jar*.
+
+TIP: It's recommend to install a service for starting and stopping the Apache Tomcat.
+
+==== Install and Configure a PostgreSQL database
+
+* A developing and administrating software for databases
+
+** To work with a postgreSQL database is pgAdmin suggested
+
+1. Download and install pgAdmin (version 3 is used during developing process) from:
+        https://www.pgadmin.org/download/
+2. Create a database and adapt the `<tomcat>/conf/`*context.xml* file to your database (look at *Install and Configure Apache Tomcat*).
+
+3. To initialize the database schema run the last sql script:
+
+  /db/migrations/V0_XX__CREATE_PLGM_DB.sql
+
+TIP: It's recommend to install a service for starting and stopping the PostgreSQL database.
+
+TIP: For detailed instructions look at *http://87.128.212.254:8880/gridMeasuresADoc/architectureDocumentation.html[PlannedGridMeasures Architecture Documentation]*.
+
+== How to deploy and run the Backend
+To run the backend you need to have installed and configured Apache Tomcat (look at *Install and Configure Apache Tomcat*).
+The Backend exists of 3 Artifacts:
+
+** One Web Application Archive (war) file which is deployed on a Apache Tomcat
+*** MicsHomeService (*mics-home-service.war*)
+** Two Java Archives (jar) started as Microservices
+*** MicsCentralService Backend-Microservice (*mics-central-service.jar*)
+*** PlannedGridMeasures Backend-Microservice (*planned-grid-measures.jar*)
+
+
+=== Deploy MicsHomeService (war-file) and start Apache Tomcat
+Tomcat needs the Web Application Archive (war) file. Either you got it through a successfully maven build or via zip from a Jenkins source.
+
+1. Copy the *mics-home-service.war* file from the `/target` folder of project "MicsHomeService" (zip or maven-build) in the `<tomcat>/webapps` file. If there is a folder named *mics-home-service*, delete it before.
+2. Navigate to your `apache-tomcat-8.5.24\bin` folder and start Tomcat by clicking on *startup.bat* (Windows) or executing *startup.sh* (Linux).
+* Tomcat's default port is *8080*.
+
+[source,text]
+----
+If 8080 port is already in use, you have to change tomcat's port as follows:
+- Go to <tomcat>/conf folder
+- Open server.xml file and search for "Connector port"
+- Replace "8080" by your port number (for example 8181)
+- Restart tomcat server (in the same folder which startup.bat is located, you can also find a shutdown.bat file).
+----
+IMPORTANT: If you change the port number you have also adapt the port in the
+frontend project: File "<PRJ_plannedGridMeasuresFE>/proxy.conf.json"
+
+[start=3]
+3. Stop your the Apache Tomcat.
+4. Navigate to `webapps/mics-home-service/WEB-INF/classes` and open *backendConfigProduction.json*
+
+----
+{
+  "micsDistributionCluster" : "openK",
+  "micsCentralURL" : "http://169.50.13.154:9010/mics/central",
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
+}
+----
+[start=5]
+5. Set the "micsCentralURL" accordingly. Change the IP to the server where the MicsCentralService Microservice is/will be installed on.
+6. Start your Apache Tomcat.
+
+
+=== Deploy and start Microservices
+
+==== Microservices File Structures
+Doesn't matter if you got the artifacts as a zip file from a Jenkins source or as a maven built result (look at *howtoBuild*),
+the final structure and existence of the files/folders has to look like the following layout (see File/Folder Structure below) after you deployed it to your choosen
+folder.
+
+a. If you got it as zip it should already has the correct structure after extraction. (ignore b.)
+b. If you have a maven built:
+* The needed jar-file is always in the `/target` folder of the related project folder after a successfully maven build (look at *howtoBuild*).
+The other needed files and folders are in the root folder `/` of the related project after a successfully maven build.
+
+==== MicsCentralService Backend-Microservice
+
+===== File/Folder Structure
+----
+<yourChoosenFolder_MicsCentralService>/mics-central-service.jar
+                                      /serviceConfig_QA.yml
+                                      /servicesDistributionQAServer.json
+----
+===== Configuring and starting the microservice
+The name of `*.yml` file can be changed but you have to use the same file as starting parameter when starting
+the microservice later on. In our example it's `serviceConfig_QA.yml`.
+
+*serviceConfig_QA.yml*
+----
+servicesDistributionFileName: servicesDistributionQAServer.json
+
+
+logging:
+  level: INFO
+  appenders:
+    - type: file
+      currentLogFilename: /opt/mics/logs/mics-central-service.log
+      threshold: ALL
+      archive: true
+      archivedLogFilenamePattern: /opt/mics/logs/mics-central-service-%d.log
+      archivedFileCount: 5
+      timeZone: UTC
+  loggers:
+    org.eclipse.openk: DEBUG
+    org.eclipse.jetty.servlets: DEBUG
+
+server:
+  applicationConnectors:
+  - type: http
+    port: 9010
+  adminConnectors:
+  - type: http
+    port: 9011
+
+
+----
+
+** servicesDistributionFileName: The file name of the configuration for the intercommunictaion between the services (see below).
+** applicationConnectors: Type and port on which the microservice is running.
+The latest set of socalled "service distribution cluster" can be found in the Architecture documentation.
+
+
+*servicesDistributionQAServer.json*
+----
+{
+    "active": "true",
+    "clustername": "openK",
+    "description": "service cluster for openKonsequenz",
+    "distributions": [
+      {
+        "active": "true",
+        "name": "planned-grid-measures.openK",
+        "protocol": "http",
+        "host": "169.50.13.154",
+        "urlPath": "/mics/gridmeasures",
+        "portApp": "9050",
+        "portHealth": "9051",
+        "description": "Planned Grid Measures Backend"
+      },
+      {
+        "active": "true",
+        "name": "authNauth.openK",
+        "protocol": "http",
+        "host": "169.50.13.154",
+        "urlPath": "/portal/rest/beservice",
+        "healthUrlPath": "/portal/rest/beservice",
+        "portApp": "8080",
+        "portHealth": "8080",
+        "description": "Auth&Auth-Modul"
+      },
+      {
+        "active": "true",
+        "name": "mics-central-service",
+        "protocol": "http",
+        "host": "169.50.13.154",
+        "urlPath": "/mics/central",
+        "portApp": "9010",
+        "portHealth": "9011",
+        "description": "Mics Central Service-Configures and dispatches different service clusters for different modules"
+      }
+    ]
+  }
+----
+
+
+** "name" : Name of the service (must not be changed, since it hardwired in the client-applications!)
+** "protocol" : HTTP or HTTPS
+** "host" : IP of the server where the service can be reached
+** "urlPath" : (must not be changed)
+** "portApp" : Port of the service. For example for `mics-central-service` its `9010` because thats what we
+ configured in the related `serviceConfig_QA.yml` under `applicationConnectors` -> `type` and `port`.
+** "portHealth": Port of the dropWizard-Health-Service.
+** "description" : Description of the service
+
+The microservice can now be started via Java-Runtime in a console from your <yourChoosenFolder_MicsCentralService>:
+
+Remeber to use the *.yml file whaterver you renamed it to as parameter like below, in our example it's `serviceConfig_QA.yml`:
+----
+java -jar mics-central-service.jar server serviceConfig_QA.yml
+----
+
+TIP: It's recommend to install this java microservice execution as a service.
+
+==== PlannedGridMeasures Backend-Microservice
+
+===== File/Folder Structure
+----
+<yourChoosenFolder_PlannedGridMeasures>/planned-grid-measures.jar
+                                       /qserver.yml
+                                       /roleAccessConfiguration/role-access-definition.json
+                                       /emailConfiguration/mailTemplatesPaths.json
+                                       /emailConfiguration/emailTemplates/<MULTIPLE_EMAIL_TEMPLATES>.txt
+----
+===== Configuring and starting the microservice
+The name of `*.yml` file can be changed but you have to use the same file as starting parameter when starting
+the microservice later on. In our example it's `qserver.yml`.
+
+*qserver.yml*
+----
+persistencyUnit: planned-grid-measures-devserver
+portalBaseURL: http://localhost:8080/portal/rest/beservice
+whiteListDocumenttypes: application/pdf,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,image/png,image/jpeg
+
+
+dbConn:
+  driver: org.postgresql.Driver
+  url: jdbc:postgresql://localhost:5432/plannedgridmeasuresqa
+  user: plgm_service
+  password: plgm_service
+
+emailConfiguration:
+  smtpHost: localhost
+  port: 1025
+  sender: testSenderDevServer@test.de
+
+logging:
+  level: INFO
+  appenders:
+    - type: file
+      currentLogFilename: /opt/mics/logs/planned-grid-measures.log
+      threshold: ALL
+      archive: true
+      archivedLogFilenamePattern: /opt/mics/logs/planned-grid-measures-%d.log
+      archivedFileCount: 5
+      timeZone: UTC
+  loggers:
+    org.eclipse.openk: DEBUG
+    org.eclipse.jetty.servlets: DEBUG
+
+server:
+  applicationConnectors:
+  - type: http
+    port: 9050
+  adminConnectors:
+  - type: http
+    port: 9051
+
+----
+** portalBaseURL: The URL to the Auth&Auth Module (Backend)
+** whiteListDocumenttypes: File types you want to allow for upload in *MIME-Type*
+(https://wiki.selfhtml.org/wiki/MIME-Type/%C3%9Cbersicht)
+** dbConn: Configuration of your postgreSQL database
+** applicationConnectors: Type and port on which the microservice is running
+
+
+The microservice can now be started via Java-Runtime in a console from your <yourChoosenFolder_PlannedGridMeasures>.
+Remeber to use the *.yml file whaterver you renamed it to as parameter like below, in our example it's `qserver.yml`:
+
+----
+java -jar planned-grid-measures.jar server qserver.yml
+----
+
+TIP: It's recommend to install this java microservice execution as a service.
+
+TIP: Look at the *http://87.128.212.254:8880/gridMeasuresADoc/architectureDocumentation.html[PlannedGridMeasures Architecture Documentation]* for informations about the services.
+
+== How to deploy and run the Frontend
+Go to `<tomcat>/webapps` folder, if there is a folder named *plannedGridMeasures*, delete it before.
+If you got it from a Jenkins source as zip extract the content to the `<tomcat>/webapps` folder.
+If you have a maven-build, copy the content of the `dist` folder in the project folder of "PlannedGridMeasures Frontend" to `<tomcat>/webapps/plannedGridMeasures`.
+
+Nevertheless guarantee the following file/folder structure after extraction/copying:
+----
+<tomcat>/webapps/plannedGridMeasures
+<tomcat>/webapps/plannedGridMeasures/index.html
+<tomcat>/webapps/plannedGridMeasures/*.*
+<tomcat>/webapps/plannedGridMeasures/assets/*.*
+----
+
+
+
diff --git a/src/main/asciidoc/images/BackendTier.png b/src/main/asciidoc/images/BackendTier.png
new file mode 100644
index 0000000..3b626ec
--- /dev/null
+++ b/src/main/asciidoc/images/BackendTier.png
Binary files differ
diff --git a/src/main/asciidoc/images/DatabaseTier.png b/src/main/asciidoc/images/DatabaseTier.png
new file mode 100644
index 0000000..6225be2
--- /dev/null
+++ b/src/main/asciidoc/images/DatabaseTier.png
Binary files differ
diff --git a/src/main/asciidoc/images/DistributionOfComponents1.png b/src/main/asciidoc/images/DistributionOfComponents1.png
new file mode 100644
index 0000000..44bd6c8
--- /dev/null
+++ b/src/main/asciidoc/images/DistributionOfComponents1.png
Binary files differ
diff --git a/src/main/asciidoc/images/FrontendTier.png b/src/main/asciidoc/images/FrontendTier.png
new file mode 100644
index 0000000..d820cc5
--- /dev/null
+++ b/src/main/asciidoc/images/FrontendTier.png
Binary files differ
diff --git a/src/main/asciidoc/images/SolutionArchitecture.png b/src/main/asciidoc/images/SolutionArchitecture.png
new file mode 100644
index 0000000..bc731ac
--- /dev/null
+++ b/src/main/asciidoc/images/SolutionArchitecture.png
Binary files differ
diff --git a/src/main/asciidoc/images/SystemContext.png b/src/main/asciidoc/images/SystemContext.png
new file mode 100644
index 0000000..cd194ce
--- /dev/null
+++ b/src/main/asciidoc/images/SystemContext.png
Binary files differ
diff --git a/src/main/asciidoc/images/icons/caution.png b/src/main/asciidoc/images/icons/caution.png
new file mode 100644
index 0000000..9a8c515
--- /dev/null
+++ b/src/main/asciidoc/images/icons/caution.png
Binary files differ
diff --git a/src/main/asciidoc/images/icons/important.png b/src/main/asciidoc/images/icons/important.png
new file mode 100644
index 0000000..be685cc
--- /dev/null
+++ b/src/main/asciidoc/images/icons/important.png
Binary files differ
diff --git a/src/main/asciidoc/images/icons/note.png b/src/main/asciidoc/images/icons/note.png
new file mode 100644
index 0000000..7c1f3e2
--- /dev/null
+++ b/src/main/asciidoc/images/icons/note.png
Binary files differ
diff --git a/src/main/asciidoc/images/icons/tip.png b/src/main/asciidoc/images/icons/tip.png
new file mode 100644
index 0000000..f087c73
--- /dev/null
+++ b/src/main/asciidoc/images/icons/tip.png
Binary files differ
diff --git a/src/main/asciidoc/images/icons/warning.png b/src/main/asciidoc/images/icons/warning.png
new file mode 100644
index 0000000..d41edb9
--- /dev/null
+++ b/src/main/asciidoc/images/icons/warning.png
Binary files differ
diff --git a/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_1.png b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_1.png
new file mode 100644
index 0000000..b797b5c
--- /dev/null
+++ b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_1.png
Binary files differ
diff --git a/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_2.png b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_2.png
new file mode 100644
index 0000000..eed4434
--- /dev/null
+++ b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_2.png
Binary files differ
diff --git a/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_3.png b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_3.png
new file mode 100644
index 0000000..fe656c2
--- /dev/null
+++ b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_3.png
Binary files differ
diff --git a/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_4.png b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_4.png
new file mode 100644
index 0000000..b7323cf
--- /dev/null
+++ b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_4.png
Binary files differ
diff --git a/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_neu1.png b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_neu1.png
new file mode 100644
index 0000000..6088fbe
--- /dev/null
+++ b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_neu1.png
Binary files differ
diff --git a/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_neu2.png b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_neu2.png
new file mode 100644
index 0000000..1df8288
--- /dev/null
+++ b/src/main/asciidoc/images/massnahme_durchfuehren_u_abschliessen_neu2.png
Binary files differ
diff --git a/src/main/asciidoc/images/massnahme_planen_und_genehmigen.png b/src/main/asciidoc/images/massnahme_planen_und_genehmigen.png
new file mode 100644
index 0000000..4a2683e
--- /dev/null
+++ b/src/main/asciidoc/images/massnahme_planen_und_genehmigen.png
Binary files differ
diff --git a/src/main/asciidoc/images/massnahme_planen_und_genehmigen_1.png b/src/main/asciidoc/images/massnahme_planen_und_genehmigen_1.png
new file mode 100644
index 0000000..f48431a
--- /dev/null
+++ b/src/main/asciidoc/images/massnahme_planen_und_genehmigen_1.png
Binary files differ
diff --git a/src/main/asciidoc/images/massnahme_planen_und_genehmigen_2.png b/src/main/asciidoc/images/massnahme_planen_und_genehmigen_2.png
new file mode 100644
index 0000000..a44de0e
--- /dev/null
+++ b/src/main/asciidoc/images/massnahme_planen_und_genehmigen_2.png
Binary files differ
diff --git a/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_1.bpmn b/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_1.bpmn
new file mode 100644
index 0000000..04e73fe
--- /dev/null
+++ b/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_1.bpmn
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:collaboration id="Collaboration_12wz08v">
+    <bpmn:participant id="Participant_0otw9c4" name="Antragsteller" processRef="Process_1" />
+    <bpmn:participant id="Participant_1p95h6s" name="Maßnahmeantrag" processRef="Process_0j08xuw" />
+    <bpmn:participant id="Participant_010bjd5" name="Leitsystem" processRef="Process_1z0bvsp" />
+    <bpmn:messageFlow id="MessageFlow_1l1mp73" sourceRef="Participant_0otw9c4" targetRef="IntermediateThrowEvent_0peu6a9" />
+    <bpmn:messageFlow id="MessageFlow_0lmpuxm" sourceRef="IntermediateThrowEvent_0q6p6io" targetRef="Participant_010bjd5" />
+    <bpmn:messageFlow id="MessageFlow_1kg5s6u" sourceRef="EndEvent_1ifo6ny" targetRef="Participant_0otw9c4" />
+    <bpmn:messageFlow id="MessageFlow_0rutzwg" sourceRef="EndEvent_1ifo6ny" targetRef="Participant_010bjd5" />
+    <bpmn:messageFlow id="MessageFlow_0egiz49" sourceRef="IntermediateThrowEvent_0bl3lkd" targetRef="Participant_010bjd5" />
+    <bpmn:messageFlow id="MessageFlow_1cdmhoz" sourceRef="IntermediateThrowEvent_0bl3lkd" targetRef="Participant_0otw9c4" />
+    <bpmn:messageFlow id="MessageFlow_19dm73r" sourceRef="IntermediateThrowEvent_1inljg0" targetRef="Participant_0otw9c4" />
+    <bpmn:messageFlow id="MessageFlow_03ewhg8" sourceRef="IntermediateThrowEvent_1inljg0" targetRef="Participant_010bjd5" />
+    <bpmn:messageFlow id="MessageFlow_1m2y84z" sourceRef="EndEvent_0ymfux1" targetRef="Participant_0otw9c4" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_1" isExecutable="true" />
+  <bpmn:process id="Process_0j08xuw" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_10rg81i" sourceRef="IntermediateThrowEvent_198tcy7" targetRef="IntermediateThrowEvent_0peu6a9" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ktqb7q" sourceRef="IntermediateThrowEvent_0peu6a9" targetRef="Task_1euso4y" />
+    <bpmn:sequenceFlow id="SequenceFlow_1flkn86" name="ja" sourceRef="ExclusiveGateway_001oo0e" targetRef="IntermediateThrowEvent_00cdzsy" />
+    <bpmn:sequenceFlow id="SequenceFlow_1d87js5" name="ja" sourceRef="ExclusiveGateway_1k55f7m" targetRef="IntermediateThrowEvent_0350wsr" />
+    <bpmn:sequenceFlow id="SequenceFlow_1uwbemv" name="nein" sourceRef="ExclusiveGateway_1k55f7m" targetRef="ExclusiveGateway_001oo0e" />
+    <bpmn:sequenceFlow id="SequenceFlow_17449rm" sourceRef="Task_1euso4y" targetRef="ExclusiveGateway_1k55f7m" />
+    <bpmn:sequenceFlow id="SequenceFlow_0u4snq8" name="storniert (JA)" sourceRef="ExclusiveGateway_1aau17v" targetRef="EndEvent_0ymfux1" />
+    <bpmn:sequenceFlow id="SequenceFlow_0m63nnm" name="nein" sourceRef="ExclusiveGateway_001oo0e" targetRef="ExclusiveGateway_1aau17v" />
+    <bpmn:sequenceFlow id="SequenceFlow_1puvmik" name="anfordern (NEIN)" sourceRef="ExclusiveGateway_1aau17v" targetRef="IntermediateThrowEvent_0q6p6io" />
+    <bpmn:sequenceFlow id="SequenceFlow_0rbrfmo" sourceRef="IntermediateThrowEvent_0bl3lkd" targetRef="IntermediateThrowEvent_0lqcxbt" />
+    <bpmn:sequenceFlow id="SequenceFlow_02vwa01" sourceRef="IntermediateThrowEvent_0q6p6io" targetRef="Task_197mpbp" />
+    <bpmn:sequenceFlow id="SequenceFlow_0pgzax1" sourceRef="IntermediateThrowEvent_04ti381" targetRef="IntermediateThrowEvent_0bl3lkd" />
+    <bpmn:sequenceFlow id="SequenceFlow_1unnid8" name="Maßname nicht mehr nötig" sourceRef="ExclusiveGateway_0x9yr4g" targetRef="EndEvent_1ifo6ny" />
+    <bpmn:sequenceFlow id="SequenceFlow_02hfotj" name="Maßnahme zur Zeit nicht möglich" sourceRef="ExclusiveGateway_0x9yr4g" targetRef="IntermediateThrowEvent_04ti381" />
+    <bpmn:sequenceFlow id="SequenceFlow_1w0wd0p" sourceRef="Task_197mpbp" targetRef="ExclusiveGateway_0x9yr4g" />
+    <bpmn:sequenceFlow id="SequenceFlow_1i3z6t7" name="Ja" sourceRef="ExclusiveGateway_0x9yr4g" targetRef="IntermediateThrowEvent_1inljg0" />
+    <bpmn:sequenceFlow id="SequenceFlow_04zp5fs" sourceRef="IntermediateThrowEvent_1inljg0" targetRef="IntermediateThrowEvent_0xoyqwy" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0lqcxbt" name="1">
+      <bpmn:incoming>SequenceFlow_0rbrfmo</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_198tcy7" name="2">
+      <bpmn:outgoing>SequenceFlow_10rg81i</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_0peu6a9" name="Maßnahme anfordern">
+      <bpmn:incoming>SequenceFlow_10rg81i</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_024p0l7</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0ktqb7q</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:task id="Task_1euso4y" name="Maßnahme anfordern &#60;APPROVED&#62;">
+      <bpmn:incoming>SequenceFlow_0ktqb7q</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_17449rm</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0350wsr" name="4">
+      <bpmn:incoming>SequenceFlow_1d87js5</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_00cdzsy" name="5">
+      <bpmn:incoming>SequenceFlow_1flkn86</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_001oo0e" name="Konfig: SkipRequesting">
+      <bpmn:incoming>SequenceFlow_1uwbemv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0m63nnm</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1flkn86</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1k55f7m" name="Konfig: EndAfterApproval">
+      <bpmn:incoming>SequenceFlow_17449rm</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1uwbemv</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1d87js5</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_0ymfux1">
+      <bpmn:incoming>SequenceFlow_0u4snq8</bpmn:incoming>
+      <bpmn:messageEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1aau17v" name="Maßnahme nicht mehr nötig">
+      <bpmn:incoming>SequenceFlow_0m63nnm</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1puvmik</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0u4snq8</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0q6p6io" name="angefordert">
+      <bpmn:incoming>SequenceFlow_1puvmik</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_02vwa01</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0bl3lkd" name="zurückgewiesen">
+      <bpmn:incoming>SequenceFlow_0pgzax1</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0rbrfmo</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:task id="Task_197mpbp" name="Maßnahme und Ablauf überprüfen &#60;REQUESTED&#62;">
+      <bpmn:incoming>SequenceFlow_02vwa01</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1w0wd0p</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_04ti381" name="Status APPLIED setzen">
+      <bpmn:incoming>SequenceFlow_02hfotj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0pgzax1</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:endEvent id="EndEvent_1ifo6ny" name="storniert">
+      <bpmn:incoming>SequenceFlow_1unnid8</bpmn:incoming>
+      <bpmn:messageEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0x9yr4g">
+      <bpmn:incoming>SequenceFlow_1w0wd0p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1unnid8</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_02hfotj</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1i3z6t7</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1inljg0" name="freigegeben">
+      <bpmn:incoming>SequenceFlow_1i3z6t7</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_04zp5fs</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0xoyqwy" name="6">
+      <bpmn:incoming>SequenceFlow_04zp5fs</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_07j0e50" name="3">
+      <bpmn:outgoing>SequenceFlow_024p0l7</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_024p0l7" sourceRef="IntermediateThrowEvent_07j0e50" targetRef="IntermediateThrowEvent_0peu6a9" />
+  </bpmn:process>
+  <bpmn:process id="Process_1z0bvsp" isExecutable="false" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_12wz08v">
+      <bpmndi:BPMNShape id="Participant_0otw9c4_di" bpmnElement="Participant_0otw9c4">
+        <dc:Bounds x="123" y="23" width="1226" height="75" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1p95h6s_di" bpmnElement="Participant_1p95h6s">
+        <dc:Bounds x="123" y="130" width="1228" height="446" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_010bjd5_di" bpmnElement="Participant_010bjd5">
+        <dc:Bounds x="123" y="597" width="1231" height="70" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1l1mp73_di" bpmnElement="MessageFlow_1l1mp73">
+        <di:waypoint xsi:type="dc:Point" x="286" y="98" />
+        <di:waypoint xsi:type="dc:Point" x="286" y="271" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="256" y="177.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1fg67tv_di" bpmnElement="IntermediateThrowEvent_0peu6a9">
+        <dc:Bounds x="268" y="271" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="210" y="250" width="53" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_1euso4y_di" bpmnElement="Task_1euso4y">
+        <dc:Bounds x="321" y="249" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ktqb7q_di" bpmnElement="SequenceFlow_0ktqb7q">
+        <di:waypoint xsi:type="dc:Point" x="304" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="321" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="267.5" y="267" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17449rm_di" bpmnElement="SequenceFlow_17449rm">
+        <di:waypoint xsi:type="dc:Point" x="421" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="445" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="267" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0c394i6_di" bpmnElement="IntermediateThrowEvent_0q6p6io">
+        <dc:Bounds x="845" y="271" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="834" y="248" width="57" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_197mpbp_di" bpmnElement="Task_197mpbp">
+        <dc:Bounds x="1003" y="249" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_02vwa01_di" bpmnElement="SequenceFlow_02vwa01">
+        <di:waypoint xsi:type="dc:Point" x="881" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="1003" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="897" y="267" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0lmpuxm_di" bpmnElement="MessageFlow_0lmpuxm">
+        <di:waypoint xsi:type="dc:Point" x="863" y="307" />
+        <di:waypoint xsi:type="dc:Point" x="863" y="597" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="833" y="445" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0x9yr4g_di" bpmnElement="ExclusiveGateway_0x9yr4g" isMarkerVisible="true">
+        <dc:Bounds x="1125" y="264" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1105" y="317" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1w0wd0p_di" bpmnElement="SequenceFlow_1w0wd0p">
+        <di:waypoint xsi:type="dc:Point" x="1103" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="1125" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1069" y="267" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1unnid8_di" bpmnElement="SequenceFlow_1unnid8">
+        <di:waypoint xsi:type="dc:Point" x="1150" y="264" />
+        <di:waypoint xsi:type="dc:Point" x="1150" y="205" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1114" y="230.4237288135593" width="73" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1qfn9q2_di" bpmnElement="EndEvent_1ifo6ny">
+        <dc:Bounds x="1132" y="169" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1086" y="171" width="40" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1kg5s6u_di" bpmnElement="MessageFlow_1kg5s6u">
+        <di:waypoint xsi:type="dc:Point" x="1150" y="169" />
+        <di:waypoint xsi:type="dc:Point" x="1150" y="98" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1120" y="126.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0rutzwg_di" bpmnElement="MessageFlow_0rutzwg">
+        <di:waypoint xsi:type="dc:Point" x="1150" y="205" />
+        <di:waypoint xsi:type="dc:Point" x="1150" y="597" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1120" y="394" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_02hfotj_di" bpmnElement="SequenceFlow_02hfotj">
+        <di:waypoint xsi:type="dc:Point" x="1150" y="314" />
+        <di:waypoint xsi:type="dc:Point" x="1150" y="413" />
+        <di:waypoint xsi:type="dc:Point" x="1120" y="413" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1133" y="351" width="83" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0u1k7ev_di" bpmnElement="IntermediateThrowEvent_0bl3lkd">
+        <dc:Bounds x="956" y="395" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="880" y="389" width="81" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_0egiz49_di" bpmnElement="MessageFlow_0egiz49">
+        <di:waypoint xsi:type="dc:Point" x="974" y="431" />
+        <di:waypoint xsi:type="dc:Point" x="974" y="597" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="944" y="507" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1cdmhoz_di" bpmnElement="MessageFlow_1cdmhoz">
+        <di:waypoint xsi:type="dc:Point" x="974" y="395" />
+        <di:waypoint xsi:type="dc:Point" x="974" y="98" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="944" y="239.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1i3z6t7_di" bpmnElement="SequenceFlow_1i3z6t7">
+        <di:waypoint xsi:type="dc:Point" x="1175" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="1239" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1208.8945652740833" y="264.4237288135593" width="11" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1cy8f3a_di" bpmnElement="IntermediateThrowEvent_1inljg0">
+        <dc:Bounds x="1239" y="271" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1186" y="296" width="58" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_19dm73r_di" bpmnElement="MessageFlow_19dm73r">
+        <di:waypoint xsi:type="dc:Point" x="1257" y="271" />
+        <di:waypoint xsi:type="dc:Point" x="1257" y="98" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1227" y="177.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_03ewhg8_di" bpmnElement="MessageFlow_03ewhg8">
+        <di:waypoint xsi:type="dc:Point" x="1257" y="307" />
+        <di:waypoint xsi:type="dc:Point" x="1257" y="597" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1227" y="445" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0lqcxbt_di" bpmnElement="IntermediateThrowEvent_0lqcxbt">
+        <dc:Bounds x="174" y="395" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="189" y="405" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0rbrfmo_di" bpmnElement="SequenceFlow_0rbrfmo">
+        <di:waypoint xsi:type="dc:Point" x="956" y="413" />
+        <di:waypoint xsi:type="dc:Point" x="210" y="413" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="538" y="391" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0xoyqwy_di" bpmnElement="IntermediateThrowEvent_0xoyqwy">
+        <dc:Bounds x="1292" y="271" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1309" y="282" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_04zp5fs_di" bpmnElement="SequenceFlow_04zp5fs">
+        <di:waypoint xsi:type="dc:Point" x="1275" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="1292" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1238.5" y="267" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_04ti381_di" bpmnElement="IntermediateThrowEvent_04ti381">
+        <dc:Bounds x="1084" y="395" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1065" y="434" width="75" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0pgzax1_di" bpmnElement="SequenceFlow_0pgzax1">
+        <di:waypoint xsi:type="dc:Point" x="1084" y="413" />
+        <di:waypoint xsi:type="dc:Point" x="992" y="413" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="993" y="391" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1aau17v_di" bpmnElement="ExclusiveGateway_1aau17v" isMarkerVisible="true">
+        <dc:Bounds x="715" y="264" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="700" y="310" width="79" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1puvmik_di" bpmnElement="SequenceFlow_1puvmik">
+        <di:waypoint xsi:type="dc:Point" x="765" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="845" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="757.2657286891737" y="267" width="81" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1yctnh9_di" bpmnElement="EndEvent_0ymfux1">
+        <dc:Bounds x="722" y="169" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="695" y="208" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u4snq8_di" bpmnElement="SequenceFlow_0u4snq8">
+        <di:waypoint xsi:type="dc:Point" x="740" y="264" />
+        <di:waypoint xsi:type="dc:Point" x="740" y="235" />
+        <di:waypoint xsi:type="dc:Point" x="740" y="235" />
+        <di:waypoint xsi:type="dc:Point" x="740" y="205" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="708" y="233.906636024131" width="64" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1m2y84z_di" bpmnElement="MessageFlow_1m2y84z">
+        <di:waypoint xsi:type="dc:Point" x="740" y="169" />
+        <di:waypoint xsi:type="dc:Point" x="740" y="98" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="710" y="126.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1k55f7m_di" bpmnElement="ExclusiveGateway_1k55f7m" isMarkerVisible="true">
+        <dc:Bounds x="445" y="264" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="427" y="317" width="87" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uwbemv_di" bpmnElement="SequenceFlow_1uwbemv">
+        <di:waypoint xsi:type="dc:Point" x="495" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="579" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="527" y="267" width="20" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_001oo0e_di" bpmnElement="ExclusiveGateway_001oo0e" isMarkerVisible="true">
+        <dc:Bounds x="579" y="264" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="567" y="317" width="74" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0m63nnm_di" bpmnElement="SequenceFlow_0m63nnm">
+        <di:waypoint xsi:type="dc:Point" x="629" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="715" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="662" y="267" width="20" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0350wsr_di" bpmnElement="IntermediateThrowEvent_0350wsr">
+        <dc:Bounds x="1292" y="519" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1306" y="530" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_00cdzsy_di" bpmnElement="IntermediateThrowEvent_00cdzsy">
+        <dc:Bounds x="1292" y="466" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1306" y="476" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1d87js5_di" bpmnElement="SequenceFlow_1d87js5">
+        <di:waypoint xsi:type="dc:Point" x="470" y="314" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="537" />
+        <di:waypoint xsi:type="dc:Point" x="1292" y="537" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="479" y="358" width="9" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1flkn86_di" bpmnElement="SequenceFlow_1flkn86">
+        <di:waypoint xsi:type="dc:Point" x="604" y="314" />
+        <di:waypoint xsi:type="dc:Point" x="604" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="1292" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="614" y="358" width="9" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_198tcy7_di" bpmnElement="IntermediateThrowEvent_198tcy7">
+        <dc:Bounds x="174" y="271" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="193" y="282" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_10rg81i_di" bpmnElement="SequenceFlow_10rg81i">
+        <di:waypoint xsi:type="dc:Point" x="210" y="289" />
+        <di:waypoint xsi:type="dc:Point" x="268" y="289" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="239" y="267" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_07j0e50_di" bpmnElement="IntermediateThrowEvent_07j0e50">
+        <dc:Bounds x="174" y="346" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="191" y="355" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_024p0l7_di" bpmnElement="SequenceFlow_024p0l7">
+        <di:waypoint xsi:type="dc:Point" x="210" y="364" />
+        <di:waypoint xsi:type="dc:Point" x="286" y="364" />
+        <di:waypoint xsi:type="dc:Point" x="286" y="307" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="203" y="342" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_2.bpmn b/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_2.bpmn
new file mode 100644
index 0000000..e99158f
--- /dev/null
+++ b/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_2.bpmn
@@ -0,0 +1,499 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:collaboration id="Collaboration_17qxou7">
+    <bpmn:participant id="Participant_0955zzp" name="Antragsteller" processRef="Process_1" />
+    <bpmn:participant id="Participant_1768x6g" name="MAßnahmeantrag" processRef="Process_0gtvrko" />
+    <bpmn:participant id="Participant_1cdzc63" name="Leitsystem" processRef="Process_1w06u94" />
+    <bpmn:messageFlow id="MessageFlow_1xqjfm5" sourceRef="IntermediateThrowEvent_0y1b6mz" targetRef="Participant_0955zzp" />
+    <bpmn:messageFlow id="MessageFlow_13nltqw" sourceRef="IntermediateThrowEvent_0y1b6mz" targetRef="Participant_1cdzc63" />
+    <bpmn:messageFlow id="MessageFlow_1bfcdxw" sourceRef="EndEvent_151eqdp" targetRef="Participant_0955zzp" />
+    <bpmn:messageFlow id="MessageFlow_0nlg74v" sourceRef="EndEvent_151eqdp" targetRef="Participant_1cdzc63" />
+    <bpmn:messageFlow id="MessageFlow_1s0pj8o" sourceRef="Participant_1cdzc63" targetRef="IntermediateCatchEvent_0iktfkm" />
+    <bpmn:messageFlow id="MessageFlow_19thj68" sourceRef="Participant_1cdzc63" targetRef="IntermediateCatchEvent_1kwvf1t" />
+    <bpmn:messageFlow id="MessageFlow_0nlpipb" sourceRef="Participant_1cdzc63" targetRef="IntermediateCatchEvent_1wnlzou" />
+    <bpmn:messageFlow id="MessageFlow_02rlfue" sourceRef="Participant_1cdzc63" targetRef="IntermediateThrowEvent_1x84jos" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_1" isExecutable="true" />
+  <bpmn:process id="Process_0gtvrko" isExecutable="false">
+    <bpmn:task id="Task_04dyx7j" name="Maßnahme begonnen &#60;RELEASED&#62;">
+      <bpmn:incoming>SequenceFlow_12l5dxh</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1idlok4</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:sequenceFlow id="SequenceFlow_1idlok4" sourceRef="Task_04dyx7j" targetRef="ExclusiveGateway_073wsz5" />
+    <bpmn:sequenceFlow id="SequenceFlow_007e4sv" sourceRef="IntermediateCatchEvent_1wnlzou" targetRef="Task_0jvozhg" />
+    <bpmn:sequenceFlow id="SequenceFlow_0gwydqp" sourceRef="Task_0jvozhg" targetRef="ExclusiveGateway_1w6e1nl" />
+    <bpmn:sequenceFlow id="SequenceFlow_0hentfy" sourceRef="IntermediateCatchEvent_1kwvf1t" targetRef="Task_106dpr7" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yj0aw5" sourceRef="Task_106dpr7" targetRef="IntermediateCatchEvent_0iktfkm" />
+    <bpmn:sequenceFlow id="SequenceFlow_12l5dxh" sourceRef="StartEvent_1" targetRef="Task_04dyx7j" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1aq7vte" name="3">
+      <bpmn:incoming>SequenceFlow_1xadpn3</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="StartEvent_1" name="6">
+      <bpmn:outgoing>SequenceFlow_12l5dxh</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0o76z6l" sourceRef="IntermediateCatchEvent_0iktfkm" targetRef="Task_19d4h92" />
+    <bpmn:sequenceFlow id="SequenceFlow_0x9wx4i" name="keine weitere Maßnahme notwendig" sourceRef="ExclusiveGateway_14c3mza" targetRef="IntermediateThrowEvent_0y1b6mz" />
+    <bpmn:sequenceFlow id="SequenceFlow_1nxe7iw" sourceRef="IntermediateThrowEvent_0y1b6mz" targetRef="Task_0r4k9vh" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ywtsv9" sourceRef="Task_0r4k9vh" targetRef="EndEvent_151eqdp" />
+    <bpmn:sequenceFlow id="SequenceFlow_1xadpn3" name="Weitere Maßnahme notwendig" sourceRef="ExclusiveGateway_14c3mza" targetRef="IntermediateThrowEvent_1aq7vte" />
+    <bpmn:sequenceFlow id="SequenceFlow_0c9bje2" sourceRef="Task_19d4h92" targetRef="IntermediateThrowEvent_1x84jos" />
+    <bpmn:sequenceFlow id="SequenceFlow_1kvrbdz" sourceRef="IntermediateThrowEvent_1x84jos" targetRef="ExclusiveGateway_14c3mza" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_19mgk3e" name="5">
+      <bpmn:outgoing>SequenceFlow_0polkmn</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1a0hokd" name="4">
+      <bpmn:outgoing>SequenceFlow_0tj2ml8</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0mrshq5" name="Status: CLOSED setzen">
+      <bpmn:incoming>SequenceFlow_0tj2ml8</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0pgszu3</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0polkmn" sourceRef="IntermediateThrowEvent_19mgk3e" targetRef="IntermediateThrowEvent_13xz905" />
+    <bpmn:sequenceFlow id="SequenceFlow_0k3wf5t" sourceRef="IntermediateThrowEvent_13xz905" targetRef="IntermediateCatchEvent_1wnlzou" />
+    <bpmn:sequenceFlow id="SequenceFlow_0tj2ml8" sourceRef="IntermediateThrowEvent_1a0hokd" targetRef="IntermediateThrowEvent_0mrshq5" />
+    <bpmn:sequenceFlow id="SequenceFlow_0pgszu3" sourceRef="IntermediateThrowEvent_0mrshq5" targetRef="EndEvent_151eqdp" />
+    <bpmn:endEvent id="EndEvent_151eqdp" name="geschlossen">
+      <bpmn:incoming>SequenceFlow_0ywtsv9</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0pgszu3</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1jimz92</bpmn:incoming>
+      <bpmn:messageEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:task id="Task_0r4k9vh" name="Dokumentation erstellen &#60;FINISHED&#62;">
+      <bpmn:incoming>SequenceFlow_1nxe7iw</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0ywtsv9</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0y1b6mz" name="beendet">
+      <bpmn:incoming>SequenceFlow_0x9wx4i</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1mtk9p3</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1nxe7iw</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_14c3mza">
+      <bpmn:incoming>SequenceFlow_1kvrbdz</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0x9wx4i</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1xadpn3</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_1x84jos" name="Maßnahme beenden">
+      <bpmn:incoming>SequenceFlow_0c9bje2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1kvrbdz</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:task id="Task_19d4h92" name="Arbeit beendet &#60;WORK_FINISHED&#62;">
+      <bpmn:incoming>SequenceFlow_0o76z6l</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0c9bje2</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0iktfkm" name="Arbeit beendet">
+      <bpmn:incoming>SequenceFlow_0yj0aw5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0o76z6l</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:task id="Task_106dpr7" name="Arbeiten durchführen &#60;IN_WORK&#62;">
+      <bpmn:incoming>SequenceFlow_0hentfy</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yj0aw5</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1kwvf1t" name="in Arbeit">
+      <bpmn:incoming>SequenceFlow_0dfmcg0</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0hentfy</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_073wsz5" name="Konfig: EndAfterReleased">
+      <bpmn:incoming>SequenceFlow_1idlok4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1kpujam</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1nlz04b</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1kpujam" name="nein" sourceRef="ExclusiveGateway_073wsz5" targetRef="IntermediateCatchEvent_1wnlzou" />
+    <bpmn:sequenceFlow id="SequenceFlow_1nlz04b" sourceRef="ExclusiveGateway_073wsz5" targetRef="IntermediateThrowEvent_16zv2vj" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1wnlzou" name="Maßnahme aktiv">
+      <bpmn:incoming>SequenceFlow_1kpujam</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0k3wf5t</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_007e4sv</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1jimz92" sourceRef="IntermediateThrowEvent_16zv2vj" targetRef="EndEvent_151eqdp" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_16zv2vj" name="Status: CLOSED setzen">
+      <bpmn:incoming>SequenceFlow_1nlz04b</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1jimz92</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:task id="Task_0jvozhg" name="Maßnahme ausgegführt &#60;ACTIVE&#62;">
+      <bpmn:incoming>SequenceFlow_007e4sv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0gwydqp</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1w6e1nl" name="Konfig: SkipInWork">
+      <bpmn:incoming>SequenceFlow_0gwydqp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0dfmcg0</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_11sek6f</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0dfmcg0" name="nein" sourceRef="ExclusiveGateway_1w6e1nl" targetRef="IntermediateCatchEvent_1kwvf1t" />
+    <bpmn:sequenceFlow id="SequenceFlow_11sek6f" name="ja" sourceRef="ExclusiveGateway_1w6e1nl" targetRef="IntermediateThrowEvent_06l7cb8" />
+    <bpmn:sequenceFlow id="SequenceFlow_1mtk9p3" sourceRef="IntermediateThrowEvent_06l7cb8" targetRef="IntermediateThrowEvent_0y1b6mz" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_06l7cb8" name="Status: FINISHED setzen">
+      <bpmn:incoming>SequenceFlow_11sek6f</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1mtk9p3</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_13xz905" name="Status ACTIVE setzen">
+      <bpmn:incoming>SequenceFlow_0polkmn</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0k3wf5t</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+  </bpmn:process>
+  <bpmn:process id="Process_1w06u94" isExecutable="false" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_17qxou7">
+      <bpmndi:BPMNShape id="Participant_0955zzp_di" bpmnElement="Participant_0955zzp">
+        <dc:Bounds x="123" y="17" width="1656" height="78" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1768x6g_di" bpmnElement="Participant_1768x6g">
+        <dc:Bounds x="123" y="119" width="1655" height="427" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1cdzc63_di" bpmnElement="Participant_1cdzc63">
+        <dc:Bounds x="123" y="565" width="1658" height="79" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_04dyx7j_di" bpmnElement="Task_04dyx7j">
+        <dc:Bounds x="238" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1wnlzou_di" bpmnElement="IntermediateCatchEvent_1wnlzou">
+        <dc:Bounds x="460" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="439" y="189" width="78" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0jvozhg_di" bpmnElement="Task_0jvozhg">
+        <dc:Bounds x="533" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1kwvf1t_di" bpmnElement="IntermediateCatchEvent_1kwvf1t">
+        <dc:Bounds x="778" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="776" y="188" width="40" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_106dpr7_di" bpmnElement="Task_106dpr7">
+        <dc:Bounds x="858" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0iktfkm_di" bpmnElement="IntermediateCatchEvent_0iktfkm">
+        <dc:Bounds x="986" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="968" y="188" width="71" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1idlok4_di" bpmnElement="SequenceFlow_1idlok4">
+        <di:waypoint xsi:type="dc:Point" x="338" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="360" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="304" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_007e4sv_di" bpmnElement="SequenceFlow_007e4sv">
+        <di:waypoint xsi:type="dc:Point" x="496" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="533" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="469.5" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gwydqp_di" bpmnElement="SequenceFlow_0gwydqp">
+        <di:waypoint xsi:type="dc:Point" x="633" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="674" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="608.5" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hentfy_di" bpmnElement="SequenceFlow_0hentfy">
+        <di:waypoint xsi:type="dc:Point" x="814" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="858" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="791" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yj0aw5_di" bpmnElement="SequenceFlow_0yj0aw5">
+        <di:waypoint xsi:type="dc:Point" x="958" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="986" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="927" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12l5dxh_di" bpmnElement="SequenceFlow_12l5dxh">
+        <di:waypoint xsi:type="dc:Point" x="205" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="238" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="221.5" y="207" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1aq7vte_di" bpmnElement="IntermediateThrowEvent_1aq7vte">
+        <dc:Bounds x="169" y="300.92712550607285" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="182" y="306" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0x1zre2_di" bpmnElement="StartEvent_1">
+        <dc:Bounds x="169" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="184" y="226" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_14c3mza_di" bpmnElement="ExclusiveGateway_14c3mza" isMarkerVisible="true">
+        <dc:Bounds x="1370" y="204" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1350" y="257" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0o76z6l_di" bpmnElement="SequenceFlow_0o76z6l">
+        <di:waypoint xsi:type="dc:Point" x="1022" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="1090" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1011" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x9wx4i_di" bpmnElement="SequenceFlow_0x9wx4i">
+        <di:waypoint xsi:type="dc:Point" x="1420" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="1459" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1373" y="157" width="65" height="42" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1hx6l2v_di" bpmnElement="IntermediateThrowEvent_0y1b6mz">
+        <dc:Bounds x="1459" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1517" y="208" width="39" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1xqjfm5_di" bpmnElement="MessageFlow_1xqjfm5">
+        <di:waypoint xsi:type="dc:Point" x="1477" y="211" />
+        <di:waypoint xsi:type="dc:Point" x="1477" y="95" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1447" y="146" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_13nltqw_di" bpmnElement="MessageFlow_13nltqw">
+        <di:waypoint xsi:type="dc:Point" x="1477" y="247" />
+        <di:waypoint xsi:type="dc:Point" x="1477" y="565" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1447" y="399" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_0r4k9vh_di" bpmnElement="Task_0r4k9vh">
+        <dc:Bounds x="1559" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1nxe7iw_di" bpmnElement="SequenceFlow_1nxe7iw">
+        <di:waypoint xsi:type="dc:Point" x="1495" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="1559" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1482" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ywtsv9_di" bpmnElement="SequenceFlow_0ywtsv9">
+        <di:waypoint xsi:type="dc:Point" x="1659" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="1708" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1638.5" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1kfxd0w_di" bpmnElement="EndEvent_151eqdp">
+        <dc:Bounds x="1708" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1695" y="268" width="62" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1bfcdxw_di" bpmnElement="MessageFlow_1bfcdxw">
+        <di:waypoint xsi:type="dc:Point" x="1726" y="211" />
+        <di:waypoint xsi:type="dc:Point" x="1726" y="95" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1696" y="146" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0nlg74v_di" bpmnElement="MessageFlow_0nlg74v">
+        <di:waypoint xsi:type="dc:Point" x="1726" y="247" />
+        <di:waypoint xsi:type="dc:Point" x="1726" y="565" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1696" y="399" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xadpn3_di" bpmnElement="SequenceFlow_1xadpn3">
+        <di:waypoint xsi:type="dc:Point" x="1395" y="254" />
+        <di:waypoint xsi:type="dc:Point" x="1395" y="319" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="319" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1406" y="260" width="53" height="42" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1s0pj8o_di" bpmnElement="MessageFlow_1s0pj8o">
+        <di:waypoint xsi:type="dc:Point" x="1002" y="562" />
+        <di:waypoint xsi:type="dc:Point" x="1002" y="406" />
+        <di:waypoint xsi:type="dc:Point" x="1002" y="246" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="972" y="477" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_19thj68_di" bpmnElement="MessageFlow_19thj68">
+        <di:waypoint xsi:type="dc:Point" x="797" y="560" />
+        <di:waypoint xsi:type="dc:Point" x="796" y="247" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="751.5" y="381.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0nlpipb_di" bpmnElement="MessageFlow_0nlpipb">
+        <di:waypoint xsi:type="dc:Point" x="478" y="560" />
+        <di:waypoint xsi:type="dc:Point" x="478" y="406" />
+        <di:waypoint xsi:type="dc:Point" x="478" y="247" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="448" y="476" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_19d4h92_di" bpmnElement="Task_19d4h92">
+        <dc:Bounds x="1090" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c9bje2_di" bpmnElement="SequenceFlow_0c9bje2">
+        <di:waypoint xsi:type="dc:Point" x="1190" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="1251" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1175.5" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kvrbdz_di" bpmnElement="SequenceFlow_1kvrbdz">
+        <di:waypoint xsi:type="dc:Point" x="1287" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="1370" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1283.5" y="207" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0pvf3wz_di" bpmnElement="IntermediateThrowEvent_1x84jos">
+        <dc:Bounds x="1251" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1242" y="174" width="53" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_02rlfue_di" bpmnElement="MessageFlow_02rlfue">
+        <di:waypoint xsi:type="dc:Point" x="1272" y="565" />
+        <di:waypoint xsi:type="dc:Point" x="1272" y="246" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1242" y="398.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_19mgk3e_di" bpmnElement="IntermediateThrowEvent_19mgk3e">
+        <dc:Bounds x="169" y="358" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="183" y="365" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1a0hokd_di" bpmnElement="IntermediateThrowEvent_1a0hokd">
+        <dc:Bounds x="169" y="445" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="183" y="456" width="6" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_13xz905_di" bpmnElement="IntermediateThrowEvent_13xz905">
+        <dc:Bounds x="223" y="358" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="204" y="397" width="75" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0mrshq5_di" bpmnElement="IntermediateThrowEvent_0mrshq5">
+        <dc:Bounds x="262" y="445" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="242" y="484" width="78" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0polkmn_di" bpmnElement="SequenceFlow_0polkmn">
+        <di:waypoint xsi:type="dc:Point" x="205" y="376" />
+        <di:waypoint xsi:type="dc:Point" x="223" y="376" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="214" y="354" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k3wf5t_di" bpmnElement="SequenceFlow_0k3wf5t">
+        <di:waypoint xsi:type="dc:Point" x="259" y="376" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="376" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="281" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="245" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="420" y="321.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tj2ml8_di" bpmnElement="SequenceFlow_0tj2ml8">
+        <di:waypoint xsi:type="dc:Point" x="205" y="463" />
+        <di:waypoint xsi:type="dc:Point" x="262" y="463" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="233.5" y="441" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0pgszu3_di" bpmnElement="SequenceFlow_0pgszu3">
+        <di:waypoint xsi:type="dc:Point" x="298" y="463" />
+        <di:waypoint xsi:type="dc:Point" x="1684" y="463" />
+        <di:waypoint xsi:type="dc:Point" x="1684" y="276" />
+        <di:waypoint xsi:type="dc:Point" x="1710" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1699" y="362.5" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_073wsz5_di" bpmnElement="ExclusiveGateway_073wsz5" isMarkerVisible="true">
+        <dc:Bounds x="360" y="204" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="341" y="257" width="88" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kpujam_di" bpmnElement="SequenceFlow_1kpujam">
+        <di:waypoint xsi:type="dc:Point" x="410" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="460" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="425.1655629139073" y="207" width="20" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1nlz04b_di" bpmnElement="SequenceFlow_1nlz04b">
+        <di:waypoint xsi:type="dc:Point" x="385" y="254" />
+        <di:waypoint xsi:type="dc:Point" x="385" y="409" />
+        <di:waypoint xsi:type="dc:Point" x="565" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="400" y="324.5" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_16zv2vj_di" bpmnElement="IntermediateThrowEvent_16zv2vj">
+        <dc:Bounds x="565" y="392" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="545" y="431" width="78" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jimz92_di" bpmnElement="SequenceFlow_1jimz92">
+        <di:waypoint xsi:type="dc:Point" x="601" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="1662" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="1662" y="272" />
+        <di:waypoint xsi:type="dc:Point" x="1709" y="234" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1677" y="334" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1w6e1nl_di" bpmnElement="ExclusiveGateway_1w6e1nl" isMarkerVisible="true">
+        <dc:Bounds x="674" y="204" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="654" y="257" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dfmcg0_di" bpmnElement="SequenceFlow_0dfmcg0">
+        <di:waypoint xsi:type="dc:Point" x="724" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="778" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="741" y="207" width="20" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11sek6f_di" bpmnElement="SequenceFlow_11sek6f">
+        <di:waypoint xsi:type="dc:Point" x="699" y="254" />
+        <di:waypoint xsi:type="dc:Point" x="699" y="344" />
+        <di:waypoint xsi:type="dc:Point" x="890" y="344" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="678" y="323" width="10" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_06l7cb8_di" bpmnElement="IntermediateThrowEvent_06l7cb8">
+        <dc:Bounds x="890" y="326" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="868" y="365" width="81" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mtk9p3_di" bpmnElement="SequenceFlow_1mtk9p3">
+        <di:waypoint xsi:type="dc:Point" x="926" y="344" />
+        <di:waypoint xsi:type="dc:Point" x="1514" y="344" />
+        <di:waypoint xsi:type="dc:Point" x="1514" y="263" />
+        <di:waypoint xsi:type="dc:Point" x="1486" y="245" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1529" y="296.5" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_3.bpmn b/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_3.bpmn
new file mode 100644
index 0000000..af0aaa1
--- /dev/null
+++ b/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_3.bpmn
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.15.1">
+  <bpmn:collaboration id="Collaboration_17qxou7">
+    <bpmn:participant id="Participant_0955zzp" name="Verantwortlicher vor Ort" processRef="Process_1" />
+    <bpmn:participant id="Participant_1768x6g" name="MAßnahmeantrag" processRef="Process_0gtvrko" />
+    <bpmn:participant id="Participant_1cdzc63" name="Leitsystem" processRef="Process_1w06u94" />
+    <bpmn:messageFlow id="MessageFlow_01pa5h8" name="Einzelmaßnahme über  überwachtes Betriebsmittel in Arbeit setzen" sourceRef="Participant_1cdzc63" targetRef="IntermediateCatchEvent_1g3kk9f" />
+    <bpmn:messageFlow id="MessageFlow_1wf3s6o" sourceRef="EndEvent_0ocl6hd" targetRef="Participant_0955zzp" />
+    <bpmn:messageFlow id="MessageFlow_1fjuv9x" sourceRef="EndEvent_0ocl6hd" targetRef="Participant_1cdzc63" />
+    <bpmn:messageFlow id="MessageFlow_06ivsi1" sourceRef="Participant_0955zzp" targetRef="IntermediateCatchEvent_1g3kk9f" />
+    <bpmn:messageFlow id="MessageFlow_15jiy9b" sourceRef="EndEvent_0oy8zue" targetRef="Participant_1cdzc63" />
+    <bpmn:messageFlow id="MessageFlow_1awg3ty" sourceRef="Participant_1cdzc63" targetRef="IntermediateCatchEvent_1cetfxd" />
+    <bpmn:messageFlow id="MessageFlow_1mvog30" sourceRef="EndEvent_0o882tj" targetRef="Participant_0955zzp" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_1" isExecutable="true" />
+  <bpmn:process id="Process_0gtvrko" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_1idlok4" sourceRef="Task_04dyx7j" targetRef="ExclusiveGateway_193b166" />
+    <bpmn:sequenceFlow id="SequenceFlow_0gwydqp" sourceRef="Task_0jvozhg" targetRef="IntermediateCatchEvent_1cetfxd" />
+    <bpmn:sequenceFlow id="SequenceFlow_0j9154w" sourceRef="StartEvent_1" targetRef="ExclusiveGateway_06rvevb" />
+    <bpmn:sequenceFlow id="SequenceFlow_0a80yez" sourceRef="IntermediateCatchEvent_1g3kk9f" targetRef="Task_04dyx7j" />
+    <bpmn:intermediateThrowEvent id="StartEvent_1" name="3">
+      <bpmn:outgoing>SequenceFlow_0j9154w</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0ejs61q" name="ja" sourceRef="ExclusiveGateway_193b166" targetRef="Task_0jvozhg" />
+    <bpmn:sequenceFlow id="SequenceFlow_1hg8ft5" name="nein" sourceRef="ExclusiveGateway_193b166" targetRef="Task_04dyx7j" />
+    <bpmn:sequenceFlow id="SequenceFlow_03entev" name="nein" sourceRef="ExclusiveGateway_0gh4s2q" targetRef="Task_0jvozhg" />
+    <bpmn:sequenceFlow id="SequenceFlow_15flr5f" name="ja" sourceRef="ExclusiveGateway_0gh4s2q" targetRef="Task_106dpr7" />
+    <bpmn:sequenceFlow id="SequenceFlow_1hpv092" sourceRef="Task_106dpr7" targetRef="IntermediateThrowEvent_0ume36d" />
+    <bpmn:sequenceFlow id="SequenceFlow_19drzyb" sourceRef="IntermediateThrowEvent_120d3q2" targetRef="IntermediateThrowEvent_1aq7vte" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0ume36d" name="4">
+      <bpmn:incoming>SequenceFlow_1hpv092</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:task id="Task_106dpr7" name="&#60;WORK_FINISHED&#62;">
+      <bpmn:incoming>SequenceFlow_15flr5f</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0wod3y4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1hpv092</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:endEvent id="EndEvent_0ocl6hd" name="">
+      <bpmn:messageEventDefinition id="MessageEventDefinition_06cl3zv" />
+    </bpmn:endEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_193b166" name="einleitende Schrittsequenz abgeschlossen?">
+      <bpmn:incoming>SequenceFlow_1idlok4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0ejs61q</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1hg8ft5</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:task id="Task_04dyx7j" name="&#60;ACTIVE&#62;">
+      <bpmn:incoming>SequenceFlow_0a80yez</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1hg8ft5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1idlok4</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_06rvevb" name="Einzelmaßnahme ist Leermaßnahme">
+      <bpmn:incoming>SequenceFlow_0j9154w</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0pul75i</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1bykm1e</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0pul75i" name="nein (PORT1)" sourceRef="ExclusiveGateway_06rvevb" targetRef="IntermediateCatchEvent_1g3kk9f" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bykm1e" name="ja (PORT2)" sourceRef="ExclusiveGateway_06rvevb" targetRef="IntermediateThrowEvent_0hpkfrn" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0hpkfrn" name="Status &#60;WORK_FINISHED&#62; setzen">
+      <bpmn:incoming>SequenceFlow_1bykm1e</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0wod3y4</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0wod3y4" sourceRef="IntermediateThrowEvent_0hpkfrn" targetRef="Task_106dpr7" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1g3kk9f" name="Einzelmaßnahmein Arbeit setzen">
+      <bpmn:incoming>SequenceFlow_0pul75i</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0a80yez</bpmn:outgoing>
+      <bpmn:messageEventDefinition id="MessageEventDefinition_0ibf3my" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1aq7vte" name="5">
+      <bpmn:incoming>SequenceFlow_19drzyb</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_120d3q2" name="5">
+      <bpmn:outgoing>SequenceFlow_19drzyb</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:endEvent id="EndEvent_0oy8zue" name="Massnahme aktiv">
+      <bpmn:messageEventDefinition id="MessageEventDefinition_16ow04l" />
+    </bpmn:endEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1cetfxd" name="Import der Anfangs-Ist-Zeit">
+      <bpmn:incoming>SequenceFlow_0gwydqp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11cxzbh</bpmn:outgoing>
+      <bpmn:messageEventDefinition id="MessageEventDefinition_0ifuoez" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_11cxzbh" sourceRef="IntermediateCatchEvent_1cetfxd" targetRef="ExclusiveGateway_0gh4s2q" />
+    <bpmn:task id="Task_0jvozhg" name="&#60;IN_WORK&#62;">
+      <bpmn:incoming>SequenceFlow_03entev</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0ejs61q</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0gwydqp</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:endEvent id="EndEvent_0o882tj" name="">
+      <bpmn:messageEventDefinition id="MessageEventDefinition_1eglxub" />
+    </bpmn:endEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0gh4s2q" name="Einzelmassnahme beendet?">
+      <bpmn:incoming>SequenceFlow_11cxzbh</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_03entev</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_15flr5f</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+  </bpmn:process>
+  <bpmn:process id="Process_1w06u94" isExecutable="false" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_17qxou7">
+      <bpmndi:BPMNShape id="Participant_0955zzp_di" bpmnElement="Participant_0955zzp">
+        <dc:Bounds x="123" y="-116" width="1287" height="78" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1768x6g_di" bpmnElement="Participant_1768x6g">
+        <dc:Bounds x="123" y="-18" width="1291" height="399" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1cdzc63_di" bpmnElement="Participant_1cdzc63">
+        <dc:Bounds x="123" y="403" width="1293" height="82" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_04dyx7j_di" bpmnElement="Task_04dyx7j">
+        <dc:Bounds x="462" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0jvozhg_di" bpmnElement="Task_0jvozhg">
+        <dc:Bounds x="837" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_106dpr7_di" bpmnElement="Task_106dpr7">
+        <dc:Bounds x="1199" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1idlok4_di" bpmnElement="SequenceFlow_1idlok4">
+        <di:waypoint x="562" y="229" />
+        <di:waypoint x="677" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="308.5" y="207" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gwydqp_di" bpmnElement="SequenceFlow_0gwydqp">
+        <di:waypoint x="937" y="229" />
+        <di:waypoint x="977" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="552" y="207" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1aq7vte_di" bpmnElement="IntermediateThrowEvent_1aq7vte">
+        <dc:Bounds x="161" y="323" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="176" y="336" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0x1zre2_di" bpmnElement="StartEvent_1">
+        <dc:Bounds x="161" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="178" y="220" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1g3kk9f_di" bpmnElement="IntermediateCatchEvent_1g3kk9f">
+        <dc:Bounds x="390" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="365" y="121" width="86" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j9154w_di" bpmnElement="SequenceFlow_0j9154w">
+        <di:waypoint x="197" y="229" />
+        <di:waypoint x="249" y="229" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a80yez_di" bpmnElement="SequenceFlow_0a80yez">
+        <di:waypoint x="426" y="229" />
+        <di:waypoint x="462" y="229" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_01pa5h8_di" bpmnElement="MessageFlow_01pa5h8">
+        <di:waypoint x="409" y="399" />
+        <di:waypoint x="408" y="247" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="365" y="261" width="86" height="66" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_193b166_di" bpmnElement="ExclusiveGateway_193b166" isMarkerVisible="true">
+        <dc:Bounds x="677" y="204" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="662" y="261" width="80" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ejs61q_di" bpmnElement="SequenceFlow_0ejs61q">
+        <di:waypoint x="727" y="229" />
+        <di:waypoint x="837" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="736" y="210" width="8" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0o882tj_di" bpmnElement="EndEvent_0o882tj">
+        <dc:Bounds x="760" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="620" y="239" width="62" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hg8ft5_di" bpmnElement="SequenceFlow_1hg8ft5">
+        <di:waypoint x="702" y="204" />
+        <di:waypoint x="702" y="102" />
+        <di:waypoint x="512" y="102" />
+        <di:waypoint x="512" y="189" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="598" y="84" width="21" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0gh4s2q_di" bpmnElement="ExclusiveGateway_0gh4s2q" isMarkerVisible="true">
+        <dc:Bounds x="1042" y="204" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1025" y="261" width="84" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_03entev_di" bpmnElement="SequenceFlow_03entev">
+        <di:waypoint x="1067" y="204" />
+        <di:waypoint x="1067" y="99" />
+        <di:waypoint x="887" y="99" />
+        <di:waypoint x="887" y="189" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="968" y="81" width="21" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0ocl6hd_di" bpmnElement="EndEvent_0ocl6hd">
+        <dc:Bounds x="1128" y="211" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1wf3s6o_di" bpmnElement="MessageFlow_1wf3s6o">
+        <di:waypoint x="1146" y="211" />
+        <di:waypoint x="1146" y="-38" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1fjuv9x_di" bpmnElement="MessageFlow_1fjuv9x">
+        <di:waypoint x="1146" y="247" />
+        <di:waypoint x="1146" y="403" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15flr5f_di" bpmnElement="SequenceFlow_15flr5f">
+        <di:waypoint x="1092" y="229" />
+        <di:waypoint x="1199" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1099" y="211" width="8" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0ume36d_di" bpmnElement="IntermediateThrowEvent_0ume36d">
+        <dc:Bounds x="1330.7004048582996" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1348" y="221" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hpv092_di" bpmnElement="SequenceFlow_1hpv092">
+        <di:waypoint x="1299" y="229" />
+        <di:waypoint x="1331" y="229" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_120d3q2_di" bpmnElement="IntermediateThrowEvent_120d3q2">
+        <dc:Bounds x="1330.7004048582996" y="323" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1341" y="337" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19drzyb_di" bpmnElement="SequenceFlow_19drzyb">
+        <di:waypoint x="1331" y="341" />
+        <di:waypoint x="197" y="341" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_06rvevb_di" bpmnElement="ExclusiveGateway_06rvevb" isMarkerVisible="true">
+        <dc:Bounds x="249" y="204" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="231" y="261" width="86" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0pul75i_di" bpmnElement="SequenceFlow_0pul75i">
+        <di:waypoint x="299" y="229" />
+        <di:waypoint x="390" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="304" y="212" width="68" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0hpkfrn_di" bpmnElement="IntermediateThrowEvent_0hpkfrn">
+        <dc:Bounds x="1231.306" y="30.180000000000007" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1207" y="-9" width="83" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bykm1e_di" bpmnElement="SequenceFlow_1bykm1e">
+        <di:waypoint x="274" y="204" />
+        <di:waypoint x="274" y="48" />
+        <di:waypoint x="1231" y="48" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="280" y="120" width="55" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0wod3y4_di" bpmnElement="SequenceFlow_0wod3y4">
+        <di:waypoint x="1249" y="66" />
+        <di:waypoint x="1249" y="189" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_06ivsi1_di" bpmnElement="MessageFlow_06ivsi1">
+        <di:waypoint x="408" y="-36" />
+        <di:waypoint x="408" y="211" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0oy8zue_di" bpmnElement="EndEvent_0oy8zue">
+        <dc:Bounds x="596" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="579" y="191" width="87" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_15jiy9b_di" bpmnElement="MessageFlow_15jiy9b">
+        <di:waypoint x="614" y="247" />
+        <di:waypoint x="614" y="403" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1cetfxd_di" bpmnElement="IntermediateCatchEvent_1cetfxd">
+        <dc:Bounds x="977" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="963" y="303" width="78" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1awg3ty_di" bpmnElement="MessageFlow_1awg3ty">
+        <di:waypoint x="997" y="397" />
+        <di:waypoint x="997" y="325" />
+        <di:waypoint x="997" y="247" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11cxzbh_di" bpmnElement="SequenceFlow_11cxzbh">
+        <di:waypoint x="1013" y="229" />
+        <di:waypoint x="1042" y="229" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1mvog30_di" bpmnElement="MessageFlow_1mvog30">
+        <di:waypoint x="778" y="211" />
+        <di:waypoint x="778" y="-38" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_4.bpmn b/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_4.bpmn
new file mode 100644
index 0000000..a121f6f
--- /dev/null
+++ b/src/main/asciidoc/originalfiles/massnahme_durchfuehren_u_abschliessen_4.bpmn
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.15.1">
+  <bpmn:collaboration id="Collaboration_17qxou7">
+    <bpmn:participant id="Participant_0955zzp" name="Verantwortlicher vor Ort" processRef="Process_1" />
+    <bpmn:participant id="Participant_1cdzc63" name="Leitsystem" processRef="Process_1w06u94" />
+    <bpmn:participant id="Participant_1768x6g" name="MAßnahmeantrag" processRef="Process_0gtvrko" />
+    <bpmn:messageFlow id="MessageFlow_1q7offx" name="Setzen der Zeiten im Leitsystem" sourceRef="EndEvent_0bebfmf" targetRef="Participant_1cdzc63" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_1" isExecutable="true" />
+  <bpmn:process id="Process_1w06u94" isExecutable="false" />
+  <bpmn:process id="Process_0gtvrko" isExecutable="false">
+    <bpmn:laneSet id="LaneSet_093dla5" />
+    <bpmn:task id="Task_04dyx7j" name="&#60;FINISHED&#62;">
+      <bpmn:incoming>SequenceFlow_1n1q936</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_15a79ps</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:task id="Task_0jvozhg" name="&#60;CLOSED&#62;">
+      <bpmn:incoming>SequenceFlow_15a79ps</bpmn:incoming>
+    </bpmn:task>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_193b166" name="weitere Einzelmaßnahmen ausstehend? Soll diese angefordert werden?">
+      <bpmn:incoming>SequenceFlow_0ayc2lt</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0d2dgm1</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1n1q936</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0f37dfk" name="5">
+      <bpmn:incoming>SequenceFlow_0d2dgm1</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="StartEvent_1" name="4">
+      <bpmn:outgoing>SequenceFlow_0ayc2lt</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0d2dgm1" name="" sourceRef="ExclusiveGateway_193b166" targetRef="IntermediateThrowEvent_0f37dfk" />
+    <bpmn:sequenceFlow id="SequenceFlow_15a79ps" name="Massnahme endgültig schliessen" sourceRef="Task_04dyx7j" targetRef="Task_0jvozhg" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ayc2lt" sourceRef="StartEvent_1" targetRef="ExclusiveGateway_193b166" />
+    <bpmn:sequenceFlow id="SequenceFlow_1n1q936" name="nein" sourceRef="ExclusiveGateway_193b166" targetRef="Task_04dyx7j" />
+    <bpmn:endEvent id="EndEvent_0bebfmf">
+      <bpmn:messageEventDefinition />
+    </bpmn:endEvent>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_17qxou7">
+      <bpmndi:BPMNShape id="Participant_0955zzp_di" bpmnElement="Participant_0955zzp">
+        <dc:Bounds x="123" y="-116" width="1287" height="78" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1cdzc63_di" bpmnElement="Participant_1cdzc63">
+        <dc:Bounds x="123" y="403" width="1293" height="82" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1768x6g_di" bpmnElement="Participant_1768x6g">
+        <dc:Bounds x="123" y="-18" width="1291" height="399" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_04dyx7j_di" bpmnElement="Task_04dyx7j">
+        <dc:Bounds x="573" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0jvozhg_di" bpmnElement="Task_0jvozhg">
+        <dc:Bounds x="972" y="189" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_193b166_di" bpmnElement="ExclusiveGateway_193b166" isMarkerVisible="true">
+        <dc:Bounds x="357" y="204" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="339" y="115" width="86" height="80" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0f37dfk_di" bpmnElement="IntermediateThrowEvent_0f37dfk">
+        <dc:Bounds x="161" y="284" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="177" y="293" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0x1zre2_di" bpmnElement="StartEvent_1">
+        <dc:Bounds x="161" y="211" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="176" y="223" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0d2dgm1_di" bpmnElement="SequenceFlow_0d2dgm1">
+        <di:waypoint x="382" y="254" />
+        <di:waypoint x="382" y="302" />
+        <di:waypoint x="197" y="302" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="352" y="275" width="90" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15a79ps_di" bpmnElement="SequenceFlow_15a79ps">
+        <di:waypoint x="673" y="229" />
+        <di:waypoint x="972" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="785" y="181" width="60" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ayc2lt_di" bpmnElement="SequenceFlow_0ayc2lt">
+        <di:waypoint x="197" y="229" />
+        <di:waypoint x="357" y="229" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n1q936_di" bpmnElement="SequenceFlow_1n1q936">
+        <di:waypoint x="407" y="229" />
+        <di:waypoint x="573" y="229" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="420.9999999999999" y="213" width="21" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_04fhixl_di" bpmnElement="EndEvent_0bebfmf">
+        <dc:Bounds x="468" y="211" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1q7offx_di" bpmnElement="MessageFlow_1q7offx">
+        <di:waypoint x="486" y="247" />
+        <di:waypoint x="486" y="403" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="497" y="308" width="87" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/src/main/asciidoc/originalfiles/massnahme_planen_und_genehmigen_1.bpmn b/src/main/asciidoc/originalfiles/massnahme_planen_und_genehmigen_1.bpmn
new file mode 100644
index 0000000..89f4e6b
--- /dev/null
+++ b/src/main/asciidoc/originalfiles/massnahme_planen_und_genehmigen_1.bpmn
@@ -0,0 +1,500 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.15.1">
+  <bpmn:collaboration id="Collaboration_00socrt">
+    <bpmn:extensionElements>
+      <camunda:properties>
+        <camunda:property />
+        <camunda:property />
+      </camunda:properties>
+    </bpmn:extensionElements>
+    <bpmn:participant id="Participant_0q0x948" name="Maßnahmeanrag" processRef="Process_07g8nsh" />
+    <bpmn:participant id="Participant_1ejfxi0" name="Leitsystem" processRef="Process_09mc0gn" />
+    <bpmn:participant id="Participant_1t9gai3" name="Antragsteller" processRef="Process_13t0ny3" />
+    <bpmn:messageFlow id="MessageFlow_1ms9428" sourceRef="IntermediateThrowEvent_1kqxy62" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_1wtoexj" name="&#60;CANCELED&#62; storniert" sourceRef="EndEvent_1fh4uu9" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_1xfeopt" sourceRef="Participant_1t9gai3" targetRef="StartEvent_0kv29ip" />
+    <bpmn:messageFlow id="MessageFlow_0bcw2p9" sourceRef="IntermediateThrowEvent_0keyj21" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_0g3k7h7" name=" &#60;CANCELLED&#62; storniert" sourceRef="EndEvent_1fh4uu9" targetRef="Participant_1t9gai3" />
+    <bpmn:messageFlow id="MessageFlow_0m1tbsx" sourceRef="EndEvent_0waaz2f" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_0mcvp6y" sourceRef="IntermediateThrowEvent_1grve4w" targetRef="Participant_1t9gai3" />
+    <bpmn:messageFlow id="MessageFlow_1vngqu4" sourceRef="IntermediateThrowEvent_1grve4w" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_1f3wbzc" sourceRef="IntermediateThrowEvent_1kbmtlt" targetRef="Participant_1t9gai3" />
+    <bpmn:messageFlow id="MessageFlow_0w6kszv" sourceRef="IntermediateThrowEvent_1kbmtlt" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_0vpmyi4" sourceRef="EndEvent_0waaz2f" targetRef="Participant_1t9gai3" />
+    <bpmn:messageFlow id="MessageFlow_0rrml1o" name="&#60;CANCELLED&#62; storniert (PORT3)" sourceRef="EndEvent_07kgu5o" targetRef="Participant_1t9gai3" />
+    <bpmn:messageFlow id="MessageFlow_1bw73ma" sourceRef="EndEvent_07kgu5o" targetRef="Participant_1ejfxi0" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_07g8nsh" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_0my0cud" sourceRef="ExclusiveGateway_0aba87l" targetRef="EndEvent_07kgu5o" />
+    <bpmn:sequenceFlow id="SequenceFlow_1cqibrf" sourceRef="IntermediateThrowEvent_1kbmtlt" targetRef="IntermediateThrowEvent_0qy4wkc" />
+    <bpmn:sequenceFlow id="SequenceFlow_1j1qb4c" sourceRef="IntermediateThrowEvent_1yfi94p" targetRef="IntermediateThrowEvent_1grve4w" />
+    <bpmn:sequenceFlow id="SequenceFlow_1imhzvv" sourceRef="IntermediateThrowEvent_1grve4w" targetRef="Task_1jrw8mo" />
+    <bpmn:sequenceFlow id="SequenceFlow_0298q8m" sourceRef="IntermediateThrowEvent_1kqxy62" targetRef="Task_1jrw8mo" />
+    <bpmn:sequenceFlow id="SequenceFlow_020rf42" name="ja (PORT1)" sourceRef="ExclusiveGateway_0aba87l" targetRef="IntermediateThrowEvent_1kqxy62" />
+    <bpmn:sequenceFlow id="SequenceFlow_12k0s2s" sourceRef="Task_10u6hfm" targetRef="ExclusiveGateway_0aba87l" />
+    <bpmn:sequenceFlow id="SequenceFlow_1iiouzj" name="nein (PORT2)" sourceRef="ExclusiveGateway_0aba87l" targetRef="Task_10u6hfm" />
+    <bpmn:sequenceFlow id="SequenceFlow_1okwwsz" name="nein nicht durchführbar" sourceRef="ExclusiveGateway_08bd5w3" targetRef="EndEvent_1fh4uu9" />
+    <bpmn:sequenceFlow id="SequenceFlow_141nguo" sourceRef="Task_1jrw8mo" targetRef="ExclusiveGateway_08bd5w3" />
+    <bpmn:sequenceFlow id="SequenceFlow_13v3onr" name="ja" sourceRef="ExclusiveGateway_08bd5w3" targetRef="IntermediateThrowEvent_0keyj21" />
+    <bpmn:sequenceFlow id="SequenceFlow_0jqiz0n" sourceRef="IntermediateThrowEvent_0keyj21" targetRef="ExclusiveGateway_1ads4v8" />
+    <bpmn:sequenceFlow id="SequenceFlow_1kub1bk" name="Maßnahme genehmigt (PORT1)" sourceRef="ExclusiveGateway_1fe4e85" targetRef="IntermediateThrowEvent_1kbmtlt" />
+    <bpmn:sequenceFlow id="SequenceFlow_08u5nff" sourceRef="ExclusiveGateway_1fe4e85" targetRef="IntermediateThrowEvent_1yfi94p" />
+    <bpmn:sequenceFlow id="SequenceFlow_0rl7fn3" name="nein absolut nicht durchführbar (PORT2)" sourceRef="ExclusiveGateway_1fe4e85" targetRef="EndEvent_0waaz2f" />
+    <bpmn:sequenceFlow id="SequenceFlow_0zgyrbw" sourceRef="Task_0u6wffz" targetRef="ExclusiveGateway_1fe4e85" />
+    <bpmn:sequenceFlow id="SequenceFlow_1d1slhx" sourceRef="StartEvent_0kv29ip" targetRef="Task_10u6hfm" />
+    <bpmn:sequenceFlow id="SequenceFlow_1qxdyec" sourceRef="StartEvent_15c1bg4" targetRef="Task_1jrw8mo" />
+    <bpmn:sequenceFlow id="SequenceFlow_0qnmrrb" sourceRef="ExclusiveGateway_1ads4v8" targetRef="Task_0u6wffz" />
+    <bpmn:sequenceFlow id="SequenceFlow_13hq0gl" name="ja" sourceRef="ExclusiveGateway_1ads4v8" targetRef="IntermediateThrowEvent_1vqiqg3" />
+    <bpmn:sequenceFlow id="SequenceFlow_1lxqk5n" sourceRef="IntermediateThrowEvent_1vqiqg3" targetRef="IntermediateThrowEvent_0qy4wkc" />
+    <bpmn:endEvent id="EndEvent_07kgu5o" name="">
+      <bpmn:incoming>SequenceFlow_0my0cud</bpmn:incoming>
+      <bpmn:messageEventDefinition id="MessageEventDefinition_0oq9ilr" />
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_1fh4uu9" name="">
+      <bpmn:incoming>SequenceFlow_1okwwsz</bpmn:incoming>
+      <bpmn:messageEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1vqiqg3" name="Status &#34;APPROVED&#34; setzen">
+      <bpmn:incoming>SequenceFlow_13hq0gl</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1lxqk5n</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1ads4v8" name="Konfig: SkipApproval">
+      <bpmn:incoming>SequenceFlow_0jqiz0n</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0qnmrrb</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_13hq0gl</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0keyj21" name="Zur Genehmigung">
+      <bpmn:incoming>SequenceFlow_13v3onr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0jqiz0n</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1grve4w" name="zurückgewiesen">
+      <bpmn:incoming>SequenceFlow_1j1qb4c</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1imhzvv</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1yfi94p" name="Status &#60;APPLIED&#62; setzen">
+      <bpmn:incoming>SequenceFlow_08u5nff</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1j1qb4c</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:startEvent id="StartEvent_15c1bg4" name="1">
+      <bpmn:outgoing>SequenceFlow_1qxdyec</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:task id="Task_0u6wffz" name="&#60;FOR_APPROVAL&#62; Maßnahme-antrag und Ablauf prüfen ">
+      <bpmn:incoming>SequenceFlow_0qnmrrb</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0zgyrbw</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1fe4e85" name="korrigierbare Fehler (PORT3)">
+      <bpmn:incoming>SequenceFlow_0zgyrbw</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0rl7fn3</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_08u5nff</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1kub1bk</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1kbmtlt" name="">
+      <bpmn:incoming>SequenceFlow_1kub1bk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1cqibrf</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0qy4wkc" name="2">
+      <bpmn:incoming>SequenceFlow_1cqibrf</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1lxqk5n</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:startEvent id="StartEvent_0kv29ip" name="Arbeitsauftrag">
+      <bpmn:outgoing>SequenceFlow_1d1slhx</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:startEvent>
+    <bpmn:endEvent id="EndEvent_0waaz2f" name="&#60;CANCELLED&#62; storniert">
+      <bpmn:incoming>SequenceFlow_0rl7fn3</bpmn:incoming>
+      <bpmn:messageEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_08bd5w3" name="Maßnahme möglich?">
+      <bpmn:incoming>SequenceFlow_141nguo</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1okwwsz</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_13v3onr</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:task id="Task_10u6hfm" name="&#60;NEW&#62; Maßnahme-antrag anlegen ">
+      <bpmn:incoming>SequenceFlow_1d1slhx</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1iiouzj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_12k0s2s</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0aba87l" name="beantragen? ">
+      <bpmn:incoming>SequenceFlow_12k0s2s</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_020rf42</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1iiouzj</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0my0cud</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1kqxy62" name="">
+      <bpmn:incoming>SequenceFlow_020rf42</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0298q8m</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:task id="Task_1jrw8mo" name="&#60;APPLIED&#62;    M-antrag bearb. und Ablauf festlegen ">
+      <bpmn:incoming>SequenceFlow_1imhzvv</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1qxdyec</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0298q8m</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_141nguo</bpmn:outgoing>
+    </bpmn:task>
+  </bpmn:process>
+  <bpmn:process id="Process_09mc0gn" isExecutable="false" />
+  <bpmn:process id="Process_13t0ny3" isExecutable="false" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_00socrt">
+      <bpmndi:BPMNShape id="Participant_0q0x948_di" bpmnElement="Participant_0q0x948">
+        <dc:Bounds x="123" y="28" width="1541" height="493" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1ejfxi0_di" bpmnElement="Participant_1ejfxi0">
+        <dc:Bounds x="123" y="545" width="1544" height="73" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_10u6hfm_di" bpmnElement="Task_10u6hfm">
+        <dc:Bounds x="241" y="224" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1d1slhx_di" bpmnElement="SequenceFlow_1d1slhx">
+        <di:waypoint x="207" y="264" />
+        <di:waypoint x="241" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="179" y="242" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_0fg3lo6_di" bpmnElement="StartEvent_0kv29ip">
+        <dc:Bounds x="171" y="246" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="155" y="285" width="68" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12k0s2s_di" bpmnElement="SequenceFlow_12k0s2s">
+        <di:waypoint x="341" y="264" />
+        <di:waypoint x="386" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="319" y="242" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1uyj4kv_di" bpmnElement="IntermediateThrowEvent_1kqxy62">
+        <dc:Bounds x="486" y="246" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="477" y="227" width="53" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1ms9428_di" bpmnElement="MessageFlow_1ms9428">
+        <di:waypoint x="504" y="282" />
+        <di:waypoint x="504" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="474" y="406.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_1jrw8mo_di" bpmnElement="Task_1jrw8mo">
+        <dc:Bounds x="569" y="224" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_08bd5w3_di" bpmnElement="ExclusiveGateway_08bd5w3" isMarkerVisible="true">
+        <dc:Bounds x="761" y="239" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="757" y="290" width="57" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_141nguo_di" bpmnElement="SequenceFlow_141nguo">
+        <di:waypoint x="669" y="264" />
+        <di:waypoint x="761" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="670" y="242" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1okwwsz_di" bpmnElement="SequenceFlow_1okwwsz">
+        <di:waypoint x="786" y="239" />
+        <di:waypoint x="786" y="166" />
+        <di:waypoint x="809" y="166" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="831" y="116" width="64" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_06ho5ly_di" bpmnElement="EndEvent_1fh4uu9">
+        <dc:Bounds x="809" y="148" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="843" y="159" width="90" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1wtoexj_di" bpmnElement="MessageFlow_1wtoexj">
+        <di:waypoint x="827" y="184" />
+        <di:waypoint x="827" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="603" y="113" width="73" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Participant_1t9gai3_di" bpmnElement="Participant_1t9gai3">
+        <dc:Bounds x="123" y="14" width="1539" height="82" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1xfeopt_di" bpmnElement="MessageFlow_1xfeopt">
+        <di:waypoint x="191" y="97" />
+        <di:waypoint x="191" y="247" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="161" y="165" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13v3onr_di" bpmnElement="SequenceFlow_13v3onr">
+        <di:waypoint x="811" y="264" />
+        <di:waypoint x="865" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="840" y="267" width="8" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0cyrqh9_di" bpmnElement="IntermediateThrowEvent_0keyj21">
+        <dc:Bounds x="865" y="246" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="849" y="222" width="89" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_0bcw2p9_di" bpmnElement="MessageFlow_0bcw2p9">
+        <di:waypoint x="883" y="282" />
+        <di:waypoint x="883" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="853" y="406.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0g3k7h7_di" bpmnElement="MessageFlow_0g3k7h7">
+        <di:waypoint x="827" y="148" />
+        <di:waypoint x="827" y="96" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="735" y="113" width="83" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_0u6wffz_di" bpmnElement="Task_0u6wffz">
+        <dc:Bounds x="1174" y="224" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jqiz0n_di" bpmnElement="SequenceFlow_0jqiz0n">
+        <di:waypoint x="901" y="264" />
+        <di:waypoint x="1054" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="932.5" y="242" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1fe4e85_di" bpmnElement="ExclusiveGateway_1fe4e85" isMarkerVisible="true">
+        <dc:Bounds x="1331" y="239" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1359" y="319" width="79" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zgyrbw_di" bpmnElement="SequenceFlow_0zgyrbw">
+        <di:waypoint x="1274" y="264" />
+        <di:waypoint x="1331" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1257.5" y="242" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0rl7fn3_di" bpmnElement="SequenceFlow_0rl7fn3">
+        <di:waypoint x="1356" y="239" />
+        <di:waypoint x="1356" y="166" />
+        <di:waypoint x="1149" y="166" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1369" y="172" width="64" height="53" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_12ezuh1_di" bpmnElement="EndEvent_0waaz2f">
+        <dc:Bounds x="1113" y="148" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1039" y="111" width="80" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_0m1tbsx_di" bpmnElement="MessageFlow_0m1tbsx">
+        <di:waypoint x="1131" y="184" />
+        <di:waypoint x="1131" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1101" y="357.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_08u5nff_di" bpmnElement="SequenceFlow_08u5nff">
+        <di:waypoint x="1356" y="289" />
+        <di:waypoint x="1356" y="428" />
+        <di:waypoint x="967" y="428" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1326" y="351.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0j3xitj_di" bpmnElement="IntermediateThrowEvent_1grve4w">
+        <dc:Bounds x="667" y="410" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="720" y="432" width="79" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1imhzvv_di" bpmnElement="SequenceFlow_1imhzvv">
+        <di:waypoint x="667" y="428" />
+        <di:waypoint x="619" y="428" />
+        <di:waypoint x="619" y="304" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="598" y="406" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0mcvp6y_di" bpmnElement="MessageFlow_0mcvp6y">
+        <di:waypoint x="685" y="410" />
+        <di:waypoint x="685" y="96" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="246" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1vngqu4_di" bpmnElement="MessageFlow_1vngqu4">
+        <di:waypoint x="685" y="446" />
+        <di:waypoint x="685" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="488.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kub1bk_di" bpmnElement="SequenceFlow_1kub1bk">
+        <di:waypoint x="1381" y="264" />
+        <di:waypoint x="1506" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1459" y="268" width="57" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_07tnt55_di" bpmnElement="IntermediateThrowEvent_1kbmtlt">
+        <dc:Bounds x="1506" y="246" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1573" y="286" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1f3wbzc_di" bpmnElement="MessageFlow_1f3wbzc">
+        <di:waypoint x="1524" y="246" />
+        <di:waypoint x="1524" y="96" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1494" y="164" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0w6kszv_di" bpmnElement="MessageFlow_0w6kszv">
+        <di:waypoint x="1524" y="282" />
+        <di:waypoint x="1524" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1494" y="406.5" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_11vz43w_di" bpmnElement="StartEvent_15c1bg4">
+        <dc:Bounds x="1598" y="481" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1614" y="495" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qxdyec_di" bpmnElement="SequenceFlow_1qxdyec">
+        <di:waypoint x="1598" y="499" />
+        <di:waypoint x="594" y="499" />
+        <di:waypoint x="594" y="304" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1051" y="477" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0vpmyi4_di" bpmnElement="MessageFlow_0vpmyi4">
+        <di:waypoint x="1131" y="148" />
+        <di:waypoint x="1131" y="96" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1101" y="115.5" width="90" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0298q8m_di" bpmnElement="SequenceFlow_0298q8m">
+        <di:waypoint x="522" y="264" />
+        <di:waypoint x="569" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="243" width="90" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0aba87l_di" bpmnElement="ExclusiveGateway_0aba87l" isMarkerVisible="true">
+        <dc:Bounds x="386" y="239" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="379" y="293" width="65" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_020rf42_di" bpmnElement="SequenceFlow_020rf42">
+        <di:waypoint x="436" y="264" />
+        <di:waypoint x="486" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="433" y="243" width="55" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1iiouzj_di" bpmnElement="SequenceFlow_1iiouzj">
+        <di:waypoint x="411" y="239" />
+        <di:waypoint x="411" y="359" />
+        <di:waypoint x="223" y="359" />
+        <di:waypoint x="223" y="264" />
+        <di:waypoint x="241" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="280" y="342" width="68" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1yfi94p_di" bpmnElement="IntermediateThrowEvent_1yfi94p">
+        <dc:Bounds x="931" y="410" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="920" y="449" width="60" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1j1qb4c_di" bpmnElement="SequenceFlow_1j1qb4c">
+        <di:waypoint x="931" y="428" />
+        <di:waypoint x="817" y="428" />
+        <di:waypoint x="817" y="428" />
+        <di:waypoint x="703" y="428" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="787" y="421" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0qy4wkc_di" bpmnElement="IntermediateThrowEvent_0qy4wkc">
+        <dc:Bounds x="1598" y="246" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1614" y="259" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cqibrf_di" bpmnElement="SequenceFlow_1cqibrf">
+        <di:waypoint x="1542" y="264" />
+        <di:waypoint x="1598" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1525" y="239" width="90" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1ads4v8_di" bpmnElement="ExclusiveGateway_1ads4v8" isMarkerVisible="true">
+        <dc:Bounds x="1054" y="239" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1001" y="296" width="65" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qnmrrb_di" bpmnElement="SequenceFlow_0qnmrrb">
+        <di:waypoint x="1104" y="264" />
+        <di:waypoint x="1174" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1139" y="242" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13hq0gl_di" bpmnElement="SequenceFlow_13hq0gl">
+        <di:waypoint x="1079" y="289" />
+        <di:waypoint x="1079" y="473" />
+        <di:waypoint x="1387" y="473" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1091" y="374" width="8" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1vqiqg3_di" bpmnElement="IntermediateThrowEvent_1vqiqg3">
+        <dc:Bounds x="1387" y="455" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1370" y="407" width="70" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lxqk5n_di" bpmnElement="SequenceFlow_1lxqk5n">
+        <di:waypoint x="1423" y="473" />
+        <di:waypoint x="1616" y="473" />
+        <di:waypoint x="1616" y="282" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1519.5" y="451" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_07kgu5o_di" bpmnElement="EndEvent_07kgu5o">
+        <dc:Bounds x="434" y="148" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0my0cud_di" bpmnElement="SequenceFlow_0my0cud">
+        <di:waypoint x="411" y="239" />
+        <di:waypoint x="411" y="166" />
+        <di:waypoint x="434" y="166" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0rrml1o_di" bpmnElement="MessageFlow_0rrml1o">
+        <di:waypoint x="452" y="148" />
+        <di:waypoint x="452" y="96" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="360" y="113" width="87" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1bw73ma_di" bpmnElement="MessageFlow_1bw73ma">
+        <di:waypoint x="452" y="184" />
+        <di:waypoint x="452" y="545" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/src/main/asciidoc/originalfiles/massnahme_planen_und_genehmigen_2.bpmn b/src/main/asciidoc/originalfiles/massnahme_planen_und_genehmigen_2.bpmn
new file mode 100644
index 0000000..7211b43
--- /dev/null
+++ b/src/main/asciidoc/originalfiles/massnahme_planen_und_genehmigen_2.bpmn
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.15.1">
+  <bpmn:collaboration id="Collaboration_00socrt">
+    <bpmn:extensionElements>
+      <camunda:properties>
+        <camunda:property />
+        <camunda:property />
+      </camunda:properties>
+    </bpmn:extensionElements>
+    <bpmn:participant id="Participant_0q0x948" name="Maßnahmeanrag" processRef="Process_07g8nsh" />
+    <bpmn:participant id="Participant_1ejfxi0" name="Leitsystem" processRef="Process_09mc0gn" />
+    <bpmn:participant id="Participant_1t9gai3" name="Antragsteller" processRef="Process_13t0ny3" />
+    <bpmn:messageFlow id="MessageFlow_1ms9428" sourceRef="IntermediateThrowEvent_1kqxy62" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_0bfa10t" sourceRef="Participant_0q0x948" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_1q225zz" sourceRef="IntermediateThrowEvent_07yjwxh" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_1h3l10k" sourceRef="IntermediateThrowEvent_04agc6x" targetRef="Participant_1t9gai3" />
+    <bpmn:messageFlow id="MessageFlow_14cwk7y" sourceRef="IntermediateThrowEvent_04agc6x" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_18ffld3" sourceRef="IntermediateThrowEvent_07yjwxh" targetRef="Participant_1t9gai3" />
+    <bpmn:messageFlow id="MessageFlow_0b7xvax" sourceRef="IntermediateThrowEvent_1fxuupy" targetRef="Participant_1ejfxi0" />
+    <bpmn:messageFlow id="MessageFlow_0j3k8bi" sourceRef="IntermediateThrowEvent_1fxuupy" targetRef="Participant_1t9gai3" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_07g8nsh" isExecutable="false">
+    <bpmn:laneSet id="LaneSet_0oyp50l" />
+    <bpmn:sequenceFlow id="SequenceFlow_12k0s2s" sourceRef="Task_10u6hfm" targetRef="IntermediateThrowEvent_1kqxy62" />
+    <bpmn:sequenceFlow id="SequenceFlow_19xxglj" name="ja (PORT1)" sourceRef="ExclusiveGateway_08bd5w3" targetRef="IntermediateThrowEvent_04agc6x" />
+    <bpmn:sequenceFlow id="SequenceFlow_18xtlmk" sourceRef="IntermediateThrowEvent_1kqxy62" targetRef="Task_1jrw8mo" />
+    <bpmn:sequenceFlow id="SequenceFlow_1p1u3cg" name="nein, gar nicht möglich (PORT3)" sourceRef="ExclusiveGateway_08bd5w3" targetRef="IntermediateThrowEvent_07yjwxh" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yfnydz" name="nein, zur Zeit nicht möglich (PORT2)" sourceRef="ExclusiveGateway_08bd5w3" targetRef="IntermediateThrowEvent_1fxuupy" />
+    <bpmn:sequenceFlow id="SequenceFlow_079gys9" sourceRef="IntermediateThrowEvent_07yjwxh" targetRef="EndEvent_1u3v9iq" />
+    <bpmn:sequenceFlow id="SequenceFlow_0fse6eb" sourceRef="ExclusiveGateway_08bd5w3" targetRef="IntermediateThrowEvent_04agc6x" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bj3tmn" sourceRef="IntermediateThrowEvent_04agc6x" targetRef="Task_0u6wffz" />
+    <bpmn:sequenceFlow id="SequenceFlow_02ytu23" sourceRef="IntermediateThrowEvent_1kqxy62" targetRef="Task_1jrw8mo" />
+    <bpmn:task id="Task_1jrw8mo" name="&#60;REQUESTED&#62;    ">
+      <bpmn:incoming>SequenceFlow_02ytu23</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_18xtlmk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0eduanc</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_113x674</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:sequenceFlow id="SequenceFlow_0eduanc" sourceRef="Task_1jrw8mo" targetRef="ExclusiveGateway_08bd5w3" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1kqxy62" name="beantragt?">
+      <bpmn:incoming>SequenceFlow_113x674</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_12k0s2s</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18xtlmk</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_02ytu23</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_113x674" sourceRef="Task_1jrw8mo" targetRef="IntermediateThrowEvent_1kqxy62" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_07yjwxh" name="Status &#34;CANCELLED&#34; setzen">
+      <bpmn:incoming>SequenceFlow_1p1u3cg</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_079gys9</bpmn:outgoing>
+      <bpmn:messageEventDefinition id="MessageEventDefinition_0sxtinm" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_04agc6x" name="freigegeben">
+      <bpmn:incoming>SequenceFlow_0fse6eb</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_19xxglj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bj3tmn</bpmn:outgoing>
+      <bpmn:messageEventDefinition id="MessageEventDefinition_1xc3i7u" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:task id="Task_0u6wffz" name="&#60;RELEASED&#62; ">
+      <bpmn:incoming>SequenceFlow_1bj3tmn</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_04avxd1</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_08bd5w3" name="Massnahme freigeben?">
+      <bpmn:incoming>SequenceFlow_0eduanc</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_19xxglj</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1p1u3cg</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0yfnydz</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0fse6eb</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_1u3v9iq">
+      <bpmn:incoming>SequenceFlow_079gys9</bpmn:incoming>
+      <bpmn:terminateEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1fxuupy" name="zurückgewiesen">
+      <bpmn:incoming>SequenceFlow_0yfnydz</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0xb2yo2</bpmn:outgoing>
+      <bpmn:messageEventDefinition id="MessageEventDefinition_114nvhe" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:task id="Task_10u6hfm" name="&#60;APPROVED&#62;  ">
+      <bpmn:incoming>SequenceFlow_1eyvajx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_12k0s2s</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0c8mwgo" name="2">
+      <bpmn:outgoing>SequenceFlow_1eyvajx</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1eyvajx" sourceRef="IntermediateThrowEvent_0c8mwgo" targetRef="Task_10u6hfm" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1lx4c43" name="3">
+      <bpmn:incoming>SequenceFlow_04avxd1</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_04avxd1" sourceRef="Task_0u6wffz" targetRef="IntermediateThrowEvent_1lx4c43" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0uz89f9" name="5">
+      <bpmn:incoming>SequenceFlow_0xb2yo2</bpmn:incoming>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0xb2yo2" sourceRef="IntermediateThrowEvent_1fxuupy" targetRef="IntermediateThrowEvent_0uz89f9" />
+  </bpmn:process>
+  <bpmn:process id="Process_09mc0gn" isExecutable="false" />
+  <bpmn:process id="Process_13t0ny3" isExecutable="false" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_00socrt">
+      <bpmndi:BPMNShape id="Participant_0q0x948_di" bpmnElement="Participant_0q0x948">
+        <dc:Bounds x="123" y="18" width="1235" height="503" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1ejfxi0_di" bpmnElement="Participant_1ejfxi0">
+        <dc:Bounds x="123" y="544" width="1237" height="74" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_10u6hfm_di" bpmnElement="Task_10u6hfm">
+        <dc:Bounds x="251" y="224" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12k0s2s_di" bpmnElement="SequenceFlow_12k0s2s">
+        <di:waypoint x="351" y="264" />
+        <di:waypoint x="468" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="318.5" y="242" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1uyj4kv_di" bpmnElement="IntermediateThrowEvent_1kqxy62">
+        <dc:Bounds x="468" y="246" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="467" y="226" width="53" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1ms9428_di" bpmnElement="MessageFlow_1ms9428">
+        <di:waypoint x="486" y="282" />
+        <di:waypoint x="486" y="544" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="474" y="406" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_1jrw8mo_di" bpmnElement="Task_1jrw8mo">
+        <dc:Bounds x="594" y="224" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_08bd5w3_di" bpmnElement="ExclusiveGateway_08bd5w3" isMarkerVisible="true">
+        <dc:Bounds x="862" y="239" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="856" y="285" width="60" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1t9gai3_di" bpmnElement="Participant_1t9gai3">
+        <dc:Bounds x="123" y="24" width="1235" height="81" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0u6wffz_di" bpmnElement="Task_0u6wffz">
+        <dc:Bounds x="1139" y="224" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19xxglj_di" bpmnElement="SequenceFlow_19xxglj">
+        <di:waypoint x="912" y="264" />
+        <di:waypoint x="1013" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="936" y="246" width="55" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18xtlmk_di" bpmnElement="SequenceFlow_18xtlmk">
+        <di:waypoint x="504" y="264" />
+        <di:waypoint x="594" y="264" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1p1u3cg_di" bpmnElement="SequenceFlow_1p1u3cg">
+        <di:waypoint x="887" y="239" />
+        <di:waypoint x="887" y="160" />
+        <di:waypoint x="845" y="160" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="891" y="192" width="86" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yfnydz_di" bpmnElement="SequenceFlow_0yfnydz">
+        <di:waypoint x="887" y="289" />
+        <di:waypoint x="887" y="381" />
+        <di:waypoint x="725" y="381" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="895" y="337" width="65" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1fxuupy_di" bpmnElement="IntermediateThrowEvent_1fxuupy">
+        <dc:Bounds x="689" y="363" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="668" y="406" width="78" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0zsmog1_di" bpmnElement="EndEvent_1u3v9iq">
+        <dc:Bounds x="749" y="142" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_07yjwxh_di" bpmnElement="IntermediateThrowEvent_07yjwxh">
+        <dc:Bounds x="809" y="142" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="732" y="183" width="74" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_079gys9_di" bpmnElement="SequenceFlow_079gys9">
+        <di:waypoint x="809" y="160" />
+        <di:waypoint x="785" y="160" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0bfa10t_di" bpmnElement="MessageFlow_0bfa10t">
+        <di:waypoint x="763" y="521" />
+        <di:waypoint x="763" y="544" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1q225zz_di" bpmnElement="MessageFlow_1q225zz">
+        <di:waypoint x="827" y="178" />
+        <di:waypoint x="827" y="544" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_04agc6x_di" bpmnElement="IntermediateThrowEvent_04agc6x">
+        <dc:Bounds x="1013" y="246" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1007" y="294" width="58" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0fse6eb_di" bpmnElement="SequenceFlow_0fse6eb">
+        <di:waypoint x="912" y="264" />
+        <di:waypoint x="1013" y="264" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1h3l10k_di" bpmnElement="MessageFlow_1h3l10k">
+        <di:waypoint x="1031" y="246" />
+        <di:waypoint x="1031" y="105" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bj3tmn_di" bpmnElement="SequenceFlow_1bj3tmn">
+        <di:waypoint x="1049" y="264" />
+        <di:waypoint x="1139" y="264" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_02ytu23_di" bpmnElement="SequenceFlow_02ytu23">
+        <di:waypoint x="504" y="264" />
+        <di:waypoint x="594" y="264" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eduanc_di" bpmnElement="SequenceFlow_0eduanc">
+        <di:waypoint x="694" y="264" />
+        <di:waypoint x="862" y="264" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_113x674_di" bpmnElement="SequenceFlow_113x674">
+        <di:waypoint x="594" y="264" />
+        <di:waypoint x="504" y="264" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_14cwk7y_di" bpmnElement="MessageFlow_14cwk7y">
+        <di:waypoint x="1031" y="282" />
+        <di:waypoint x="1031" y="544" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_18ffld3_di" bpmnElement="MessageFlow_18ffld3">
+        <di:waypoint x="827" y="142" />
+        <di:waypoint x="827" y="105" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0b7xvax_di" bpmnElement="MessageFlow_0b7xvax">
+        <di:waypoint x="707" y="399" />
+        <di:waypoint x="707" y="544" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0j3k8bi_di" bpmnElement="MessageFlow_0j3k8bi">
+        <di:waypoint x="707" y="363" />
+        <di:waypoint x="707" y="105" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0c8mwgo_di" bpmnElement="IntermediateThrowEvent_0c8mwgo">
+        <dc:Bounds x="174.798" y="246" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="190" y="259" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1eyvajx_di" bpmnElement="SequenceFlow_1eyvajx">
+        <di:waypoint x="211" y="264" />
+        <di:waypoint x="251" y="264" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1lx4c43_di" bpmnElement="IntermediateThrowEvent_1lx4c43">
+        <dc:Bounds x="1288.798" y="246" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1304" y="261" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_04avxd1_di" bpmnElement="SequenceFlow_04avxd1">
+        <di:waypoint x="1239" y="264" />
+        <di:waypoint x="1289" y="264" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0uz89f9_di" bpmnElement="IntermediateThrowEvent_0uz89f9">
+        <dc:Bounds x="255.798" y="363" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="271" y="376" width="7" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xb2yo2_di" bpmnElement="SequenceFlow_0xb2yo2">
+        <di:waypoint x="689" y="381" />
+        <di:waypoint x="292" y="381" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/src/main/java/org/eclipse/openk/PlannedGridMeasuresApplication.java b/src/main/java/org/eclipse/openk/PlannedGridMeasuresApplication.java
new file mode 100644
index 0000000..edde80b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/PlannedGridMeasuresApplication.java
@@ -0,0 +1,126 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk;
+
+import io.dropwizard.Application;
+import io.dropwizard.setup.Bootstrap;
+import io.dropwizard.setup.Environment;
+import org.apache.log4j.Logger;
+import org.eclipse.jetty.servlets.CrossOriginFilter;
+import org.eclipse.openk.api.BackendSettings;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.InitMailAddressCacheJob;
+import org.eclipse.openk.db.dao.EntityHelper;
+import org.eclipse.openk.health.DBIsPresentHealthCheck;
+import org.eclipse.openk.health.MailConfigurationHealthCheck;
+import org.eclipse.openk.health.MailServerPresentHealthCheck;
+import org.eclipse.openk.resources.MasterDataResource;
+import org.eclipse.openk.resources.PlannedGridMeasuresResource;
+import org.glassfish.jersey.media.multipart.MultiPartFeature;
+
+import javax.servlet.DispatcherType;
+import javax.servlet.FilterRegistration;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.eclipse.openk.common.JsonGeneratorBase.getGson;
+
+public class PlannedGridMeasuresApplication extends Application<PlannedGridMeasuresConfiguration> {
+    private static final Logger logger = Logger.getLogger(PlannedGridMeasuresApplication.class); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public static void main(final String[] args) throws Exception {
+
+        new PlannedGridMeasuresApplication().run(args);
+    }
+
+    @Override
+    public String getName() {
+        return "PlannedGridMeasures";
+    }
+
+    @Override
+    public void initialize(final Bootstrap<PlannedGridMeasuresConfiguration> bootstrap) {
+        //Initializations are mainly made in the method configureApp(configuration)
+    }
+
+    public void run(final PlannedGridMeasuresConfiguration configuration,
+                    final Environment environment) {
+
+        configureApp( configuration );
+
+        final PlannedGridMeasuresResource resource = new PlannedGridMeasuresResource();
+        final MasterDataResource mdResource = new MasterDataResource();
+        final DBIsPresentHealthCheck dBIsPresentHealthCheck = new DBIsPresentHealthCheck();
+        final MailServerPresentHealthCheck mailServerPresentHealthCheck = new MailServerPresentHealthCheck();
+        final MailConfigurationHealthCheck mailConfigurationHealthCheck = new MailConfigurationHealthCheck();
+
+
+        environment.healthChecks().register("version-main", dBIsPresentHealthCheck);
+        environment.healthChecks().register("mailserver-running", mailServerPresentHealthCheck);
+        environment.healthChecks().register("mailconfiguration-ok", mailConfigurationHealthCheck);
+        environment.jersey().register(resource);
+        environment.jersey().register(mdResource);
+        environment.jersey().register(MultiPartFeature.class);
+        configureCors(environment);
+
+    }
+
+    private void configureApp( final PlannedGridMeasuresConfiguration configuration ) {
+
+        // first set db
+        EntityHelper.setFactoryName(configuration.getPersistencyUnit());
+        EntityHelper.setProperties(extractDbProperties( configuration.getDbConn() ));
+        BackendConfig.configure(configuration, getBackendSettings());
+        BackendConfig.getInstance().processAndSetWhiteListDocumenttypes(configuration.getWhiteListDocumenttypes());
+        BackendConfig.getInstance().setEmailConfiguration(configuration.getEmailConfiguration());
+
+        InitMailAddressCacheJob initMailAddressCacheJob = new InitMailAddressCacheJob();
+        initMailAddressCacheJob.init();
+    }
+
+    private BackendSettings getBackendSettings() {
+        ResourceLoaderBase loaderBase = new ResourceLoaderBase();
+        String backendSettingsString = loaderBase.loadFromPath("./backendSettings.json");
+        return getGson().fromJson(backendSettingsString, BackendSettings.class);
+    }
+
+    private Map<String, Object> extractDbProperties( PlannedGridMeasuresConfiguration.DBConnection dbconn ) {
+        Map<String, Object> retMap = new HashMap<>();
+        retMap.put("javax.persistence.jdbc.driver", dbconn.getDriver());
+        retMap.put("javax.persistence.jdbc.url", dbconn.getUrl());
+        retMap.put("javax.persistence.jdbc.user", dbconn.getUser());
+        retMap.put("javax.persistence.jdbc.password", dbconn.getPassword());
+        return retMap;
+    }
+
+    private void configureCors(Environment environment) {
+        final FilterRegistration.Dynamic cors =
+                environment.servlets().addFilter("CORS", CrossOriginFilter.class);
+
+        // Configure CORS parameters
+        cors.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
+        cors.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM, "X-Requested-With,Content-Type,Accept,Origin,Authorization");
+        cors.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "OPTIONS,GET,PUT,POST,DELETE,HEAD");
+        cors.setInitParameter(CrossOriginFilter.ALLOW_CREDENTIALS_PARAM, "true");
+
+        // Add URL mapping
+        cors.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
+        // DO NOT pass a preflight request to down-stream auth filters
+        // unauthenticated preflight requests should be permitted by spec
+        cors.setInitParameter(CrossOriginFilter.CHAIN_PREFLIGHT_PARAM, Boolean.FALSE.toString());
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/PlannedGridMeasuresConfiguration.java b/src/main/java/org/eclipse/openk/PlannedGridMeasuresConfiguration.java
new file mode 100644
index 0000000..80ba2a9
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/PlannedGridMeasuresConfiguration.java
@@ -0,0 +1,165 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.dropwizard.Configuration;
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class PlannedGridMeasuresConfiguration extends Configuration {
+
+    public static class EmailConfiguration {
+        @JsonProperty
+        private String smtpHost;
+
+        @JsonProperty
+        private String port;
+
+        @JsonProperty
+        private String sender;
+
+        public String getSmtpHost() {
+            return smtpHost;
+        }
+
+        public void setSmtpHost(String smtpHost) {
+            this.smtpHost = smtpHost;
+        }
+
+        public String getPort() {
+            return port;
+        }
+
+        public void setPort(String port) {
+            this.port = port;
+        }
+
+        public String getSender() {
+            return sender;
+        }
+
+        public void setSender(String sender) {
+            this.sender = sender;
+        }
+    }
+
+    public static class DBConnection {
+        @NotEmpty
+        private String driver;
+
+        @NotEmpty
+        private String url;
+
+        @JsonProperty
+        private String user;
+
+        @JsonProperty
+        private String password;
+
+        public String getDriver() {
+            return driver;
+        }
+
+        public void setDriver(String driver) {
+            this.driver = driver;
+        }
+
+        public String getUrl() {
+            return url;
+        }
+
+        public void setUrl(String url) {
+            this.url = url;
+        }
+
+        public String getUser() {
+            return user;
+        }
+
+        public void setUser(String user) {
+            this.user = user;
+        }
+
+        public String getPassword() {
+            return password;
+        }
+
+        public void setPassword(String password) {
+            this.password = password;
+        }
+    }
+    @NotEmpty
+    private String persistencyUnit;
+
+    @NotEmpty
+    private String portalBaseURL;
+
+    @NotEmpty
+    private String portalFeLoginURL;
+
+    private String whiteListDocumenttypes;
+
+    private DBConnection dbConn;
+
+    private EmailConfiguration emailConfiguration;
+
+
+    @JsonProperty
+    public String getPortalBaseURL() { return this.portalBaseURL; }
+
+    @JsonProperty
+    public void setPortalBaseURL(String portalBaseURL) {this.portalBaseURL = portalBaseURL;}
+
+    @JsonProperty
+    public DBConnection getDbConn() {
+        return dbConn;
+    }
+
+    @JsonProperty
+    public void setDbConn(DBConnection dbConn) {
+        this.dbConn = dbConn;
+    }
+
+    @JsonProperty
+    public String getPersistencyUnit() { return persistencyUnit; }
+
+    @JsonProperty
+    public void setPersistencyUnit(String persistencyUnit) {this.persistencyUnit = persistencyUnit;}
+
+    @JsonProperty
+    public String getWhiteListDocumenttypes() {
+        return whiteListDocumenttypes;
+    }
+
+    @JsonProperty
+    public void setWhiteListDocumenttypes(String whiteListDocumenttypes) {
+        this.whiteListDocumenttypes = whiteListDocumenttypes;
+    }
+
+    @JsonProperty
+    public EmailConfiguration getEmailConfiguration() {
+        return emailConfiguration;
+    }
+
+    @JsonProperty
+    public void setEmailConfiguration(EmailConfiguration emailConfiguration) {
+        this.emailConfiguration = emailConfiguration;
+    }
+
+    public String getPortalFeLoginURL() {
+        return portalFeLoginURL;
+    }
+
+    public void setPortalFeLoginURL(String portalFeLoginURL) {
+        this.portalFeLoginURL = portalFeLoginURL;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/api/BackendSettings.java b/src/main/java/org/eclipse/openk/api/BackendSettings.java
new file mode 100644
index 0000000..9337cf2
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/BackendSettings.java
@@ -0,0 +1,115 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class BackendSettings {
+
+  public static class BpmnGridConfig {
+    public static final String SKIP_FOR_APPROVAL = "skipForApproval";
+    public static final String END_AFTER_APPROVED = "endAfterApproved";
+    public static final String SKIP_REQUESTING = "skipRequesting";
+    public static final String END_AFTER_RELEASED = "endAfterReleased";
+    public static final String SKIP_IN_WORK = "skipInWork";
+
+    @JsonProperty
+    private boolean skipForApproval;
+
+    @JsonProperty
+    private boolean endAfterApproved;
+
+    @JsonProperty
+    private boolean skipRequesting;
+
+    @JsonProperty
+    private boolean endAfterReleased;
+
+    @JsonProperty
+    private boolean skipInWork;
+
+    public boolean isSkipForApproval() {
+      return skipForApproval;
+    }
+
+    public void setSkipForApproval(boolean skipForApproval) {
+      this.skipForApproval = skipForApproval;
+    }
+
+    public boolean isEndAfterApproved() {
+      return endAfterApproved;
+    }
+
+    public void setEndAfterApproved(boolean endAfterApproved) {
+      this.endAfterApproved = endAfterApproved;
+    }
+
+    public boolean isSkipRequesting() {
+      return skipRequesting;
+    }
+
+    public void setSkipRequesting(boolean skipRequesting) {
+      this.skipRequesting = skipRequesting;
+    }
+
+    public boolean isEndAfterReleased() {
+      return endAfterReleased;
+    }
+
+    public void setEndAfterReleased(boolean endAfterReleased) {
+      this.endAfterReleased = endAfterReleased;
+    }
+
+    public boolean isSkipInWork() {
+      return skipInWork;
+    }
+
+    public void setSkipInWork(boolean skipInWork) {
+      this.skipInWork = skipInWork;
+    }
+  }
+
+  @JsonProperty
+  private Integer reminderPeriod;
+
+  @JsonProperty
+  private String emailTemplateAddressesForNotification;
+
+  @JsonProperty
+  private Integer reloadMailAddressesInMin;
+
+  private BpmnGridConfig bpmnGridConfig;
+
+  public Integer getReminderPeriod() {
+    return reminderPeriod;
+  }
+
+  public void setReminderPeriod(Integer reminderPeriod) {
+    this.reminderPeriod = reminderPeriod;
+  }
+
+  public Integer getReloadMailAddressesInMin() { return reloadMailAddressesInMin; }
+
+  public void setReloadMailAddressesInMin(Integer reloadMailAddressesInMin) { this.reloadMailAddressesInMin = reloadMailAddressesInMin; }
+
+  public BpmnGridConfig getBpmnGridConfig() {
+    return bpmnGridConfig;
+  }
+
+  public void setBpmnGridConfig(BpmnGridConfig bpmnGridConfig) {
+    this.bpmnGridConfig = bpmnGridConfig;
+  }
+
+  public String getEmailTemplateAddressesForNotification() { return emailTemplateAddressesForNotification; }
+
+  public void setEmailTemplateAddressesForNotification(String emailTemplateAddressesForNotification) { this.emailTemplateAddressesForNotification = emailTemplateAddressesForNotification; }
+}
diff --git a/src/main/java/org/eclipse/openk/api/Branch.java b/src/main/java/org/eclipse/openk/api/Branch.java
new file mode 100644
index 0000000..802332b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/Branch.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.RefBranch;
+
+@MapDbModelClass(classType = RefBranch.class)
+public class Branch {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField
+    private String name;
+
+    @JsonProperty
+    @MapDbModelField
+    private String description;
+
+    @JsonProperty
+    @MapDbModelField
+    private String colorCode;
+
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public String getColorCode() { return colorCode; }
+
+    public void setColorCode(String colorCode) { this.colorCode = colorCode; }
+}
diff --git a/src/main/java/org/eclipse/openk/api/BranchLevel.java b/src/main/java/org/eclipse/openk/api/BranchLevel.java
new file mode 100644
index 0000000..0d31ee6
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/BranchLevel.java
@@ -0,0 +1,53 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.RefBranchLevel;
+
+@MapDbModelClass(classType = RefBranchLevel.class)
+public class BranchLevel {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField
+    private String name;
+
+    @JsonProperty
+    @MapDbModelField
+    private String description;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "fkRefBranch")
+    private Integer branchId;
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public Integer getBranchId() { return branchId; }
+
+    public void setBranchId(Integer branchId) { this.branchId = branchId; }
+}
diff --git a/src/main/java/org/eclipse/openk/api/CostCenter.java b/src/main/java/org/eclipse/openk/api/CostCenter.java
new file mode 100644
index 0000000..39130d8
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/CostCenter.java
@@ -0,0 +1,46 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.RefCostCenter;
+
+@MapDbModelClass(classType = RefCostCenter.class)
+public class CostCenter {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField
+    private String name;
+
+    @JsonProperty
+    @MapDbModelField
+    private String description;
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/api/Document.java b/src/main/java/org/eclipse/openk/api/Document.java
new file mode 100644
index 0000000..98d0e77
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/Document.java
@@ -0,0 +1,55 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.TblDocuments;
+
+@MapDbModelClass(classType = TblDocuments.class)
+public class Document {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField
+    private String documentName;
+
+    private String data;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getDocumentName() {
+        return documentName;
+    }
+
+    public void setDocumentName(String documentName) {
+        this.documentName = documentName;
+    }
+
+    public String getData() {
+        return data;
+    }
+
+    public void setData(String data) {
+        this.data = data;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/api/FilterObject.java b/src/main/java/org/eclipse/openk/api/FilterObject.java
new file mode 100644
index 0000000..f2f1996
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/FilterObject.java
@@ -0,0 +1,35 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+public class FilterObject {
+
+    private boolean isClosedStatusActive;
+
+    private boolean isCanceledStatusActive;
+
+    public boolean isClosedStatusActive() {
+        return isClosedStatusActive;
+    }
+
+    public void setClosedStatusActive(boolean closedStatusActive) {
+        isClosedStatusActive = closedStatusActive;
+    }
+
+    public boolean isCanceledStatusActive() {
+        return isCanceledStatusActive;
+    }
+
+    public void setCanceledStatusActive(boolean canceledStatusActive) {
+        isCanceledStatusActive = canceledStatusActive;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/api/GmStatus.java b/src/main/java/org/eclipse/openk/api/GmStatus.java
new file mode 100644
index 0000000..7565dff
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/GmStatus.java
@@ -0,0 +1,38 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.RefGmStatus;
+
+@MapDbModelClass(classType = RefGmStatus.class)
+public class GmStatus {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField
+    private String name;
+
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+}
diff --git a/src/main/java/org/eclipse/openk/api/GridMeasure.java b/src/main/java/org/eclipse/openk/api/GridMeasure.java
new file mode 100644
index 0000000..fa6e3e0
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/GridMeasure.java
@@ -0,0 +1,320 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.TblGridMeasure;
+
+import java.util.Date;
+import java.util.List;
+
+@MapDbModelClass(classType = TblGridMeasure.class)
+public class GridMeasure {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "idDescriptive")
+    private String descriptiveId;
+
+    @JsonProperty
+    @MapDbModelField
+    private String title;
+
+    @JsonProperty
+    @MapDbModelField
+    private String affectedResource;
+
+    @JsonProperty
+    @MapDbModelField
+    private String remark;
+
+    @JsonProperty
+    @MapDbModelField
+    private String emailAddresses;
+
+    @JsonProperty
+    @MapDbModelField
+    private String createUser;
+
+    @JsonProperty
+    @MapDbModelField
+    private String createUserDepartment;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date createDate;
+
+    @JsonProperty
+    @MapDbModelField
+    private String modUser;
+
+    @JsonProperty
+    @MapDbModelField
+    private String modUserDepartment;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date modDate;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "fkRefGmStatus")
+    private Integer statusId;
+
+    @JsonProperty
+    @MapDbModelField
+    private String switchingObject;
+
+    @JsonProperty
+    @MapDbModelField
+    private String costCenter;
+
+    @JsonProperty
+    @MapDbModelField
+    private String responsibleOnSiteName;
+
+    @JsonProperty
+    @MapDbModelField
+    private String responsibleOnSiteDepartment;
+
+    @JsonProperty
+    @MapDbModelField
+    private String approvalBy;
+
+    @JsonProperty
+    @MapDbModelField
+    private String areaOfSwitching;
+
+    @JsonProperty
+    @MapDbModelField
+    private String appointmentRepetition;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date appointmentStartdate;
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer appointmentNumberOf;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedStarttimeFirstSequence;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedStarttimeFirstSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedEndtimeLastSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedEndtimeGridmeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date starttimeFirstSequence;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date starttimeFirstSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date endtimeLastSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date endtimeGridmeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private String timeOfReallocation;
+
+    @JsonProperty
+    @MapDbModelField
+    private String description;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "fkRefBranch")
+    private Integer branchId;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "fkRefBranchLevel")
+    private Integer branchLevelId;
+
+    @JsonProperty
+    private List<SingleGridmeasure> listSingleGridmeasures;
+
+
+    public GridMeasure() {
+        // default Constructor
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getDescriptiveId() { return descriptiveId; }
+
+    public void setDescriptiveId(String descriptiveId) { this.descriptiveId = descriptiveId; }
+
+    public String getTitle() { return title; }
+
+    public void setTitle(String title) { this.title = title; }
+
+    public String getAffectedResource() { return affectedResource; }
+
+    public void setAffectedResource(String affectedResource) { this.affectedResource = affectedResource; }
+
+    public String getRemark() { return remark; }
+
+    public void setRemark(String remark) { this.remark = remark; }
+
+    public String getEmailAddresses() { return emailAddresses; }
+
+    public void setEmailAddresses(String emailAddresses) { this.emailAddresses = emailAddresses; }
+
+    public Integer getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(Integer statusId) { this.statusId = statusId; }
+
+    public String getSwitchingObject() { return switchingObject; }
+
+    public void setSwitchingObject(String switchingObject) { this.switchingObject = switchingObject; }
+
+    public String getCostCenter() { return costCenter; }
+
+    public void setCostCenter(String costCenter) { this.costCenter = costCenter; }
+
+    public String getResponsibleOnSiteName() { return responsibleOnSiteName; }
+
+    public void setResponsibleOnSiteName(String responsibleOnSiteName) { this.responsibleOnSiteName = responsibleOnSiteName; }
+
+    public String getResponsibleOnSiteDepartment() { return responsibleOnSiteDepartment; }
+
+    public void setResponsibleOnSiteDepartment(String responsibleOnSiteDepartment) { this.responsibleOnSiteDepartment = responsibleOnSiteDepartment; }
+
+    public String getApprovalBy() { return approvalBy; }
+
+    public void setApprovalBy(String approvalBy) { this.approvalBy = approvalBy; }
+
+    public String getAreaOfSwitching() { return areaOfSwitching; }
+
+    public void setAreaOfSwitching(String areaOfSwitching) { this.areaOfSwitching = areaOfSwitching; }
+
+    public String getAppointmentRepetition() { return appointmentRepetition; }
+
+    public void setAppointmentRepetition(String appointmentRepetition) { this.appointmentRepetition = appointmentRepetition; }
+
+    public Date getAppointmentStartdate() { return appointmentStartdate; }
+
+    public void setAppointmentStartdate(Date appointmentStartdate) { this.appointmentStartdate = appointmentStartdate; }
+
+    public Integer getAppointmentNumberOf() { return appointmentNumberOf; }
+
+    public void setAppointmentNumberOf(Integer appointmentNumberOf) { this.appointmentNumberOf = appointmentNumberOf; }
+
+    public Date getPlannedStarttimeFirstSequence() { return plannedStarttimeFirstSequence; }
+
+    public void setPlannedStarttimeFirstSequence(Date plannedStarttimeFirstSequence) { this.plannedStarttimeFirstSequence = plannedStarttimeFirstSequence; }
+
+    public Date getPlannedStarttimeFirstSinglemeasure() { return plannedStarttimeFirstSinglemeasure; }
+
+    public void setPlannedStarttimeFirstSinglemeasure(Date plannedStarttimeFirstSinglemeasure) { this.plannedStarttimeFirstSinglemeasure = plannedStarttimeFirstSinglemeasure; }
+
+    public Date getPlannedEndtimeLastSinglemeasure() { return plannedEndtimeLastSinglemeasure; }
+
+    public void setPlannedEndtimeLastSinglemeasure(Date plannedEndtimeFirstSinglemeasure) { this.plannedEndtimeLastSinglemeasure = plannedEndtimeFirstSinglemeasure; }
+
+    public Date getPlannedEndtimeGridmeasure() { return plannedEndtimeGridmeasure; }
+
+    public void setPlannedEndtimeGridmeasure(Date plannedEndtimeGridmeasure) { this.plannedEndtimeGridmeasure = plannedEndtimeGridmeasure; }
+
+    public Date getStarttimeFirstSequence() { return starttimeFirstSequence; }
+
+    public void setStarttimeFirstSequence(Date starttimeFirstSequence) { this.starttimeFirstSequence = starttimeFirstSequence; }
+
+    public Date getStarttimeFirstSinglemeasure() { return starttimeFirstSinglemeasure; }
+
+    public void setStarttimeFirstSinglemeasure(Date starttimeFirstSinglemeasure) { this.starttimeFirstSinglemeasure = starttimeFirstSinglemeasure; }
+
+    public Date getEndtimeLastSinglemeasure() { return endtimeLastSinglemeasure; }
+
+    public void setEndtimeLastSinglemeasure(Date endtimeFirstSinglemeasure) { this.endtimeLastSinglemeasure = endtimeFirstSinglemeasure; }
+
+    public Date getEndtimeGridmeasure() { return endtimeGridmeasure; }
+
+    public void setEndtimeGridmeasure(Date endtimeGridmeasure) { this.endtimeGridmeasure = endtimeGridmeasure; }
+
+    public String getTimeOfReallocation() { return timeOfReallocation; }
+
+    public void setTimeOfReallocation(String timeOfReallocation) { this.timeOfReallocation = timeOfReallocation; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public Integer getBranchId() { return branchId; }
+
+    public void setBranchId(Integer branchId) { this.branchId = branchId; }
+
+    public Integer getBranchLevelId() { return branchLevelId; }
+
+    public void setBranchLevelId(Integer branchLevelId) { this.branchLevelId = branchLevelId; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public String getCreateUserDepartment() { return createUserDepartment; }
+
+    public void setCreateUserDepartment(String createUserDepartment) { this.createUserDepartment = createUserDepartment; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getModUser() {
+        return modUser;
+    }
+
+    public void setModUser(String modUser) {
+        this.modUser = modUser;
+    }
+
+    public String getModUserDepartment() { return modUserDepartment; }
+
+    public void setModUserDepartment(String modUserDepartment) { this.modUserDepartment = modUserDepartment; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+
+    public List<SingleGridmeasure> getListSingleGridmeasures() { return listSingleGridmeasures; }
+
+    public void setListSingleGridmeasures(List<SingleGridmeasure> listSingleGridmeasures) { this.listSingleGridmeasures = listSingleGridmeasures; }
+}
diff --git a/src/main/java/org/eclipse/openk/api/HGridMeasure.java b/src/main/java/org/eclipse/openk/api/HGridMeasure.java
new file mode 100644
index 0000000..5b291db
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/HGridMeasure.java
@@ -0,0 +1,360 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.HTblGridMeasure;
+
+import java.util.Date;
+import java.util.List;
+
+@MapDbModelClass(classType = HTblGridMeasure.class)
+public class HGridMeasure {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer hId;
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer hAction;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date hDate;
+
+    @JsonProperty
+    @MapDbModelField
+    private String hUser;
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "idDescriptive")
+    private String descriptiveId;
+
+    @JsonProperty
+    @MapDbModelField
+    private String title;
+
+    @JsonProperty
+    @MapDbModelField
+    private String affectedResource;
+
+    @JsonProperty
+    @MapDbModelField
+    private String remark;
+
+    @JsonProperty
+    @MapDbModelField
+    private String createUser;
+
+    @JsonProperty
+    @MapDbModelField
+    private String createUserDepartment;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date createDate;
+
+    @JsonProperty
+    @MapDbModelField
+    private String modUser;
+
+    @JsonProperty
+    @MapDbModelField
+    private String modUserDepartment;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date modDate;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "fkRefGmStatus")
+    private Integer statusId;
+
+    @JsonProperty
+    @MapDbModelField
+    private String switchingObject;
+
+    @JsonProperty
+    @MapDbModelField
+    private String costCenter;
+
+    @JsonProperty
+    @MapDbModelField
+    private String responsibleOnSiteName;
+
+    @JsonProperty
+    @MapDbModelField
+    private String responsibleOnSiteDepartment;
+
+    @JsonProperty
+    @MapDbModelField
+    private String approvalBy;
+
+    @JsonProperty
+    @MapDbModelField
+    private String areaOfSwitching;
+
+    @JsonProperty
+    @MapDbModelField
+    private String appointmentRepetition;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date appointmentStartdate;
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer appointmentNumberOf;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedStarttimeFirstSequence;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedStarttimeFirstSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedEndtimeLastSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedEndtimeGridmeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date starttimeFirstSequence;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date starttimeFirstSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date endtimeLastSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date endtimeGridmeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private String timeOfReallocation;
+
+    @JsonProperty
+    @MapDbModelField
+    private String description;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "fkRefBranch")
+    private Integer branchId;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "fkRefBranchLevel")
+    private Integer branchLevelId;
+
+    @JsonProperty
+    private List<SingleGridmeasure> listSingleGridmeasures;
+
+
+    public HGridMeasure() {
+        // default Constructor
+    }
+
+    public Integer getHId() {
+        return hId;
+    }
+
+    public void setHId(Integer hId) {
+        this.hId = hId;
+    }
+
+    public Integer getHAction() {
+        return hAction;
+    }
+
+    public void setHAction(Integer haction) {
+        this.hAction = haction;
+    }
+
+    public Date getHDate() {
+        return hDate;
+    }
+
+    public void setHDate(Date hdate) {
+        this.hDate = hdate;
+    }
+
+    public String getHUser() {
+        return hUser;
+    }
+
+    public void setHUser(String huser) {
+        this.hUser = huser;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getDescriptiveId() { return descriptiveId; }
+
+    public void setDescriptiveId(String descriptiveId) { this.descriptiveId = descriptiveId; }
+
+    public String getTitle() { return title; }
+
+    public void setTitle(String title) { this.title = title; }
+
+    public String getAffectedResource() { return affectedResource; }
+
+    public void setAffectedResource(String affectedResource) { this.affectedResource = affectedResource; }
+
+    public String getRemark() { return remark; }
+
+    public void setRemark(String remark) { this.remark = remark; }
+
+    public Integer getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(Integer statusId) { this.statusId = statusId; }
+
+    public String getSwitchingObject() { return switchingObject; }
+
+    public void setSwitchingObject(String switchingObject) { this.switchingObject = switchingObject; }
+
+    public String getCostCenter() { return costCenter; }
+
+    public void setCostCenter(String costCenter) { this.costCenter = costCenter; }
+
+    public String getResponsibleOnSiteName() { return responsibleOnSiteName; }
+
+    public void setResponsibleOnSiteName(String responsibleOnSiteName) { this.responsibleOnSiteName = responsibleOnSiteName; }
+
+    public String getResponsibleOnSiteDepartment() { return responsibleOnSiteDepartment; }
+
+    public void setResponsibleOnSiteDepartment(String responsibleOnSiteDepartment) { this.responsibleOnSiteDepartment = responsibleOnSiteDepartment; }
+
+    public String getApprovalBy() { return approvalBy; }
+
+    public void setApprovalBy(String approvalBy) { this.approvalBy = approvalBy; }
+
+    public String getAreaOfSwitching() { return areaOfSwitching; }
+
+    public void setAreaOfSwitching(String areaOfSwitching) { this.areaOfSwitching = areaOfSwitching; }
+
+    public String getAppointmentRepetition() { return appointmentRepetition; }
+
+    public void setAppointmentRepetition(String appointmentRepetition) { this.appointmentRepetition = appointmentRepetition; }
+
+    public Date getAppointmentStartdate() { return appointmentStartdate; }
+
+    public void setAppointmentStartdate(Date appointmentStartdate) { this.appointmentStartdate = appointmentStartdate; }
+
+    public Integer getAppointmentNumberOf() { return appointmentNumberOf; }
+
+    public void setAppointmentNumberOf(Integer appointmentNumberOf) { this.appointmentNumberOf = appointmentNumberOf; }
+
+    public Date getPlannedStarttimeFirstSequence() { return plannedStarttimeFirstSequence; }
+
+    public void setPlannedStarttimeFirstSequence(Date plannedStarttimeFirstSequence) { this.plannedStarttimeFirstSequence = plannedStarttimeFirstSequence; }
+
+    public Date getPlannedStarttimeFirstSinglemeasure() { return plannedStarttimeFirstSinglemeasure; }
+
+    public void setPlannedStarttimeFirstSinglemeasure(Date plannedStarttimeFirstSinglemeasure) { this.plannedStarttimeFirstSinglemeasure = plannedStarttimeFirstSinglemeasure; }
+
+    public Date getPlannedEndtimeLastSinglemeasure() { return plannedEndtimeLastSinglemeasure; }
+
+    public void setPlannedEndtimeLastSinglemeasure(Date plannedEndtimeFirstSinglemeasure) { this.plannedEndtimeLastSinglemeasure = plannedEndtimeFirstSinglemeasure; }
+
+    public Date getPlannedEndtimeGridmeasure() { return plannedEndtimeGridmeasure; }
+
+    public void setPlannedEndtimeGridmeasure(Date plannedEndtimeGridmeasure) { this.plannedEndtimeGridmeasure = plannedEndtimeGridmeasure; }
+
+    public Date getStarttimeFirstSequence() { return starttimeFirstSequence; }
+
+    public void setStarttimeFirstSequence(Date starttimeFirstSequence) { this.starttimeFirstSequence = starttimeFirstSequence; }
+
+    public Date getStarttimeFirstSinglemeasure() { return starttimeFirstSinglemeasure; }
+
+    public void setStarttimeFirstSinglemeasure(Date starttimeFirstSinglemeasure) { this.starttimeFirstSinglemeasure = starttimeFirstSinglemeasure; }
+
+    public Date getEndtimeLastSinglemeasure() { return endtimeLastSinglemeasure; }
+
+    public void setEndtimeLastSinglemeasure(Date endtimeFirstSinglemeasure) { this.endtimeLastSinglemeasure = endtimeFirstSinglemeasure; }
+
+    public Date getEndtimeGridmeasure() { return endtimeGridmeasure; }
+
+    public void setEndtimeGridmeasure(Date endtimeGridmeasure) { this.endtimeGridmeasure = endtimeGridmeasure; }
+
+    public String getTimeOfReallocation() { return timeOfReallocation; }
+
+    public void setTimeOfReallocation(String timeOfReallocation) { this.timeOfReallocation = timeOfReallocation; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public Integer getBranchId() { return branchId; }
+
+    public void setBranchId(Integer branchId) { this.branchId = branchId; }
+
+    public Integer getBranchLevelId() { return branchLevelId; }
+
+    public void setBranchLevelId(Integer branchLevelId) { this.branchLevelId = branchLevelId; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public String getCreateUserDepartment() { return createUserDepartment; }
+
+    public void setCreateUserDepartment(String createUserDepartment) { this.createUserDepartment = createUserDepartment; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getModUser() {
+        return modUser;
+    }
+
+    public void setModUser(String modUser) {
+        this.modUser = modUser;
+    }
+
+    public String getModUserDepartment() { return modUserDepartment; }
+
+    public void setModUserDepartment(String modUserDepartment) { this.modUserDepartment = modUserDepartment; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+
+    public List<SingleGridmeasure> getListSingleGridmeasures() { return listSingleGridmeasures; }
+
+    public void setListSingleGridmeasures(List<SingleGridmeasure> listSingleGridmeasures) { this.listSingleGridmeasures = listSingleGridmeasures; }
+}
diff --git a/src/main/java/org/eclipse/openk/api/Lock.java b/src/main/java/org/eclipse/openk/api/Lock.java
new file mode 100644
index 0000000..7aac61e
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/Lock.java
@@ -0,0 +1,54 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.TblLock;
+
+@MapDbModelClass(classType = TblLock.class)
+public class Lock {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer key;
+
+    @JsonProperty
+    @MapDbModelField
+    private String username;
+
+    @JsonProperty
+    @MapDbModelField
+    private String info;
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public Integer getKey() { return key; }
+
+    public void setKey(Integer key) { this.key = key; }
+
+    public String getUsername() { return username; }
+
+    public void setUsername(String username) { this.username = username; }
+
+    public String getInfo() { return info; }
+
+    public void setInfo(String info) { this.info = info; }
+}
+
diff --git a/src/main/java/org/eclipse/openk/api/PowerSystemResource.java b/src/main/java/org/eclipse/openk/api/PowerSystemResource.java
new file mode 100644
index 0000000..2ced803
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/PowerSystemResource.java
@@ -0,0 +1,55 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class PowerSystemResource {
+
+  @JsonProperty
+  private  String cimId;
+
+  @JsonProperty
+  private  String cimName;
+
+  @JsonProperty
+  private  String cimDescription;
+
+  public PowerSystemResource() {
+    // constructor
+  }
+
+  public String getCimId() {
+    return cimId;
+  }
+
+  public void setCimId(String cimId) {
+    this.cimId = cimId;
+  }
+
+  public String getCimName() {
+    return cimName;
+  }
+
+  public void setCimName(String cimName) {
+    this.cimName = cimName;
+  }
+
+  public String getCimDescription() {
+    return cimDescription;
+  }
+
+  public void setCimDescription(String cimDescription) {
+    this.cimDescription = cimDescription;
+  }
+}
diff --git a/src/main/java/org/eclipse/openk/api/RoleAccessDefinitionApi.java b/src/main/java/org/eclipse/openk/api/RoleAccessDefinitionApi.java
new file mode 100644
index 0000000..8180d19
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/RoleAccessDefinitionApi.java
@@ -0,0 +1,117 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+public class RoleAccessDefinitionApi {
+
+    public static class EditRole {
+        private String name;
+        private int[] gridMeasureStatusIds;
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int[] getGridMeasureStatusIds() {
+            return gridMeasureStatusIds;
+        }
+
+        public void setGridMeasureStatusIds(int[] gridMeasureStatusIds) {
+            this.gridMeasureStatusIds = gridMeasureStatusIds;
+        }
+    }
+
+    public static class Control {
+        private int gridMeasureStatusId;
+        private String[] activeButtons;
+        private String[] inactiveFields;
+
+        public int getGridMeasureStatusId() {
+            return gridMeasureStatusId;
+        }
+
+        public void setGridMeasureStatusId(int gridMeasureStatusId) {
+            this.gridMeasureStatusId = gridMeasureStatusId;
+        }
+
+        public String[] getActiveButtons() {
+            return activeButtons;
+        }
+
+        public void setActiveButtons(String[] activeButtons) {
+            this.activeButtons = activeButtons;
+        }
+
+        public String[] getInactiveFields() {
+            return inactiveFields;
+        }
+
+        public void setInactiveFields(String[] inactiveFields) {
+            this.inactiveFields = inactiveFields;
+        }
+    }
+
+    public static class StornoSection {
+        private String[] stornoRoles;
+
+        public String[] getStornoRoles() { return stornoRoles; }
+
+        public void setStornoRoles(String[] stornoRoles) { this.stornoRoles = stornoRoles; }
+    }
+
+    public static class DuplicateSection {
+        private String[] duplicateRoles;
+
+        public String[] getDuplicateRoles() {
+            return duplicateRoles;
+        }
+
+        public void setDuplicateRoles(String[] duplicateRoles) {
+            this.duplicateRoles = duplicateRoles;
+        }
+    }
+
+    private EditRole[] editRoles;
+    private Control[] controls;
+    private StornoSection stornoSection;
+    private DuplicateSection duplicateSection;
+
+    public EditRole[] getEditRoles() {
+        return editRoles;
+    }
+
+    public void setEditRoles(EditRole[] editRoles) {
+        this.editRoles = editRoles;
+    }
+
+    public Control[] getControls() {
+        return controls;
+    }
+
+    public void setControls(Control[] controls) { this.controls = controls; }
+
+    public StornoSection getStornoSection() { return stornoSection; }
+
+    public void setStornoSection (StornoSection stornoSection) { this.stornoSection = stornoSection; }
+
+    public DuplicateSection getDuplicateSection() {
+        return duplicateSection;
+    }
+
+    public void setDuplicateSection(DuplicateSection duplicateSection) {
+        this.duplicateSection = duplicateSection;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/api/SingleGridmeasure.java b/src/main/java/org/eclipse/openk/api/SingleGridmeasure.java
new file mode 100644
index 0000000..e4f457e
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/SingleGridmeasure.java
@@ -0,0 +1,120 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.TblSingleGridmeasure;
+
+import java.util.Date;
+import java.util.List;
+
+@MapDbModelClass(classType = TblSingleGridmeasure.class)
+public class SingleGridmeasure {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer sortorder;
+
+    @JsonProperty
+    @MapDbModelField
+    private String title;
+
+    @JsonProperty
+    @MapDbModelField
+    private String switchingObject;
+
+    @JsonProperty
+    private PowerSystemResource powerSystemResource;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedStarttimeSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private Date plannedEndtimeSinglemeasure;
+
+    @JsonProperty
+    @MapDbModelField
+    private String description;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "fkTblGridmeasure")
+    private Integer gridmeasureId;
+
+    @JsonProperty
+    private List<Steps> listSteps;
+
+    @JsonProperty
+    private boolean delete;
+
+
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public Integer getSortorder() { return sortorder; }
+
+    public void setSortorder(Integer sortorder) { this.sortorder = sortorder; }
+
+    public String getTitle() { return title; }
+
+    public void setTitle(String title) { this.title = title; }
+
+    public String getSwitchingObject() { return switchingObject; }
+
+    public void setSwitchingObject(String switchingObject) { this.switchingObject = switchingObject; }
+
+    public Date getPlannedStarttimeSinglemeasure() { return plannedStarttimeSinglemeasure; }
+
+    public void setPlannedStarttimeSinglemeasure(Date plannedStarttimeSinglemeasure) { this.plannedStarttimeSinglemeasure = plannedStarttimeSinglemeasure; }
+
+    public Date getPlannedEndtimeSinglemeasure() { return plannedEndtimeSinglemeasure; }
+
+    public void setPlannedEndtimeSinglemeasure(Date plannedEndtimeSinglemeasure) { this.plannedEndtimeSinglemeasure = plannedEndtimeSinglemeasure; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String dscription) { this.description = dscription; }
+
+    public Integer getGridmeasureId() { return gridmeasureId; }
+
+    public void setGridmeasureId(Integer gridmeasureId) { this.gridmeasureId = gridmeasureId; }
+
+    public boolean isDelete() { return delete; }
+
+    public void setDelete(boolean delete) { this.delete = delete; }
+
+    public PowerSystemResource getPowerSystemResource() {
+        return powerSystemResource;
+    }
+
+    public void setPowerSystemResource(PowerSystemResource powerSystemResource) {
+        this.powerSystemResource = powerSystemResource;
+    }
+
+    public List<Steps> getListSteps() {
+        return listSteps;
+    }
+
+    public void setListSteps(List<Steps> listSteps) {
+        this.listSteps = listSteps;
+    }
+}
+
diff --git a/src/main/java/org/eclipse/openk/api/Steps.java b/src/main/java/org/eclipse/openk/api/Steps.java
new file mode 100644
index 0000000..ffe3131
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/Steps.java
@@ -0,0 +1,80 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.TblSteps;
+
+@MapDbModelClass(classType = TblSteps.class)
+public class Steps {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer sortorder;
+
+    @JsonProperty
+    @MapDbModelField
+    private String switchingObject;
+
+    @JsonProperty
+    @MapDbModelField
+    private String targetState;
+
+    @JsonProperty
+    @MapDbModelField( fieldName = "fkTblSingleGridmeasure")
+    private Integer singleGridmeasureId;
+
+    @JsonProperty
+    private boolean delete;
+
+
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public Integer getSortorder() { return sortorder; }
+
+    public void setSortorder(Integer sortorder) { this.sortorder = sortorder; }
+
+    public String getSwitchingObject() { return switchingObject; }
+
+    public void setSwitchingObject(String switchingObject) { this.switchingObject = switchingObject; }
+
+    public String getTargetState() {
+        return targetState;
+    }
+
+    public void setTargetState(String targetState) {
+        this.targetState = targetState;
+    }
+
+    public Integer getSingleGridmeasureId() {
+        return singleGridmeasureId;
+    }
+
+    public void setSingleGridmeasureId(Integer singleGridmeasureId) {
+        this.singleGridmeasureId = singleGridmeasureId;
+    }
+
+    public boolean isDelete() { return delete; }
+
+    public void setDelete(boolean delete) { this.delete = delete; }
+
+}
+
diff --git a/src/main/java/org/eclipse/openk/api/UserDepartment.java b/src/main/java/org/eclipse/openk/api/UserDepartment.java
new file mode 100644
index 0000000..1e9d21b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/UserDepartment.java
@@ -0,0 +1,38 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.RefUserDepartment;
+
+@MapDbModelClass(classType = RefUserDepartment.class)
+public class UserDepartment {
+
+    @JsonProperty
+    @MapDbModelField
+    private Integer id;
+
+    @JsonProperty
+    @MapDbModelField
+    private String name;
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/api/UserSettings.java b/src/main/java/org/eclipse/openk/api/UserSettings.java
new file mode 100644
index 0000000..b9add87
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/UserSettings.java
@@ -0,0 +1,43 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.eclipse.openk.db.model.TblUserSettings;
+
+@MapDbModelClass(classType = TblUserSettings.class)
+public class UserSettings {
+    @JsonProperty
+    @MapDbModelField
+    private String username;
+
+    @JsonProperty
+    @MapDbModelField
+    private String settingType;
+
+    @JsonProperty
+    @MapDbModelField
+    private String value;
+
+    public String getUsername() { return username; }
+
+    public void setUsername(String username) { this.username = username; }
+
+    public String getSettingType() { return settingType; }
+
+    public void setSettingType(String settingType) { this.settingType = settingType; }
+
+    public String getValue() { return value; }
+
+    public void setValue(String value) { this.value = value; }
+}
diff --git a/src/main/java/org/eclipse/openk/api/VersionInfo.java b/src/main/java/org/eclipse/openk/api/VersionInfo.java
new file mode 100644
index 0000000..955eeec
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/VersionInfo.java
@@ -0,0 +1,44 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class VersionInfo {
+
+    @JsonProperty
+    private String dbVersion;
+
+    @JsonProperty
+    private String backendVersion;
+
+    public VersionInfo() {
+        // default Constructor
+    }
+
+    public String getBackendVersion() {
+        return backendVersion;
+    }
+
+    public void setBackendVersion(String backendVersion) {
+        this.backendVersion = backendVersion;
+    }
+
+    public String getDbVersion() {
+        return dbVersion;
+    }
+
+    public void setDbVersion(String dbVersion) {
+        this.dbVersion = dbVersion;
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/api/mail/Email.java b/src/main/java/org/eclipse/openk/api/mail/Email.java
new file mode 100644
index 0000000..34b7aa9
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/mail/Email.java
@@ -0,0 +1,152 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+
+package org.eclipse.openk.api.mail;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.mail.*;
+import javax.mail.Message.RecipientType;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import org.apache.log4j.Logger;
+
+public class Email {
+
+  private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
+
+  private static Pattern pattern = Pattern.compile(EMAIL_PATTERN);
+
+  private static final String MAIL_ENCODING = "UTF-8";
+
+  private static final Logger LOGGER = Logger.getLogger(Email.class.getName());
+
+  private final Properties props = new Properties();
+  private final MimeMultipart multipart = new MimeMultipart();
+  private final MimeMessage message;
+  private final Session session;
+
+  public Email(String smtpHost, String port) {
+    props.put("mail.smtp.auth", "false");
+    props.put("mail.smtp.host", smtpHost);
+    props.put("mail.smtp.port", port);
+    session = Session.getInstance(props);
+    message = new MimeMessage(session);
+  }
+
+  public void addText(String text) throws MessagingException {
+    MimeBodyPart textBody = new MimeBodyPart();
+    textBody.setText(text, MAIL_ENCODING);
+    textBody.setDisposition(MimeBodyPart.INLINE);
+    multipart.addBodyPart(textBody);
+  }
+
+  public void setFrom(String emailSender) throws MessagingException {
+    try {
+      boolean validRecipient = validateEmailAddress(emailSender);
+      if (!validRecipient) {
+        LOGGER.error("Invalid email-addresse for sender: " + emailSender);
+        throw new MessagingException();
+      }
+      message.setFrom(new InternetAddress(emailSender));
+    } catch (MessagingException e) {
+      LOGGER.error("setFrom MessagingException caught()", e);
+      throw e;
+    }
+  }
+
+  public void addRecipient(String recipients) throws MessagingException {
+    addRecipient(recipients, Message.RecipientType.TO);
+  }
+
+  public void addCC(String recipients) throws MessagingException {
+    addRecipient(recipients, Message.RecipientType.CC);
+  }
+
+  public void addRecipient(String recipients, RecipientType recipientType) throws MessagingException {
+    try {
+      String checkedRecipients = "";
+      if(recipients != null) {
+        recipients = recipients.trim();
+        recipients = recipients.replace(";", ",");
+        String[] recipientsSplit = recipients.split(",");
+
+        for (String recipient : recipientsSplit) {
+          if (!validateEmailAddress(recipient.trim())) {
+            LOGGER.error("Invalid email-addresse: " + recipients);
+            throw new MessagingException();
+          }
+        }
+        checkedRecipients = String.join(",", recipientsSplit);
+
+        //Array of recipients must include only unique recipients => use of a Set
+        InternetAddress[] mailAddresses = InternetAddress.parse(checkedRecipients);
+        Set<InternetAddress> mailAddressesUniqueSet = new HashSet<>();
+        mailAddressesUniqueSet.addAll(Arrays.asList(mailAddresses));
+        InternetAddress[] mailAddressesFiltered = mailAddressesUniqueSet.toArray(new InternetAddress[mailAddressesUniqueSet.size()]);
+
+        message.addRecipients(recipientType, mailAddressesFiltered);
+        LOGGER.debug("Email-addresse successfully set: " + checkedRecipients);
+      }
+    } catch (MessagingException e) {
+      LOGGER.error("addRecipient MessagingException caught()", e);
+      throw e;
+    }
+  }
+
+  public void setSubject(String subjectText) {
+    try {
+      message.setSubject(subjectText, MAIL_ENCODING);
+    } catch (MessagingException e) {
+      LOGGER.error("MessagingException caught()", e);
+    }
+  }
+
+  public void setContent() {
+    try {
+      message.setContent(multipart);
+    } catch (MessagingException e) {
+      LOGGER.error("MessagingException caught()", e);
+    }
+  }
+
+  public boolean send() {
+    LOGGER.debug("send() is called");
+    boolean ret = false;
+
+    try {
+      Transport.send(message);
+      LOGGER.debug("send() finished");
+      ret = true;
+    } catch (MessagingException e) {
+      LOGGER.error("send MessagingException caught()", e);
+    }
+    return ret;
+  }
+
+  public MimeMessage getMessage() {
+    return message;
+  }
+
+  public static boolean validateEmailAddress(final String hex) {
+
+    Matcher matcher = pattern.matcher(hex);
+    return matcher.matches();
+
+  }
+}
diff --git a/src/main/java/org/eclipse/openk/api/mail/EmailTemplatePaths.java b/src/main/java/org/eclipse/openk/api/mail/EmailTemplatePaths.java
new file mode 100644
index 0000000..2bdebd2
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/api/mail/EmailTemplatePaths.java
@@ -0,0 +1,127 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.api.mail;
+
+public class EmailTemplatePaths {
+
+  private String appliedEmailTemplate;
+  private String forapprovalEmailTemplate;
+  private String approvedEmailTemplate;
+  private String requestedEmailTemplate;
+  private String releasedEmailTemplate;
+  private String activeEmailTemplate;
+  private String inworkEmailTemplate;
+  private String workfinishedEmailTemplate;
+  private String finishedEmailTemplate;
+  private String closedEmailTemplate;
+  private String cancelledEmailTemplate;
+  private String rejectedEmailTemplate;
+
+  public String getAppliedEmailTemplate() {
+    return appliedEmailTemplate;
+  }
+
+  public void setAppliedEmailTemplate(String appliedEmailTemplate) {
+    this.appliedEmailTemplate = appliedEmailTemplate;
+  }
+
+  public String getForapprovalEmailTemplate() {
+    return forapprovalEmailTemplate;
+  }
+
+  public void setForapprovalEmailTemplate(String forapprovalEmailTemplate) {
+    this.forapprovalEmailTemplate = forapprovalEmailTemplate;
+  }
+
+  public String getApprovedEmailTemplate() {
+    return approvedEmailTemplate;
+  }
+
+  public void setApprovedEmailTemplate(String approvedEmailTemplate) {
+    this.approvedEmailTemplate = approvedEmailTemplate;
+  }
+
+  public String getRequestedEmailTemplate() {
+    return requestedEmailTemplate;
+  }
+
+  public void setRequestedEmailTemplate(String requestedEmailTemplate) {
+    this.requestedEmailTemplate = requestedEmailTemplate;
+  }
+
+  public String getReleasedEmailTemplate() {
+    return releasedEmailTemplate;
+  }
+
+  public void setReleasedEmailTemplate(String releasedEmailTemplate) {
+    this.releasedEmailTemplate = releasedEmailTemplate;
+  }
+
+  public String getActiveEmailTemplate() {
+    return activeEmailTemplate;
+  }
+
+  public void setActiveEmailTemplate(String activeEmailTemplate) {
+    this.activeEmailTemplate = activeEmailTemplate;
+  }
+
+  public String getInworkEmailTemplate() {
+    return inworkEmailTemplate;
+  }
+
+  public void setInworkEmailTemplate(String inworkEmailTemplate) {
+    this.inworkEmailTemplate = inworkEmailTemplate;
+  }
+
+  public String getWorkfinishedEmailTemplate() {
+    return workfinishedEmailTemplate;
+  }
+
+  public void setWorkfinishedEmailTemplate(String workfinishedEmailTemplate) {
+    this.workfinishedEmailTemplate = workfinishedEmailTemplate;
+  }
+
+  public String getFinishedEmailTemplate() {
+    return finishedEmailTemplate;
+  }
+
+  public void setFinishedEmailTemplate(String finishedEmailTemplate) {
+    this.finishedEmailTemplate = finishedEmailTemplate;
+  }
+
+  public String getClosedEmailTemplate() {
+    return closedEmailTemplate;
+  }
+
+  public void setClosedEmailTemplate(String closedEmailTemplate) {
+    this.closedEmailTemplate = closedEmailTemplate;
+  }
+
+  public String getCancelledEmailTemplate() {
+    return cancelledEmailTemplate;
+  }
+
+  public void setCancelledEmailTemplate(String cancelledEmailTemplate) {
+    this.cancelledEmailTemplate = cancelledEmailTemplate;
+  }
+
+  public String getRejectedEmailTemplate() {
+    return rejectedEmailTemplate;
+  }
+
+  public void setRejectedEmailTemplate(String rejectedEmailTemplate) {
+    this.rejectedEmailTemplate = rejectedEmailTemplate;
+  }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/auth2/model/JwtAccount.java b/src/main/java/org/eclipse/openk/auth2/model/JwtAccount.java
new file mode 100644
index 0000000..c726922
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/auth2/model/JwtAccount.java
@@ -0,0 +1,23 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.auth2.model;
+
+import java.util.List;
+
+public class JwtAccount {
+    private List<String> roles;
+
+    public List<String> getRoles() {
+        return roles;
+    }
+    public void setRoles(List<String> roles) { this.roles = roles; }
+}
diff --git a/src/main/java/org/eclipse/openk/auth2/model/JwtHeader.java b/src/main/java/org/eclipse/openk/auth2/model/JwtHeader.java
new file mode 100644
index 0000000..92ffc9c
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/auth2/model/JwtHeader.java
@@ -0,0 +1,25 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.auth2.model;
+
+public class JwtHeader {
+    private String alg;
+    private String typ;
+    private String kid;
+
+    public String getAlg() { return alg; }
+    public void setAlg(String alg) { this.alg = alg; }
+    public String getTyp() { return typ; }
+    public void setTyp(String typ) { this.typ = typ; }
+    public String getKid() { return kid; }
+    public void setKid(String kid) { this.kid = kid; }
+}
diff --git a/src/main/java/org/eclipse/openk/auth2/model/JwtPayload.java b/src/main/java/org/eclipse/openk/auth2/model/JwtPayload.java
new file mode 100644
index 0000000..8ac07b4
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/auth2/model/JwtPayload.java
@@ -0,0 +1,110 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.auth2.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+public class JwtPayload {
+
+    //No Sonar because variables are wrong due to jwt definition
+
+    private String jti;
+    private long exp;
+    private long nbf;
+    private long iat;
+    private String iss;
+    private String aud;
+    private String sub;
+    private String typ;
+    private String azp;
+    private String nonce;
+    private Integer auth_time; //NOSONAR
+    private String session_state; //NOSONAR
+    private String acr;
+
+    @JsonProperty("allowed-origins")
+    private List<String> allowedOrigins;
+    private JwtRealmAccess realm_access; //NOSONAR
+    private JwtResourceAccess resource_access; //NOSONAR
+
+    private String name;
+    private String preferred_username; //NOSONAR
+    private String given_name; //NOSONAR
+    private String family_name; //NOSONAR
+
+    public String getJti() { return jti; }
+    public void setJti(String jti) { this.jti = jti; }
+
+    public long getExp() { return exp; }
+    public void setExp(long exp) { this.exp = exp; }
+
+    public long getNbf() { return nbf; }
+    public void setNbf(long nbf) { this.nbf = nbf; }
+
+    public long getIat() { return iat; }
+    public void setIat(long iat) { this.iat = iat; }
+
+    public String getiss() { return iss; }
+    public void setiss(String iss) { this.iss = iss; }
+
+    public String getaud() { return aud; }
+    public void setaud(String aud) { this.aud = aud; }
+
+    public String getsub() { return sub; }
+    public void setsub(String sub) { this.sub = sub; }
+
+    public String gettyp() { return typ; }
+    public void settyp(String typ) { this.typ = typ; }
+
+    public String getAzp() { return azp; }
+    public void setAzp(String azp) { this.azp = azp; }
+
+    public String getNonce() { return nonce; }
+    public void setNonce(String nonce) { this.nonce = nonce; }
+
+    public Integer getAuthTime() { return auth_time; }
+    public void setAuthTime(Integer auth_time) { this.auth_time = auth_time; } //NOSONAR
+
+    public String getSessionState() { return session_state; }
+    public void setSessionState(String session_state) { this.session_state = session_state; } //NOSONAR
+
+    public String getAcr() { return acr; }
+    public void setAcr(String acr) { this.acr = acr; }
+
+    public List<String> getAllowedOrigins() {
+        return allowedOrigins;
+    }
+    public void setAllowedOrigins(List<String> allowedOrigins) { this.allowedOrigins = allowedOrigins; }
+
+    public JwtRealmAccess getRealmAccess() { return realm_access; }
+    public void setRealmAccess(JwtRealmAccess realm_access) { this.realm_access = realm_access; } //NOSONAR
+
+    public JwtResourceAccess getResourceAccess() { return resource_access; }
+    public void setResourceAccess(JwtResourceAccess resource_access) { this.resource_access = resource_access; } //NOSONAR
+
+    public String getName() { return name; }
+    public void setName(String name) { this.name = name; }
+
+    public String getPreferredUsername() { return preferred_username; }
+    public void setPreferredUsername(String preferred_username) { this.preferred_username = preferred_username; } //NOSONAR
+
+    public String getGivenName() { return given_name; }
+    public void setGivenName(String given_name) { this.given_name = given_name; } //NOSONAR
+
+    public String getFamilyName() { return family_name; }
+    public void setFamilyName(String family_name) { this.family_name = family_name; } //NOSONAR
+
+    public boolean isInRole(String role) {
+        return this.realm_access != null && this.realm_access.isInRole(role);
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/auth2/model/JwtRealmAccess.java b/src/main/java/org/eclipse/openk/auth2/model/JwtRealmAccess.java
new file mode 100644
index 0000000..11fd349
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/auth2/model/JwtRealmAccess.java
@@ -0,0 +1,28 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.auth2.model;
+
+import java.util.List;
+
+public class JwtRealmAccess {
+    private List<String> roles;
+
+    public List<String> getRoles() {
+        return roles;
+    }
+    public void setRoles(List<String> roles) { this.roles = roles; }
+
+
+    public boolean isInRole(String role) {
+        return this.roles != null && this.roles.contains(role);
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/auth2/model/JwtResourceAccess.java b/src/main/java/org/eclipse/openk/auth2/model/JwtResourceAccess.java
new file mode 100644
index 0000000..9aa4710
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/auth2/model/JwtResourceAccess.java
@@ -0,0 +1,19 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.auth2.model;
+
+public class JwtResourceAccess {
+    private JwtAccount account;
+
+    public JwtAccount getAccount() { return account; }
+    public void setAccount(JwtAccount account) { this.account = account; }
+}
diff --git a/src/main/java/org/eclipse/openk/auth2/model/JwtToken.java b/src/main/java/org/eclipse/openk/auth2/model/JwtToken.java
new file mode 100644
index 0000000..b67e47a
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/auth2/model/JwtToken.java
@@ -0,0 +1,43 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.auth2.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class JwtToken {
+
+    //No Sonar because variables are wrong due to jwt definition
+
+    private String access_token; //NOSONAR
+    private String refresh_token; //NOSONAR
+    private String token_type; //NOSONAR
+    private String session_state; //NOSONAR
+    private Integer expires_in; //NOSONAR
+    private Integer refresh_expires_in; //NOSONAR
+    @JsonProperty("not-before-policy")
+    private Integer not_before_policy; //NOSONAR
+
+    public String getAccessToken() { return access_token; }
+    public void setAccessToken(String access_token) { this.access_token = access_token; } //NOSONAR
+    public String getRefreshToken() { return refresh_token; }
+    public void setRefreshToken(String refresh_token) { this.refresh_token = refresh_token; } //NOSONAR
+    public String getTokenType() { return token_type; }
+    public void setTokenType(String token_type) { this.token_type = token_type; } //NOSONAR
+    public String getSessionState() { return session_state; }
+    public void setSessionState(String session_state) { this.session_state = session_state; } //NOSONAR
+    public Integer getExpiresIn() { return expires_in; }
+    public void setExpiresIn(Integer expires_in) { this.expires_in = expires_in; } //NOSONAR
+    public Integer getRefreshExpiresIn() { return refresh_expires_in; }
+    public void setRefreshExpiresIn(Integer refresh_expires_in) { this.refresh_expires_in = refresh_expires_in; } //NOSONAR
+    public Integer getNotBeforePolicy() { return not_before_policy; }
+    public void setNotBeforePolicy(Integer not_before_policy) { this.not_before_policy = not_before_policy; } //NOSONAR
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/auth2/model/KeyCloakUser.java b/src/main/java/org/eclipse/openk/auth2/model/KeyCloakUser.java
new file mode 100644
index 0000000..6d842d7
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/auth2/model/KeyCloakUser.java
@@ -0,0 +1,75 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.auth2.model;
+
+import java.util.List;
+
+public class KeyCloakUser {
+    private String id;
+    private long createdTimestamp;
+    private String username;
+    private boolean enabled;
+    private boolean totp;
+    private boolean emailVerified;
+    private String firstName;
+    private String lastName;
+    private List<String> realmRoles;
+
+    private List<String> disableableCredentialTypes;
+    private List<String> requiredActions;
+    private KeyCloakUserAccess access;
+
+    public String getId() { return id; }
+    public void setId(String id) { this.id = id; }
+
+    public long getCreatedTimestamp() { return createdTimestamp; }
+    public void setCreatedTimestamp(long createdTimestamp) { this.createdTimestamp = createdTimestamp; }
+
+    public String getUsername() { return username; }
+    public void setUsername(String username) { this.username = username; }
+
+    public boolean getEnabled() { return enabled; }
+    public void setEnabled(boolean enabled) { this.enabled = enabled; }
+
+    public boolean getTotp() { return totp; }
+    public void setTotp(boolean totp) { this.totp = totp; }
+
+    public boolean getEmailVerified() { return emailVerified; }
+    public void setEmailVerified(boolean emailVerified) { this.emailVerified = emailVerified; }
+
+    public String getFirstName() { return firstName; }
+    public void setFirstName(String firstName) { this.firstName = firstName; }
+
+    public String getLastName() { return lastName; }
+    public void setLastName(String lastName) { this.lastName = lastName; }
+
+    public List<String> getDisableableCredentialTypes() {
+        return disableableCredentialTypes;
+    }
+    public void setDisableableCredentialTypes(List<String> disableableCredentialTypes) { this.disableableCredentialTypes = disableableCredentialTypes; }
+
+    public List<String> getRequiredActions() {
+        return requiredActions;
+    }
+    public void setRequiredActions(List<String> requiredActions) { this.requiredActions = requiredActions; }
+
+    public KeyCloakUserAccess getAccess() { return access; }
+    public void setAccess(KeyCloakUserAccess access) { this.access = access; }
+
+    public List<String> getRealmRoles() {
+        return realmRoles;
+    }
+
+    public void setRealmRoles(List<String> realmRoles) {
+        this.realmRoles = realmRoles;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/auth2/model/KeyCloakUserAccess.java b/src/main/java/org/eclipse/openk/auth2/model/KeyCloakUserAccess.java
new file mode 100644
index 0000000..1231352
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/auth2/model/KeyCloakUserAccess.java
@@ -0,0 +1,31 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.auth2.model;
+
+public class KeyCloakUserAccess {
+    private boolean manageGroupMembership;
+    private boolean view;
+    private boolean mapRoles;
+    private boolean impersonate;
+    private boolean manage;
+
+    public boolean getManageGroupMembership() { return manageGroupMembership; }
+    public void setManageGroupMembership(boolean manageGroupMembership) { this.manageGroupMembership = manageGroupMembership; }
+    public boolean getView() { return view; }
+    public void setView(boolean view) { this.view = view; }
+    public boolean getMapRoles() { return mapRoles; }
+    public void setMapRoles(boolean mapRoles) { this.mapRoles = mapRoles; }
+    public boolean getImpersonate() { return impersonate; }
+    public void setImpersonate(boolean impersonate) { this.impersonate = impersonate; }
+    public boolean getManage() { return manage; }
+    public void setManage(boolean manage) { this.manage = manage; }
+}
diff --git a/src/main/java/org/eclipse/openk/auth2/util/JwtHelper.java b/src/main/java/org/eclipse/openk/auth2/util/JwtHelper.java
new file mode 100644
index 0000000..aa99a8d
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/auth2/util/JwtHelper.java
@@ -0,0 +1,77 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.auth2.util;
+
+import com.google.gson.JsonSyntaxException;
+import com.google.gson.reflect.TypeToken;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.http.HttpStatus;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.auth2.model.JwtPayload;
+import org.eclipse.openk.auth2.model.KeyCloakUser;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Type;
+import java.util.List;
+
+public class JwtHelper {
+
+  private static final Logger LOGGER = Logger.getLogger(JwtHelper.class.getName());
+
+  private JwtHelper() {}
+
+  public static JwtPayload getJwtPayload(String token) throws HttpStatusException {
+
+      if (token != null && !token.isEmpty()) {
+          String plainToken = JwtHelper.formatToken(token);
+          String[] parts = plainToken.split("[.]");
+
+
+          String jwtPayload = parts[1]; // we need only this here
+
+          Base64 decoder = new Base64(true);
+          byte[] decodedBytes = decoder.decode(jwtPayload);
+          try {
+              jwtPayload = new String(decodedBytes, "UTF-8" );
+          } catch (UnsupportedEncodingException e) {
+              LOGGER.error( "Unsupported encoding", e );
+              jwtPayload = new String(decodedBytes );
+          }
+
+          return getJwtPayloadFromJson(jwtPayload);
+      }
+      else {
+          throw new HttpStatusException(HttpStatus.SC_UNAUTHORIZED);
+      }
+
+  }
+
+  public static JwtPayload getJwtPayloadFromJson(String json) {
+    return org.eclipse.openk.common.JsonGeneratorBase.getGson().fromJson(json, JwtPayload.class);
+  }
+
+  public static List<KeyCloakUser> getUserListFromJson(String json) throws HttpStatusException {
+    try {
+      Type listType = new TypeToken<List<KeyCloakUser>>(){}.getType();
+      return JsonGeneratorBase.getGson().fromJson(json, listType);
+    } catch (JsonSyntaxException ex) {
+      LOGGER.error("Error in getUserListFromJson", ex);
+      throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+    }
+  }
+
+  public static String formatToken(String accessToken) {
+    return accessToken != null ? accessToken.replace("Bearer", "").trim() : "";
+  }
+
+}
diff --git a/src/main/java/org/eclipse/openk/common/Globals.java b/src/main/java/org/eclipse/openk/common/Globals.java
new file mode 100644
index 0000000..b689f9d
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/Globals.java
@@ -0,0 +1,28 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.common;
+
+public final class Globals {
+
+    public static final String HEADER_JSON_UTF8 = "application/json; charset=utf-8";
+    public static final String KEYCLOAK_AUTH_TAG = "Authorization";
+    public static final String KEYCLOAK_ROLE_SUPERUSER = "planned-policies-superuser";
+    public static final String KEYCLOAK_ROLE_NORMALUSER = "planned-policies-normaluser";
+    public static final String SESSION_TOKEN_TAG = "X-XSRF-TOKEN";
+    public static final String FORCE_DELETE_LOCK = "FORCE";
+
+    public static final String COUNTERTYPE_GRIDMEASURE_ID = "GridMeasureId";
+
+    public static final String DATE_ZONE_ID_EUROPE = "Europe/Berlin";
+
+    private Globals() {}
+}
diff --git a/src/main/java/org/eclipse/openk/common/GsonUTCDateAdapter.java b/src/main/java/org/eclipse/openk/common/GsonUTCDateAdapter.java
new file mode 100644
index 0000000..f5da945
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/GsonUTCDateAdapter.java
@@ -0,0 +1,58 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.common;
+
+import com.google.gson.*;
+
+import java.lang.reflect.Type;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+public class GsonUTCDateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {
+
+    private final DateFormat dateFormat;
+
+    public GsonUTCDateAdapter() {
+        dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);      //This is the format I need
+        dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));                               //This is the key line which converts the date to UTC which cannot be accessed with the default serializer
+    }
+
+    @Override
+    public synchronized JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) {
+        if( date != null ) {
+            return new JsonPrimitive(dateFormat.format(date));
+        }
+        else {
+            return null;
+        }
+
+    }
+
+    @Override
+    public synchronized Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
+        try {
+            String stringElem = jsonElement.getAsString();
+            if( stringElem.isEmpty()) {
+                return null;
+            }
+            else {
+                return dateFormat.parse(stringElem);
+            }
+        } catch (ParseException e) {
+            throw new JsonParseException(e);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/common/JsonGeneratorBase.java b/src/main/java/org/eclipse/openk/common/JsonGeneratorBase.java
new file mode 100644
index 0000000..042c5fe
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/JsonGeneratorBase.java
@@ -0,0 +1,26 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.common;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import java.util.Date;
+
+public class JsonGeneratorBase {
+    private JsonGeneratorBase() {}
+    public static Gson getGson() {
+        return new GsonBuilder()
+                .registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
+                .disableHtmlEscaping()
+                .create();
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/common/mapper/GridMeasureMapper.java b/src/main/java/org/eclipse/openk/common/mapper/GridMeasureMapper.java
new file mode 100644
index 0000000..9571354
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/mapper/GridMeasureMapper.java
@@ -0,0 +1,103 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.common.mapper;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.HGridMeasure;
+import org.eclipse.openk.api.PowerSystemResource;
+import org.eclipse.openk.api.SingleGridmeasure;
+import org.eclipse.openk.api.Steps;
+import org.eclipse.openk.common.mapper.generic.GenericApiToDbMapper;
+import org.eclipse.openk.db.dao.TblStepsDao;
+import org.eclipse.openk.db.model.HTblGridMeasure;
+import org.eclipse.openk.db.model.TblGridMeasure;
+import org.eclipse.openk.db.model.TblSingleGridmeasure;
+import org.eclipse.openk.db.model.TblSteps;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class GridMeasureMapper {
+
+
+    public void adjustPowerSystemResourceMapFromViewModel(SingleGridmeasure sg, TblSingleGridmeasure mSg) {
+      if (sg.getPowerSystemResource() != null && sg.getPowerSystemResource().getCimId() != null){
+        mSg.setCimId(sg.getPowerSystemResource().getCimId());
+        mSg.setCimName(sg.getPowerSystemResource().getCimName());
+        mSg.setCimDescription(sg.getPowerSystemResource().getCimDescription());
+      }
+    }
+
+    private void adjustPowerSystemResourceMapToViewModel(TblSingleGridmeasure sg, SingleGridmeasure vmSg) {
+      PowerSystemResource psr = new PowerSystemResource();
+      psr.setCimId(sg.getCimId());
+      psr.setCimName(sg.getCimName());
+      psr.setCimDescription(sg.getCimDescription());
+      vmSg.setPowerSystemResource(psr);
+    }
+
+    public TblGridMeasure mapFromVModel(GridMeasure vmGridMeasure) {
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        // do extra mappings here!
+        return mapper.mapFromViewModel(TblGridMeasure.class, vmGridMeasure);
+    }
+
+    public GridMeasure mapToVModel( TblGridMeasure tblGridmeasure ) {
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        // do extra mappings here!
+        return mapper.mapToViewModel(GridMeasure.class, tblGridmeasure);
+    }
+
+    public GridMeasure mapToVModel(TblGridMeasure tblGridmeasure, List<TblSingleGridmeasure> listSingleGridmeasures, TblStepsDao stepsDao) {
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+         // do extra mappings here!
+        GridMeasure vmGridMeasure = mapper.mapToViewModel(GridMeasure.class, tblGridmeasure);
+        List <SingleGridmeasure> listVmSingleGridmeasures= new ArrayList<>();
+
+        for (TblSingleGridmeasure sg : listSingleGridmeasures) {
+            processSingleGridMeasure(stepsDao, listVmSingleGridmeasures, sg);
+        }
+        vmGridMeasure.setListSingleGridmeasures(listVmSingleGridmeasures);
+        return vmGridMeasure;
+    }
+
+    private void processSingleGridMeasure(TblStepsDao stepsDao, List<SingleGridmeasure> listVmSingleGridmeasures, TblSingleGridmeasure sg) {
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        SingleGridmeasure vmSg = mapper.mapToViewModel(SingleGridmeasure.class, sg);
+        List <Steps> listVmSteps= new ArrayList<>();
+        if (sg.getCimId() != null){
+          adjustPowerSystemResourceMapToViewModel(sg, vmSg);
+        }
+
+        List<TblSteps> listTblSteps = stepsDao.getStepsBySingleGmIdInTx(sg.getId());
+
+        if (listTblSteps != null) {
+
+            for (TblSteps stp : listTblSteps) {
+                    Steps vmStp = mapper.mapToViewModel(Steps.class, stp);
+                    listVmSteps.add(vmStp);
+            }
+            vmSg.setListSteps(listVmSteps);
+        }
+
+        listVmSingleGridmeasures.add(vmSg);
+    }
+
+    public HGridMeasure mapToVModel(HTblGridMeasure htblGridmeasure) {
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        // do extra mappings here!
+        return mapper.mapToViewModel(HGridMeasure.class, htblGridmeasure);
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/common/mapper/generic/GenericApiToDbMapper.java b/src/main/java/org/eclipse/openk/common/mapper/generic/GenericApiToDbMapper.java
new file mode 100644
index 0000000..5e533c7
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/mapper/generic/GenericApiToDbMapper.java
@@ -0,0 +1,192 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.common.mapper.generic;
+
+import com.google.common.collect.Lists;
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+
+public class GenericApiToDbMapper {
+
+    public <T> T mapToViewModel( Class<T> viewModelClass,  Object dbpojo ) {
+
+        try {
+            Class cdbm = null;
+            cdbm = Class.forName(dbpojo.getClass().getName());
+
+            assertVMClassAnnotation(viewModelClass, cdbm);
+
+            Field[] vmClassFields = viewModelClass.getDeclaredFields();
+
+            Map<String, Field> db2vmFieldMap = new HashMap<>();
+            fillFieldMap(vmClassFields, db2vmFieldMap);
+
+            return createAndMapObject(viewModelClass, dbpojo, cdbm, db2vmFieldMap);
+        } catch (ClassNotFoundException e) {
+            throw new RuntimeException("Class not found in mapToViewModel", e); // NOSONAR RuntimeException by design here!
+        }
+    }
+
+
+    public <T> T mapFromViewModel( Class<T> dbModelClass, Object vmpojo ) {
+        try {
+            Class cvm = null;
+
+            cvm = Class.forName(vmpojo.getClass().getName());
+
+            assertVMClassAnnotation(cvm, dbModelClass);
+
+            Field[] dbClassFields = dbModelClass.getDeclaredFields();
+            Field[] vmClassFields = cvm.getDeclaredFields();
+
+            Map<String, Field> vm2dbFieldMap = new HashMap<>();
+            fillReverseFieldMap(vmClassFields, dbClassFields, vm2dbFieldMap);
+
+            return createAndMapObject(dbModelClass, vmpojo, cvm, vm2dbFieldMap);
+        } catch (ClassNotFoundException e) {
+            throw new RuntimeException("Class not found in mapFromViewModel", e); // NOSONAR RuntimeException by design here!
+        }
+
+    }
+
+    private void assertVMClassAnnotation( Class vmClazz, Class dbmClazz ) { // NOSONAR Generic Exception tolerated here _fd
+        MapDbModelClass clazzAnno = (MapDbModelClass)vmClazz.getAnnotation(MapDbModelClass.class); // NOSONAR wrong sonar message
+        if( clazzAnno == null || !clazzAnno.classType().equals(dbmClazz) ) {
+            throw new RuntimeException("View Model class \""+vmClazz.getSimpleName()+"\" is missing annotation: @" + MapDbModelClass.class.getSimpleName() + // NOSONAR Generic Exception tolerated here _fd
+                    "(classType = " + dbmClazz.getSimpleName() +".class)");
+        }
+
+    }
+
+
+    private <T> T createAndMapObject(Class<T> trgClass, Object srcObj, Class srcClazz, Map<String, Field> db2vmFieldMap) {
+        T vmTarget = createTargetObject(trgClass);
+
+        for( Field dbfield : srcClazz.getDeclaredFields()) {
+            if( db2vmFieldMap.containsKey(dbfield.getName())) {
+                Field targetfield = db2vmFieldMap.get(dbfield.getName());
+
+                storeTargetValue(srcObj, dbfield, vmTarget, targetfield);
+            }
+        }
+
+        return vmTarget;
+    }
+
+    private void storeTargetValue( Object srcObj, Field srcField, Object trgObj, Field trgField) {// NOSONAR high oyclic complexity tolerated here
+        try {
+            if (trgField.getType().equals(srcField.getType())) {
+                srcField.setAccessible(true);
+                trgField.setAccessible(true);
+
+                if (trgField.getType().equals(int.class)) {
+                    trgField.setInt(trgObj, srcField.getInt(srcObj));
+                    return;
+                }
+
+                if (trgField.getType().equals(boolean.class)) {
+                    trgField.setBoolean(trgObj, srcField.getBoolean(srcObj));
+                    return;
+                }
+
+                if (trgField.getType().equals(byte.class)) {
+                    trgField.setByte(trgObj, srcField.getByte(srcObj));
+                    return;
+                }
+
+                if (trgField.getType().equals(char.class)) {
+                    trgField.setChar(trgObj, srcField.getChar(srcObj));
+                    return;
+                }
+
+                if (trgField.getType().equals(double.class)) {
+                    trgField.setDouble(trgObj, srcField.getDouble(srcObj));
+                    return;
+                }
+
+                if (trgField.getType().equals(float.class)) {
+                    trgField.setFloat(trgObj, srcField.getFloat(srcObj));
+                    return;
+                }
+
+                if (trgField.getType().equals(long.class)) {
+                    trgField.setLong(trgObj, srcField.getLong(srcObj));
+                    return;
+                }
+
+                if (trgField.getType().equals(short.class)) {
+                    trgField.setShort(trgObj, srcField.getShort(srcObj));
+                    return;
+                }
+
+                if (trgField.getType() instanceof Object) {
+                    trgField.set(trgObj, srcField.get(srcObj));
+                    return; // NOSONAR we do not remove this return statement
+                }
+            }
+        }
+        catch( IllegalAccessException i ) {
+            throw new RuntimeException("Type error while mapping.", i); // NOSONAR RuntimeException by design here!
+        }
+
+    }
+
+    protected <T> T createTargetObject(Class<T> viewModelClass) {  // NOSONAR generic Exception tolerated
+        T vmTarget;
+        try {
+            vmTarget = viewModelClass.getConstructor().newInstance();
+        } catch (Exception e) {
+            throw new RuntimeException("Target pojo-class needs a default constructor!", e); // NOSONAR generic Exception tolerated
+        }
+        return vmTarget;
+    }
+
+    protected void fillFieldMap(Field[] vmClassFields, Map<String, Field> fieldMap) {
+        for( Field f : vmClassFields ) {
+            MapDbModelField fieldAnnotation = f.getAnnotation(MapDbModelField.class);
+            if( fieldAnnotation != null ) {
+                if( fieldAnnotation.fieldName().isEmpty() ) {
+                    fieldMap.put(f.getName(), f);
+                }
+                else
+                {
+                    fieldMap.put(fieldAnnotation.fieldName(), f);
+                }
+            }
+        }
+    }
+
+    protected void fillReverseFieldMap(Field[] vmClassFields, Field[] dbClassFields, Map<String, Field> fieldMap) {
+        Map<String, Field> dbName2FieldMap = new HashMap<>();
+        Lists.newArrayList(dbClassFields).forEach(f -> dbName2FieldMap.put(f.getName(), f));
+
+        for( Field f : vmClassFields ) {
+            MapDbModelField fieldAnnotation = f.getAnnotation(MapDbModelField.class);
+            if( fieldAnnotation != null ) {
+                if( fieldAnnotation.fieldName().isEmpty() ) {
+
+                    fieldMap.put(f.getName(), dbName2FieldMap.get(f.getName()));
+                }
+                else
+                {
+                    fieldMap.put(f.getName(), dbName2FieldMap.get(fieldAnnotation.fieldName()));
+                }
+            }
+        }
+    }
+
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/common/mapper/generic/annotations/MapDbModelClass.java b/src/main/java/org/eclipse/openk/common/mapper/generic/annotations/MapDbModelClass.java
new file mode 100644
index 0000000..6447b86
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/mapper/generic/annotations/MapDbModelClass.java
@@ -0,0 +1,23 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.common.mapper.generic.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface MapDbModelClass {
+    Class classType();
+}
diff --git a/src/main/java/org/eclipse/openk/common/mapper/generic/annotations/MapDbModelField.java b/src/main/java/org/eclipse/openk/common/mapper/generic/annotations/MapDbModelField.java
new file mode 100644
index 0000000..329a7ba
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/mapper/generic/annotations/MapDbModelField.java
@@ -0,0 +1,23 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.common.mapper.generic.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface MapDbModelField {
+    String fieldName() default "";
+}
diff --git a/src/main/java/org/eclipse/openk/common/util/DateUtils.java b/src/main/java/org/eclipse/openk/common/util/DateUtils.java
new file mode 100644
index 0000000..8b067ba
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/util/DateUtils.java
@@ -0,0 +1,58 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+
+package org.eclipse.openk.common.util;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.Date;
+import java.util.Locale;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.common.Globals;
+
+public class DateUtils {
+
+  public static final Logger LOGGER = Logger.getLogger(DateUtils.class.getName());
+
+  private static final String DATEFORMAT = "yyyy-MM-dd'T'HH:mm:ss";
+
+  public static String formatDateToString(Date date){
+    if (date == null) {
+      return null;
+    }
+    DateFormat dateFormat = new SimpleDateFormat(DATEFORMAT, Locale.GERMANY);
+    return dateFormat.format(date);
+  }
+
+  public static Date parseStringToDate(String date){
+    try {
+      if (date == null) {
+        return null;
+      }
+      DateFormat dateFormat = new SimpleDateFormat(DATEFORMAT, Locale.GERMANY);
+      dateFormat.setLenient( false );
+      return dateFormat.parse(date);
+    } catch (ParseException e) {
+      LOGGER.error("Error in formatStringToDate while parsing date: " + date);
+    }
+    return null;
+  }
+
+  public static LocalDate asLocalDate(Date date) {
+    return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.of(Globals.DATE_ZONE_ID_EUROPE)).toLocalDate();
+  }
+
+}
diff --git a/src/main/java/org/eclipse/openk/common/util/ResourceLoaderBase.java b/src/main/java/org/eclipse/openk/common/util/ResourceLoaderBase.java
new file mode 100644
index 0000000..65e6aa5
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/util/ResourceLoaderBase.java
@@ -0,0 +1,81 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.common.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import org.apache.commons.io.ByteOrderMark;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.input.BOMInputStream;
+import org.apache.log4j.Logger;
+
+public class ResourceLoaderBase {
+
+    public static final Logger LOGGER = Logger.getLogger(ResourceLoaderBase.class.getName());
+
+    private String stream2String(InputStream is, String filename) {
+        StringWriter writer = new StringWriter();
+        BOMInputStream bomInputStream = new BOMInputStream(is, false, ByteOrderMark.UTF_8, ByteOrderMark.UTF_16BE, ByteOrderMark.UTF_16LE,
+            ByteOrderMark.UTF_32BE, ByteOrderMark.UTF_32LE);
+
+        try {
+            IOUtils.copy(bomInputStream, writer, "UTF-8");
+        } catch (IOException e) {
+            LOGGER.error("Fehler in stream2String()", e);
+            return "";
+        }
+
+        LOGGER.info("Datei erfolgreich eingelesen: " + filename);
+        return writer.toString();
+    }
+
+    public String loadStringFromResource(String filename) {
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        InputStream jsonstream = classLoader.getResourceAsStream(filename);
+        if (jsonstream==null){
+            LOGGER.error("Datei nicht gefunden: " + filename);
+            return null;
+        }
+        LOGGER.debug("Datei existiert und wurde selektiert: " + filename);
+        try {
+            URL resource = classLoader.getResource(filename);
+            if (resource != null) {
+                URI uri = resource.toURI();
+                LOGGER.debug("Uniform Resource Identifier (URI): " + uri);
+            }
+        } catch (URISyntaxException e) {
+            LOGGER.error("Fehler in loadStringFromResource: " + filename, e);
+        }
+
+        return stream2String(jsonstream, filename);
+    }
+
+    public String loadFromPath(String path) {
+        try {
+            Path paths = Paths.get(path);
+            LOGGER.info("paths: " + path);
+            try (InputStream inputStream = Files.newInputStream(Paths.get(path))) {
+                return stream2String(inputStream, paths.getFileName().toString());
+            }
+        } catch (IOException e) {
+            LOGGER.error("Fehler in loadFromPath", e);
+            return null;
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/common/util/SmallReflectionHelper.java b/src/main/java/org/eclipse/openk/common/util/SmallReflectionHelper.java
new file mode 100644
index 0000000..cafe674
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/common/util/SmallReflectionHelper.java
@@ -0,0 +1,25 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.common.util;
+
+import java.lang.reflect.Field;
+
+public class SmallReflectionHelper {
+    private SmallReflectionHelper() {}
+
+    public static boolean checkBoolField(Object objectToCheck, String boolFieldName) throws NoSuchFieldException, IllegalAccessException {
+        Class clz = objectToCheck.getClass();
+        Field searchedField = clz.getDeclaredField( boolFieldName);
+        searchedField.setAccessible(true);
+        return searchedField.getBoolean(objectToCheck);
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessException.java b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessException.java
new file mode 100644
index 0000000..dc57591
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessException.java
@@ -0,0 +1,22 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+public class ProcessException extends Exception {
+    public ProcessException( String msg ) {
+        super( msg );
+    }
+
+    public ProcessException( String msg, Throwable throwable) {
+        super( msg, throwable );
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessGrid.java b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessGrid.java
new file mode 100644
index 0000000..c81c87f
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessGrid.java
@@ -0,0 +1,56 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public abstract class ProcessGrid {
+    public static class Recoverable<T extends ProcessSubject> {
+        private final T subject;
+        private final ProcessGrid instance;
+
+        public Recoverable( T subject, ProcessGrid instance ) {
+            this.subject = subject;
+            this.instance = instance;
+        }
+        public void start(StateResolver resolver ) throws ProcessException, HttpStatusException {
+            ProcessTask t = instance.resolve( resolver.resolveState());
+            t.recover(subject);
+        }
+    }
+
+    private static final Logger logger= Logger.getLogger(ProcessGrid.class.getName());
+    private Map<ProcessState, ProcessTask> gridMap = new HashMap<>();
+
+    public <T extends ProcessSubject> Recoverable<T> recover(T subject) {
+        return new Recoverable<>( subject, this);
+    }
+
+    protected <P extends ProcessTask> P register(ProcessState state, P step ) {
+        gridMap.put( state, step );
+        return step;
+    }
+
+
+    protected ProcessTask resolve(ProcessState state ) throws ProcessException {
+        if( !gridMap.containsKey(state) ) {
+            logger.error("State" + state.toString() + " is not resolvable!");
+            throw new ProcessException("State " + state.toString() + " is not resolvable!");
+        }
+        else {
+            return gridMap.get(state);
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessState.java b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessState.java
new file mode 100644
index 0000000..df6da23
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessState.java
@@ -0,0 +1,16 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+public interface ProcessState {
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessSubject.java b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessSubject.java
new file mode 100644
index 0000000..707590f
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessSubject.java
@@ -0,0 +1,15 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+public interface ProcessSubject {
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessTask.java b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessTask.java
new file mode 100644
index 0000000..f5ad09b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/ProcessTask.java
@@ -0,0 +1,22 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.base;
+
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public interface ProcessTask {
+    void enterStep(ProcessSubject model) throws ProcessException, HttpStatusException;
+    void leaveStep(ProcessSubject model) throws ProcessException, HttpStatusException;
+    void connectOutputTo(ProcessTask step) throws ProcessException, HttpStatusException;
+    void recover(ProcessSubject model) throws ProcessException, HttpStatusException;
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/StateResolver.java b/src/main/java/org/eclipse/openk/core/bpmn/base/StateResolver.java
new file mode 100644
index 0000000..4751acc
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/StateResolver.java
@@ -0,0 +1,16 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+public interface StateResolver {
+    ProcessState resolveState() throws ProcessException;
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/BaseTask.java b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/BaseTask.java
new file mode 100644
index 0000000..7672dcc
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/BaseTask.java
@@ -0,0 +1,70 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessSubject;
+import org.eclipse.openk.core.bpmn.base.ProcessTask;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+
+public abstract class BaseTask<T extends ProcessSubject> implements ProcessTask {
+    private static final Logger logger = Logger.getLogger(BaseTask.class.getName());
+    private ProcessTask outputStep;
+    private String description;
+
+    protected BaseTask(String description ) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    @Override
+    public void leaveStep(ProcessSubject model) throws ProcessException, HttpStatusException {
+        logger.debug("On Leave: \""+description+"\"");
+        onLeaveStep( (T)model );
+        if(outputStep==null) {
+            logger.debug(description+": firing unconnected Output!");
+        }
+        else {
+            logger.debug("Left step: \""+description+"\"");
+            outputStep.enterStep(model);
+        }
+    }
+
+    @Override
+    public void enterStep(ProcessSubject model ) throws ProcessException, HttpStatusException {
+        logger.debug("Enter: \""+description+"\"");
+        onEnterStep((T)model);
+    }
+
+    @Override
+    public void recover(ProcessSubject model) throws ProcessException, HttpStatusException {
+        logger.debug("Recover: \""+description+"\"");
+        onRecover((T)model);
+    }
+
+
+    protected abstract void onLeaveStep(T model) throws ProcessException, HttpStatusException;
+    protected abstract void onEnterStep(T model) throws ProcessException, HttpStatusException;
+    protected abstract void onRecover(T model) throws ProcessException, HttpStatusException;
+
+    @Override
+    public void connectOutputTo(ProcessTask step) throws ProcessException {
+        this.outputStep = step;
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/DecisionTask.java b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/DecisionTask.java
new file mode 100644
index 0000000..c9aaff6
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/DecisionTask.java
@@ -0,0 +1,72 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import java.util.EnumMap;
+import java.util.Map;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessSubject;
+import org.eclipse.openk.core.bpmn.base.ProcessTask;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public abstract class DecisionTask<T extends ProcessSubject> extends BaseTask<T> {
+    private static final Logger logger= Logger.getLogger(DecisionTask.class.getName());
+    public enum OutputPort {PORT1, PORT2, PORT3, PORT4, PORT5, YES, NO}
+    private Map<OutputPort, ProcessTask> outputMap = new EnumMap<>(OutputPort.class);
+
+    protected DecisionTask(String description) {
+        super(description);
+    }
+
+    public void connectOutputTo(OutputPort port, ProcessTask step ) {
+        outputMap.put(port, step);
+    }
+
+    public abstract OutputPort decide( T model ) throws ProcessException;
+
+    @Override
+    public void enterStep(ProcessSubject model) throws ProcessException, HttpStatusException {
+        logger.debug("Enter: \""+getDescription()+"\"");
+        OutputPort port = decide((T)model);
+        if( !outputMap.containsKey(port) ){
+            throw new ProcessException(getDescription()+": Usage of unconnected output "+port.name());
+        }
+        else {
+            outputMap.get(port).enterStep(model);
+        }
+    }
+
+    @Override
+    protected void onLeaveStep(T model) throws ProcessException {
+        throw new ProcessException("onLeaveStep must not be called on a decision task object");
+    }
+
+    @Override
+    protected void onEnterStep(T model) throws ProcessException {
+
+    }
+
+    @Override
+    protected void onRecover(T model) throws ProcessException, HttpStatusException {
+        // Entry-point is enter!
+        enterStep(model);
+    }
+
+
+
+
+
+
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/EndPointTask.java b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/EndPointTask.java
new file mode 100644
index 0000000..d972b17
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/EndPointTask.java
@@ -0,0 +1,46 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessSubject;
+import org.eclipse.openk.core.bpmn.base.ProcessTask;
+
+
+public class EndPointTask implements ProcessTask {
+    private static final Logger logger= Logger.getLogger(EndPointTask.class.getName());
+    private final String description;
+
+    public EndPointTask(String description ) {
+        this.description = description;
+    }
+    @Override
+    public void enterStep(ProcessSubject model) throws ProcessException {
+        logger.debug("Endpoint: \""+description+"\"");
+    }
+
+    @Override
+    public void leaveStep(ProcessSubject model) throws ProcessException {
+        throw new ProcessException("Cannot leave Endpoint: " + description);
+    }
+
+    @Override
+    public void connectOutputTo(ProcessTask step) throws ProcessException {
+        throw new ProcessException("Cannot connect to an Endpoint: "+description);
+    }
+
+    @Override
+    public void recover(ProcessSubject model) throws ProcessException {
+        throw new ProcessException("Cannot recover at an Endpoint: "+description);
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/ServiceTask.java b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/ServiceTask.java
new file mode 100644
index 0000000..e47dfb9
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/ServiceTask.java
@@ -0,0 +1,41 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public abstract class ServiceTask <T extends ProcessSubject> extends BaseTask<T> {
+    private static final Logger logger = Logger.getLogger(ServiceTask.class.getName());
+    protected ServiceTask(String description) {
+        super(description);
+    }
+
+    @Override
+    public void enterStep(ProcessSubject model) throws ProcessException, HttpStatusException {
+        logger.debug("Enter: \""+getDescription()+"\"");
+        this.leaveStep( model );
+    }
+
+    @Override
+    protected void onEnterStep(ProcessSubject model) throws ProcessException {
+        // implement empty
+    }
+
+    @Override
+    protected void onRecover(T model) throws ProcessException, HttpStatusException {
+        enterStep( model );
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/UserInteractionTask.java b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/UserInteractionTask.java
new file mode 100644
index 0000000..b3c0228
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/base/tasks/UserInteractionTask.java
@@ -0,0 +1,52 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public abstract class UserInteractionTask<T extends ProcessSubject> extends BaseTask<T> {
+    private static final Logger logger = Logger.getLogger(UserInteractionTask.class.getName());
+
+    protected UserInteractionTask(String description) {
+        super(description);
+    }
+
+    protected boolean isStayInThisTask(T model){ // NOSONAR Parameter needed, if overridden
+        return false;
+    }
+
+    protected void onStayInTask(T model) throws ProcessException, HttpStatusException {
+    }
+
+    @Override
+    protected void onRecover(T model) throws ProcessException, HttpStatusException {
+        leaveStep( model );
+    }
+
+    @Override
+    public void leaveStep(ProcessSubject model) throws ProcessException, HttpStatusException {
+        if( !isStayInThisTask((T)model)) {
+            super.leaveStep(model);
+        }
+        else {
+            logger.debug("Stay In this task valid! -> staying!");
+            onStayInTask((T)model);
+        }
+
+
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmGrid.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmGrid.java
new file mode 100644
index 0000000..6b6c34d
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmGrid.java
@@ -0,0 +1,155 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessGrid;
+import org.eclipse.openk.core.bpmn.base.ProcessTask;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.bpmn.base.tasks.EndPointTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.*;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+import static org.eclipse.openk.api.BackendSettings.BpmnGridConfig.*;
+import static org.eclipse.openk.core.bpmn.base.tasks.DecisionTask.OutputPort.*;
+import static org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState.*;
+
+public class PlgmGrid extends ProcessGrid {
+    private static Logger logger = Logger.getLogger(PlgmGrid.class);
+    public PlgmGrid() {
+
+        try {
+            init();
+        }
+        catch( ProcessException e ) {
+            logger.fatal("Invalid process grid configuration", e );
+            throw new RuntimeException("Invalid process grid configuration"); // NOSONAR _fd
+        }
+        catch( HttpStatusException se ) {
+                logger.error("Error in ProcessGrid", se );
+                throw new RuntimeException("Error in ProcessGrid"); // NOSONAR _fd
+        }
+    }
+    protected void init() throws ProcessException, HttpStatusException {
+
+            ProcessTask measureNew = register(NEW, new MeasureNew());
+            DecisionTask decideApplied = new DecideMeasureApplied();
+            ProcessTask sendMailOnApplied = new ServiceMeasureSendMail(BackendConfig.getInstance().getEmailTemplatePaths().getAppliedEmailTemplate());
+            ProcessTask measureApplied = register(APPLIED,
+                    new UIStoreMeasureTask("State APPLIED UI Task", true));
+            DecisionTask decideMeasurePossible = new DecideMeasurePossible();
+            ProcessTask sendMailForApproval = new ServiceMeasureForApproval();
+            DecisionTask decideSkipApproval = new ConfigDecisionTask(SKIP_FOR_APPROVAL);
+            ProcessTask setMeasureToApproved = new StoreStatusServiceTask(APPROVED);
+            ProcessTask sendMailOnCancelled = new ServiceMeasureCanceled();
+            DecisionTask decideEndAfterApproval = new ConfigDecisionTask(END_AFTER_APPROVED);
+            DecisionTask decideSkipRequesting = new ConfigDecisionTask(SKIP_REQUESTING);
+            ProcessTask setMeasureToActive = new StoreStatusServiceTask(ACTIVE);
+            ProcessTask measureForApproval = register(FOR_APPROVAL,
+                    new UIStoreMeasureTask("State FOR_APPROVAL UI Task", true));
+            DecisionTask decideApproved = new DecideMeasureApproved();
+            ProcessTask setMeasureToApplied = new StoreStatusServiceTask(APPLIED);
+            ProcessTask sendMailApproved = new ServiceMeasureApproved();
+            ProcessTask sendMailRejected = new ServiceMeasureRejected();
+            ProcessTask measureApproved = register(APPROVED,
+                new UIStoreMeasureTask("State APPROVED UI Task", true));
+            DecisionTask decideMeasureRequested = new DecideMeasureNotNeededOrRequested();
+            ProcessTask sendMailRequested = new ServiceMeasureRequested();
+            ProcessTask measureRequested = register(REQUESTED,
+                new UIStoreMeasureTask("State REQUESTED UI Task", true));
+            DecisionTask decideReleased = new DecideMeasureReleased();
+            ProcessTask sendMailReleased = new ServiceMeasureReleased();
+            ProcessTask measureReleased = register(RELEASED,
+                    new UIStoreMeasureTask("State RELEASED UI Task", true));
+            DecisionTask decideEndAfterReleasedTask = new ConfigDecisionTask(END_AFTER_RELEASED);
+            ProcessTask setMeasureToClosed = new StoreStatusServiceTask(CLOSED);
+            ProcessTask measureActive = register(ACTIVE,
+                new UIStoreMeasureTask("State ACTIVE UI Task", true));
+            ProcessTask measureInWork = register(IN_WORK,
+                    new UIStoreMeasureTask("State IN_WORK UI Task", true));
+            DecisionTask decideSkipInWorkTask = new ConfigDecisionTask(SKIP_IN_WORK);
+            ProcessTask measureWorkFinished = register(WORK_FINISHED,
+                    new UIStoreMeasureTask("State WORK_FINISHED UI Task", true));
+            ProcessTask setMeasureToFinishedTask = new StoreStatusServiceTask(FINISHED);
+            ProcessTask measureFinished = register(FINISHED,
+                    new UIStoreMeasureTask("State FINISHED Task", true));
+            ProcessTask importData1 = new ServiceImportData();
+            ProcessTask importData2 = new ServiceImportData();
+            ProcessTask importData3 = new ServiceImportData();
+            ProcessTask importData4 = new ServiceImportData();
+            DecisionTask decideAnotherSinglemeasure = new DecideAnotherSinglemeasure();
+            ProcessTask sendMailFinished = new ServiceMeasureFinished();
+            ProcessTask sendMailClosed = new ServiceMeasureClosed();
+            EndPointTask endPoint = new EndPointTask("PLGM Endpoint");
+
+            // Connect
+            measureNew.connectOutputTo(decideApplied);
+            decideApplied.connectOutputTo(PORT1, sendMailOnApplied);
+            decideApplied.connectOutputTo(PORT2, measureNew);
+            decideApplied.connectOutputTo(PORT3, sendMailOnCancelled);
+            sendMailOnCancelled.connectOutputTo(endPoint);
+            sendMailOnApplied.connectOutputTo(measureApplied);
+            measureApplied.connectOutputTo(decideMeasurePossible);
+            decideMeasurePossible.connectOutputTo(YES, sendMailForApproval);
+            decideMeasurePossible.connectOutputTo(NO, sendMailOnCancelled);
+            sendMailOnCancelled.connectOutputTo(endPoint);
+            sendMailForApproval.connectOutputTo(decideSkipApproval);
+            decideSkipApproval.connectOutputTo(YES, setMeasureToApproved );
+            decideSkipApproval.connectOutputTo(NO, measureForApproval);
+            setMeasureToApproved.connectOutputTo(measureApproved);
+            measureForApproval.connectOutputTo(decideApproved);
+            decideApproved.connectOutputTo(PORT1, sendMailApproved);
+            decideApproved.connectOutputTo(PORT2, sendMailOnCancelled);
+            decideApproved.connectOutputTo(PORT3, setMeasureToApplied);
+            sendMailApproved.connectOutputTo(measureApproved);
+            setMeasureToApplied.connectOutputTo(sendMailRejected);
+            sendMailRejected.connectOutputTo(measureApplied);
+            measureApproved.connectOutputTo(decideEndAfterApproval);
+            decideEndAfterApproval.connectOutputTo(NO, decideSkipRequesting);
+            decideEndAfterApproval.connectOutputTo(YES, setMeasureToClosed);
+            decideSkipRequesting.connectOutputTo(NO, decideMeasureRequested);
+            decideSkipRequesting.connectOutputTo(YES, setMeasureToActive);
+            decideMeasureRequested.connectOutputTo(YES, sendMailOnCancelled);
+            decideMeasureRequested.connectOutputTo(NO, sendMailRequested);
+            sendMailRequested.connectOutputTo(measureRequested);
+            measureRequested.connectOutputTo(decideReleased);
+            decideReleased.connectOutputTo(PORT1, sendMailReleased);
+            decideReleased.connectOutputTo(PORT2, setMeasureToApplied);
+            decideReleased.connectOutputTo(DecisionTask.OutputPort.PORT3, sendMailOnCancelled);
+            sendMailReleased.connectOutputTo(measureReleased);
+            setMeasureToApplied.connectOutputTo(sendMailRejected);
+            sendMailRejected.connectOutputTo(measureApplied);
+            setMeasureToActive.connectOutputTo(decideEndAfterReleasedTask);
+            measureReleased.connectOutputTo(decideEndAfterReleasedTask);
+            decideEndAfterReleasedTask.connectOutputTo(NO, importData1);
+            decideEndAfterReleasedTask.connectOutputTo(YES, setMeasureToClosed);
+            setMeasureToClosed.connectOutputTo(sendMailClosed);
+            importData1.connectOutputTo(measureActive);
+            measureActive.connectOutputTo(decideSkipInWorkTask);
+            decideSkipInWorkTask.connectOutputTo(NO, importData2);
+            decideSkipInWorkTask.connectOutputTo(YES, setMeasureToFinishedTask);
+            importData2.connectOutputTo(measureInWork);
+            measureInWork.connectOutputTo(importData3);
+            importData3.connectOutputTo(measureWorkFinished);
+            setMeasureToFinishedTask.connectOutputTo(sendMailFinished);
+            measureWorkFinished.connectOutputTo(importData4);
+            importData4.connectOutputTo(decideAnotherSinglemeasure);
+            decideAnotherSinglemeasure.connectOutputTo(YES, measureApproved);
+            decideAnotherSinglemeasure.connectOutputTo(NO, sendMailFinished);
+            sendMailFinished.connectOutputTo(measureFinished);
+            measureFinished.connectOutputTo(sendMailClosed);
+            sendMailClosed.connectOutputTo(endPoint);
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmProcessState.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmProcessState.java
new file mode 100644
index 0000000..45a8ee8
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmProcessState.java
@@ -0,0 +1,77 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessState;
+
+public enum PlgmProcessState implements ProcessState {
+    NEW             (0),
+    APPLIED         (1),
+    CANCELED        (2),
+    FOR_APPROVAL    (3),
+    APPROVED        (4),
+    REQUESTED       (5),
+    RELEASED        (6),
+    ACTIVE          (7),
+    IN_WORK         (8),
+    WORK_FINISHED   (9),
+    FINISHED        (10),
+    CLOSED          (11),
+    REJECTED        (12),
+    UNDEFINED_      (-1); // NOSONAR
+
+    private static final Logger logger = Logger.getLogger(PlgmProcessState.class.getName());
+    private final int statusValue;
+
+    PlgmProcessState(int statusValue ) {
+        this.statusValue = statusValue;
+    }
+
+    public int getStatusValue() {
+        return statusValue;
+    }
+
+    public static ProcessState fromValue( int statusValue ) { // NOSONAR complexity high but simple
+        switch( statusValue ) {
+            case 0:
+                return NEW;
+            case 1:
+                return APPLIED;
+            case 2:
+                return CANCELED;
+            case 3:
+                return FOR_APPROVAL;
+            case 4:
+                return APPROVED;
+            case 5:
+                return REQUESTED;
+            case 6:
+                return RELEASED;
+            case 7:
+                return ACTIVE;
+            case 8:
+                return IN_WORK;
+            case 9:
+                return WORK_FINISHED;
+            case 10:
+                return FINISHED;
+            case 11:
+                return CLOSED;
+            case 12:
+                return REJECTED;
+            default:
+                logger.error("Invalid statusValue:"+statusValue);
+                return UNDEFINED_;
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmProcessSubject.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmProcessSubject.java
new file mode 100644
index 0000000..96a8e68
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmProcessSubject.java
@@ -0,0 +1,70 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.base.ProcessState;
+import org.eclipse.openk.core.bpmn.base.ProcessSubject;
+
+public class PlgmProcessSubject implements ProcessSubject {
+    private static final Logger logger = Logger.getLogger(PlgmProcessSubject.class.getName()); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    private GridMeasure gridMeasure;
+    private String changeUser;
+    private ProcessState stateInDb;
+    private String jwt;
+
+    private PlgmProcessSubject() {}
+
+    private PlgmProcessSubject( GridMeasure gm, String changeUser ) {
+        this.gridMeasure = gm;
+        this.changeUser = changeUser;
+    }
+
+    public static PlgmProcessSubject fromGridMeasure( GridMeasure gm, String changeUser ) {
+        return new PlgmProcessSubject(gm, changeUser);
+    }
+
+    public GridMeasure getGridMeasure() {
+        return gridMeasure;
+    }
+
+    public void setGridMeasure( GridMeasure gm ) {
+        this.gridMeasure = gm;
+    }
+
+    public String getChangeUser() {
+        return changeUser;
+    }
+
+    public void setChangeUser(String changeUser) {
+        this.changeUser = changeUser;
+    }
+
+    public ProcessState getStateInDb() {
+        return stateInDb;
+    }
+
+    public void setStateInDb(ProcessState stateInDb) {
+        this.stateInDb = stateInDb;
+    }
+
+    public String getJwt() {
+        return jwt;
+    }
+
+    public void setJwt(String jwt) {
+        this.jwt = jwt;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ConfigDecisionTask.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ConfigDecisionTask.java
new file mode 100644
index 0000000..2852435
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ConfigDecisionTask.java
@@ -0,0 +1,47 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.BackendSettings;
+import org.eclipse.openk.common.util.SmallReflectionHelper;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+
+public class ConfigDecisionTask extends DecisionTask<PlgmProcessSubject> {
+    private static Logger logger = Logger.getLogger(DecideAnotherSinglemeasure.class.getName()); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    private String configParamName;
+
+    public ConfigDecisionTask(String backendSettingParamName) {
+        super("ConfigDecisionTask: Param="+backendSettingParamName);
+        this.configParamName = backendSettingParamName;
+    }
+
+    @Override
+    public OutputPort decide(PlgmProcessSubject model) throws ProcessException {
+        BackendSettings.BpmnGridConfig bs = BackendConfig.getInstance().getBackendSettings().getBpmnGridConfig();
+        try {
+            String loggerOutput1 = "Decide: ";
+            OutputPort port = SmallReflectionHelper.checkBoolField(bs, this.configParamName)? OutputPort.YES : OutputPort.NO;
+            logger.debug(loggerOutput1 + getDescription() + "\" -> Firing Port: " + port.toString());
+            return port;
+        } catch (Exception e) {
+            String errText = "Invalid configuration for grid: " + configParamName + " is an unknown configParam";
+            logger.fatal(errText, e);
+            throw new ProcessException(errText);
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideAnotherSinglemeasure.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideAnotherSinglemeasure.java
new file mode 100644
index 0000000..483d8d3
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideAnotherSinglemeasure.java
@@ -0,0 +1,37 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessState;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+
+
+public class DecideAnotherSinglemeasure extends DecisionTask<PlgmProcessSubject> {
+    private static Logger logger = Logger.getLogger(DecideAnotherSinglemeasure.class.getName()); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public DecideAnotherSinglemeasure() {
+        super("Decision: gibt es eine weitere Einzelmassnahme?");
+    }
+
+    @Override
+    public OutputPort decide(PlgmProcessSubject model) throws ProcessException {
+        String loggerOutput1 = "Decide: ";
+        logger.debug(loggerOutput1 + getDescription() + "\" -> Firing Port NO");
+        return OutputPort.NO;
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureApplied.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureApplied.java
new file mode 100644
index 0000000..f4410ff
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureApplied.java
@@ -0,0 +1,55 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessState;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+
+public class DecideMeasureApplied extends DecisionTask<PlgmProcessSubject> {
+    private static Logger logger = Logger.getLogger(DecideMeasureApplied.class.getName()); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public DecideMeasureApplied() {
+        super("Decision: Soll Massnahme beantragt werden?");
+    }
+
+    @Override
+    public OutputPort decide(PlgmProcessSubject model) throws ProcessException {
+        ProcessState newState = PlgmProcessState.fromValue(model.getGridMeasure().getStatusId());
+        String loggerOutput1 = "Decide: ";
+
+        if( newState == PlgmProcessState.APPLIED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port 1");
+            return OutputPort.PORT1;
+        }
+        else if( newState == PlgmProcessState.NEW ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port 2");
+            return OutputPort.PORT2;
+        }
+        else if( newState == PlgmProcessState.CANCELED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port 3");
+            return OutputPort.PORT3;
+        }
+        else {
+            throw new ProcessException(this.getDescription()+": Invalid status request:" + newState,
+                    new HttpStatusException(HttpStatus.UNPROCESSABLE_ENTITY_422));
+        }
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureApproved.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureApproved.java
new file mode 100644
index 0000000..418b9da
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureApproved.java
@@ -0,0 +1,56 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessState;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+
+public class DecideMeasureApproved extends DecisionTask<PlgmProcessSubject> {
+    private static Logger logger = Logger.getLogger(DecideMeasureApproved.class.getName()); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public DecideMeasureApproved() {
+        super("Decision: Maßnahme genehmigt?");
+    }
+
+    @Override
+    public OutputPort decide(PlgmProcessSubject model) throws ProcessException {
+        ProcessState newState = PlgmProcessState.fromValue(model.getGridMeasure().getStatusId());
+        String loggerOutput1 = "Decide: ";
+
+        if( newState == PlgmProcessState.APPROVED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port PORT1");
+            return OutputPort.PORT1;
+        }
+        else if( newState == PlgmProcessState.CANCELED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port PORT2");
+            return OutputPort.PORT2;
+        }
+        else if( newState == PlgmProcessState.REJECTED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port PORT3");
+            return OutputPort.PORT3;
+        }
+        else {
+            throw new ProcessException(this.getDescription()+": Invalid status request:" + newState,
+                    new HttpStatusException(HttpStatus.UNPROCESSABLE_ENTITY_422));
+        }
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureNotNeededOrRequested.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureNotNeededOrRequested.java
new file mode 100644
index 0000000..4bf88d4
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureNotNeededOrRequested.java
@@ -0,0 +1,49 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessState;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public class DecideMeasureNotNeededOrRequested extends DecisionTask<PlgmProcessSubject> {
+    private static Logger logger = Logger.getLogger(DecideMeasureNotNeededOrRequested.class.getName()); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public DecideMeasureNotNeededOrRequested() {
+        super("Decision: Maßnahme nicht mehr nötig (oder angefordert)?");
+    }
+
+    @Override
+    public OutputPort decide(PlgmProcessSubject model) throws ProcessException {
+        ProcessState newState = PlgmProcessState.fromValue(model.getGridMeasure().getStatusId());
+        String loggerOutput1 = "Decide: ";
+
+        if( newState == PlgmProcessState.REQUESTED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port NO");
+            return OutputPort.NO;
+        }
+        else if( newState == PlgmProcessState.CANCELED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port YES");
+            return OutputPort.YES;
+        }
+        else {
+            throw new ProcessException(this.getDescription()+": Invalid status request:" + newState,
+                    new HttpStatusException(HttpStatus.UNPROCESSABLE_ENTITY_422));
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasurePossible.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasurePossible.java
new file mode 100644
index 0000000..161bfee
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasurePossible.java
@@ -0,0 +1,46 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessState;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+
+
+public class DecideMeasurePossible extends DecisionTask<PlgmProcessSubject> {
+    private static Logger logger = Logger.getLogger(DecideMeasurePossible.class.getName()); // NOSONAR
+
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public DecideMeasurePossible() {
+        super("Decision: Maßnahme möglich?");
+    }
+
+    @Override
+    public OutputPort decide(PlgmProcessSubject model) throws ProcessException {
+        ProcessState newState = PlgmProcessState.fromValue(model.getGridMeasure().getStatusId());
+        String loggerOutput1 = "Decide: ";
+
+        if( newState == PlgmProcessState.CANCELED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port NO");
+            return OutputPort.NO;
+        } else {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port YES");
+            return OutputPort.YES;
+        }
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureReleased.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureReleased.java
new file mode 100644
index 0000000..40ab568
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureReleased.java
@@ -0,0 +1,57 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessState;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+
+public class DecideMeasureReleased extends DecisionTask<PlgmProcessSubject> {
+    private static Logger logger = Logger.getLogger(DecideMeasureReleased.class.getName()); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public DecideMeasureReleased() {
+        super("Decision: Soll die Maßnahme freigegeben werden?");
+    }
+
+    @Override
+    public OutputPort decide(PlgmProcessSubject model) throws ProcessException {
+        ProcessState newState = PlgmProcessState.fromValue(model.getGridMeasure().getStatusId());
+        String loggerOutput1 = "Decide: ";
+
+        if( newState == PlgmProcessState.RELEASED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port PORT1");
+            return OutputPort.PORT1;
+        }
+        else if( newState == PlgmProcessState.REJECTED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port PORT2");
+            return OutputPort.PORT2;
+        }
+        else if( newState == PlgmProcessState.CANCELED ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port PORT3");
+            return OutputPort.PORT3;
+        }
+        else {
+            throw new ProcessException(this.getDescription()+": Invalid status request:" + newState,
+                    new HttpStatusException(HttpStatus.UNPROCESSABLE_ENTITY_422));
+        }
+    }
+
+
+}
+
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureSaved.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureSaved.java
new file mode 100644
index 0000000..a2eebd5
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/DecideMeasureSaved.java
@@ -0,0 +1,53 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+
+
+public class DecideMeasureSaved extends DecisionTask<PlgmProcessSubject> {
+    private static Logger logger = Logger.getLogger(DecideMeasureSaved.class.getName()); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public DecideMeasureSaved() {
+        super("Decision: Maßnahme bereits gespeichert?");
+    }
+
+    @Override
+    public OutputPort decide(PlgmProcessSubject model) {
+        String loggerOutput1 = "Decide: ";
+
+        if( model.getGridMeasure().getId() != null ) {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port YES");
+            return OutputPort.YES;
+        }
+        else {
+            logger.debug(loggerOutput1 + getDescription()+"\" -> Firing Port NO");
+            return OutputPort.NO;
+        }
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureForApproval.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureForApproval.java
new file mode 100644
index 0000000..c5716a1
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureForApproval.java
@@ -0,0 +1,40 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.UserInteractionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.util.GridMeasureStorageHelper;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+
+public class MeasureForApproval extends UserInteractionTask<PlgmProcessSubject> {
+    private static final Logger logger = Logger.getLogger(MeasureForApproval.class); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public MeasureForApproval() {
+        super("State FOR_APPROVAL: Edit and approve GridMeasure");
+    }
+
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException, HttpStatusException {
+        GridMeasureStorageHelper.getHelper().storeMeasureFromViewModel(model);
+    }
+
+    @Override
+    protected void onEnterStep(PlgmProcessSubject model) throws ProcessException {
+        // nothing to do here
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureNew.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureNew.java
new file mode 100644
index 0000000..5b94c08
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureNew.java
@@ -0,0 +1,49 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.UserInteractionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.util.GridMeasureStorageHelper;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+
+public class MeasureNew extends UserInteractionTask<PlgmProcessSubject> {
+    private static final Logger logger = Logger.getLogger(MeasureNew.class); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+
+    public MeasureNew() {
+        super("State NEW: Create GridMeasure");
+    }
+
+    protected void prepareStorage(GridMeasure gm) {
+        if( gm.getStatusId() == null ) {
+            gm.setStatusId(PlgmProcessState.NEW.getStatusValue());
+        }
+    }
+
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException, HttpStatusException {
+        prepareStorage(model.getGridMeasure());
+        GridMeasureStorageHelper.getHelper().storeMeasureFromViewModel(model);
+    }
+
+    @Override
+    protected void onEnterStep(PlgmProcessSubject model) throws ProcessException {
+        // nothing to do here
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceImportData.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceImportData.java
new file mode 100644
index 0000000..8c792a4
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceImportData.java
@@ -0,0 +1,32 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessSubject;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+
+
+public class ServiceImportData extends ServiceTask {
+    private static final Logger logger= Logger.getLogger(ServiceImportData.class.getName());
+    public ServiceImportData() {
+        super("Service task 'Daten aus Leitsystem importieren'");
+    }
+
+    @Override
+    protected void onLeaveStep(ProcessSubject model) throws ProcessException {
+        logger.debug(">>execute: Daten aus Leitsystem importieren");
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureApplied.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureApplied.java
new file mode 100644
index 0000000..fa34e38
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureApplied.java
@@ -0,0 +1,50 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailManager;
+import org.eclipse.openk.core.controller.PgmEmail;
+
+import javax.mail.MessagingException;
+
+
+public class ServiceMeasureApplied extends ServiceTask<PlgmProcessSubject> {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureApplied.class.getName());
+
+    public ServiceMeasureApplied() {
+        super("Service task 'beantragt'");
+    }
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException {
+
+        try {
+            EmailTemplatePaths paths = BackendConfig.getInstance().getEmailTemplatePaths();
+            String template = paths.getAppliedEmailTemplate();
+            EmailManager emailManager = new PgmEmail(model, template, false);
+            emailManager.sendEmail();
+        } catch (MessagingException e) {
+            logger.error("Error in ServiceMeasureApplied onLeaveStep", e);
+            throw new ProcessException("Error in ServiceMeasureApplied onLeaveStep (EmailManager)");
+        }
+
+        logger.debug(">>execute: Send Mail on 'beantragt'");
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureApproved.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureApproved.java
new file mode 100644
index 0000000..4e60a70
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureApproved.java
@@ -0,0 +1,48 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailManager;
+import org.eclipse.openk.core.controller.PgmEmail;
+
+import javax.mail.MessagingException;
+
+
+public class ServiceMeasureApproved extends ServiceTask<PlgmProcessSubject> {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureApproved.class.getName());
+
+    public ServiceMeasureApproved() {
+        super("Service task 'genehmigt'");
+    }
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException {
+
+        try {
+            EmailTemplatePaths paths = BackendConfig.getInstance().getEmailTemplatePaths();
+            String template = paths.getApprovedEmailTemplate();
+            EmailManager emailManager = new PgmEmail(model, template, true);
+            emailManager.sendEmail();
+        } catch (MessagingException e) {
+            logger.error("Error in ServiceMeasureApproved onLeaveStep", e);
+            throw new ProcessException("Error in ServiceMeasureApproved onLeaveStep (EmailManager)");
+        }
+        logger.debug(">>execute: Send Mail on 'genehmigt'");
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureCanceled.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureCanceled.java
new file mode 100644
index 0000000..48f41f6
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureCanceled.java
@@ -0,0 +1,48 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailManager;
+import org.eclipse.openk.core.controller.PgmEmail;
+
+import javax.mail.MessagingException;
+
+
+public class ServiceMeasureCanceled extends ServiceTask<PlgmProcessSubject> {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureApproved.class.getName());
+
+    public ServiceMeasureCanceled() {
+        super("Service task 'storniert'");
+    }
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException {
+
+        try {
+            EmailTemplatePaths paths = BackendConfig.getInstance().getEmailTemplatePaths();
+            String template = paths.getCancelledEmailTemplate();
+            EmailManager emailManager = new PgmEmail(model, template, true);
+            emailManager.sendEmail();
+        } catch (MessagingException e) {
+            logger.error("Error in ServiceMeasureCanceled onLeaveStep", e);
+            throw new ProcessException("Error in ServiceMeasureCanceled onLeaveStep (EmailManager)");
+        }
+        logger.debug(">>execute: Send Mail on 'storniert'");
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureClosed.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureClosed.java
new file mode 100644
index 0000000..84c3dbe
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureClosed.java
@@ -0,0 +1,47 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailManager;
+import org.eclipse.openk.core.controller.PgmEmail;
+
+import javax.mail.MessagingException;
+
+
+public class ServiceMeasureClosed extends ServiceTask<PlgmProcessSubject> {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureClosed.class.getName());
+
+    public ServiceMeasureClosed() {
+        super("Service task 'geschlossen'");
+    }
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException {
+
+        try {
+            EmailManager emailManager = new PgmEmail(model, BackendConfig.getInstance().getEmailTemplatePaths().getClosedEmailTemplate(), false);
+            emailManager.sendEmail();
+        } catch (MessagingException e) {
+            logger.error("Error in ServiceMeasureClosed onLeaveStep", e);
+            throw new ProcessException("Error in ServiceMeasureClosed onLeaveStep (EmailManager)");
+        }
+
+        logger.debug(">>execute: Send Mail on 'closed'");
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureFinished.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureFinished.java
new file mode 100644
index 0000000..a251834
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureFinished.java
@@ -0,0 +1,31 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+
+public class ServiceMeasureFinished extends ServiceTask<PlgmProcessSubject> {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureFinished.class.getName());
+    public ServiceMeasureFinished() {
+        super("Service task 'Beendet'");
+    }
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException {
+        logger.debug(">>execute: Send Mail on 'Beendet'");
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureForApproval.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureForApproval.java
new file mode 100644
index 0000000..a40074d
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureForApproval.java
@@ -0,0 +1,30 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+
+public class ServiceMeasureForApproval extends ServiceTask<PlgmProcessSubject> {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureForApproval.class.getName());
+    public ServiceMeasureForApproval() {
+        super("Service task 'zur Genehmigung'");
+    }
+
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException {
+        logger.debug(">>execute: Send Mail on 'zur Genehmigung'");
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRejected.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRejected.java
new file mode 100644
index 0000000..b90df78
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRejected.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessSubject;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+
+
+public class ServiceMeasureRejected extends ServiceTask {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureRejected.class.getName());
+    public ServiceMeasureRejected() {
+        super("Service task 'zurückgewiesen'");
+    }
+
+    @Override
+    protected void onLeaveStep(ProcessSubject model) throws ProcessException {
+        logger.debug(">>execute: Send Mail on 'zurückgewiesen'");
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureReleased.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureReleased.java
new file mode 100644
index 0000000..df7eb43
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureReleased.java
@@ -0,0 +1,47 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailManager;
+import org.eclipse.openk.core.controller.PgmEmail;
+
+import javax.mail.MessagingException;
+
+
+public class ServiceMeasureReleased extends ServiceTask<PlgmProcessSubject> {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureApplied.class.getName());
+
+    public ServiceMeasureReleased() {
+        super("Service task 'freigegeben'");
+    }
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException {
+
+        try {
+            EmailManager emailManager = new PgmEmail(model, BackendConfig.getInstance().getEmailTemplatePaths().getReleasedEmailTemplate(), false);
+            emailManager.sendEmail();
+        } catch (MessagingException e) {
+            logger.error("Error in ServiceMeasureReleased onLeaveStep", e);
+            throw new ProcessException("Error in ServiceMeasureReleased onLeaveStep (EmailManager)");
+        }
+
+        logger.debug(">>execute: Send Mail on 'freigegeben'");
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRequested.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRequested.java
new file mode 100644
index 0000000..9f1fd69
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRequested.java
@@ -0,0 +1,46 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailManager;
+import org.eclipse.openk.core.controller.PgmEmail;
+
+import javax.mail.MessagingException;
+
+public class ServiceMeasureRequested extends ServiceTask<PlgmProcessSubject> {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureForApproval.class.getName());
+    public ServiceMeasureRequested() {
+        super("Service task 'Angefordert'");
+    }
+
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException {
+
+        try {
+            EmailManager emailManager = new PgmEmail(model, BackendConfig.getInstance().getEmailTemplatePaths().getRequestedEmailTemplate(), false);
+            emailManager.sendEmail();
+        } catch (MessagingException e) {
+            logger.error("Error in ServiceMeasureRequested onLeaveStep", e);
+            throw new ProcessException("Error in ServiceMeasureRequested onLeaveStep (EmailManager)");
+        }
+
+        logger.debug(">>execute: Send Mail on 'Angefordert'");
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureSendMail.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureSendMail.java
new file mode 100644
index 0000000..a7e2ba1
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureSendMail.java
@@ -0,0 +1,49 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.EmailManager;
+import org.eclipse.openk.core.controller.PgmEmail;
+
+import javax.mail.MessagingException;
+
+
+public class ServiceMeasureSendMail extends ServiceTask<PlgmProcessSubject> {
+    private static final Logger logger= Logger.getLogger(ServiceMeasureSendMail.class.getName());
+
+    private String emailTemplatePath;
+
+    public ServiceMeasureSendMail(String emailTemplatePath) {
+        super("Service task 'send mail'");
+        this.emailTemplatePath = emailTemplatePath;
+    }
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException {
+
+        try {
+            EmailManager emailManager = new PgmEmail(model, emailTemplatePath, false);
+            emailManager.sendEmail();
+        } catch (MessagingException e) {
+            logger.error("Error in ServiceMeasureSendMail onLeaveStep", e);
+            throw new ProcessException("Error in ServiceMeasureApplied onLeaveStep (EmailManager)");
+        }
+
+        logger.debug(">>execute: Send Mail on 'beantragt'");
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/StoreStatusServiceTask.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/StoreStatusServiceTask.java
new file mode 100644
index 0000000..ff52524
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/StoreStatusServiceTask.java
@@ -0,0 +1,44 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.common.mapper.GridMeasureMapper;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.util.GridMeasureStorageHelper;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.db.model.TblGridMeasure;
+
+public class StoreStatusServiceTask extends ServiceTask<PlgmProcessSubject> {
+    public static final Logger logger = Logger.getLogger(StoreStatusServiceTask.class.getName());
+    protected final PlgmProcessState stateToSave;
+
+
+    public StoreStatusServiceTask(PlgmProcessState stateToSave) {
+        super("Maßnahme-Status setzen: "+stateToSave);
+        this.stateToSave = stateToSave;
+    }
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException, HttpStatusException {
+        GridMeasureMapper gmMapper = new GridMeasureMapper();
+
+        TblGridMeasure modGm = GridMeasureStorageHelper.getHelper()
+                .setMeasureStatusAndStore(model.getGridMeasure().getId(),
+                        model.getChangeUser(), stateToSave);
+
+        model.setGridMeasure(gmMapper.mapToVModel(modGm));
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/UIStoreMeasureTask.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/UIStoreMeasureTask.java
new file mode 100644
index 0000000..054288f
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/UIStoreMeasureTask.java
@@ -0,0 +1,62 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.UserInteractionTask;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.util.GridMeasureStorageHelper;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+
+public class UIStoreMeasureTask extends UserInteractionTask<PlgmProcessSubject> {
+    private static final Logger logger = Logger.getLogger(UIStoreMeasureTask.class); // NOSONAR
+    // we leave this logger in place, even if it's not called ... (at the moment)
+    private final boolean stayIfStateUnchanged;
+
+    public UIStoreMeasureTask(String description, boolean stayIfStateUnchanged) {
+        super(description);
+        this.stayIfStateUnchanged = stayIfStateUnchanged;
+    }
+
+
+    @Override
+    protected void onLeaveStep(PlgmProcessSubject model) throws ProcessException, HttpStatusException {
+        createGridMeasureStorageHelper().storeMeasureFromViewModel(model);
+    }
+
+    @Override
+    protected void onEnterStep(PlgmProcessSubject model) throws ProcessException {
+        // nothing to do here
+    }
+
+    @Override
+    protected boolean isStayInThisTask(PlgmProcessSubject model){
+        return stayIfStateUnchanged && !detectStateChanged( model );
+    }
+
+    @Override
+    protected void onStayInTask(PlgmProcessSubject model) throws ProcessException, HttpStatusException {
+        createGridMeasureStorageHelper().storeMeasureFromViewModel(model);
+    }
+
+    private boolean detectStateChanged( PlgmProcessSubject model ) {
+        return PlgmProcessState.fromValue(model.getGridMeasure().getStatusId()) != model.getStateInDb();
+    }
+
+    protected GridMeasureStorageHelper createGridMeasureStorageHelper() {
+        return GridMeasureStorageHelper.getHelper();
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/util/GridMeasureStorageHelper.java b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/util/GridMeasureStorageHelper.java
new file mode 100644
index 0000000..b747bc8
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/util/GridMeasureStorageHelper.java
@@ -0,0 +1,457 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks.util;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import org.apache.http.HttpStatus;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.SingleGridmeasure;
+import org.eclipse.openk.api.Steps;
+import org.eclipse.openk.common.Globals;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.common.mapper.GridMeasureMapper;
+import org.eclipse.openk.common.mapper.generic.GenericApiToDbMapper;
+import org.eclipse.openk.common.util.DateUtils;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.db.dao.AutoCloseEntityManager;
+import org.eclipse.openk.db.dao.EntityHelper;
+import org.eclipse.openk.db.dao.TblGridMeasureDao;
+import org.eclipse.openk.db.dao.TblIdCounterDao;
+import org.eclipse.openk.db.dao.TblSingleGridmeasureDao;
+import org.eclipse.openk.db.dao.TblStepsDao;
+import org.eclipse.openk.db.model.TblGridMeasure;
+import org.eclipse.openk.db.model.TblIdCounter;
+import org.eclipse.openk.db.model.TblSingleGridmeasure;
+import org.eclipse.openk.db.model.TblSteps;
+
+import javax.persistence.EntityManager;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class GridMeasureStorageHelper {
+    private static final Logger logger = Logger.getLogger(GridMeasureStorageHelper.class);
+    public static final String CANNOT_UPDATE_AN_ENTITY_THAT_DOES_NOT_EXIST_ID = "Cannot update an entity that does not exist. ID=";
+    public static final String CANNOT_STORE_EMPTY_GRID_MEASURE = "Cannot store empty gridMeasure";
+
+    private static final Object lock = new Object();
+
+    protected GridMeasureStorageHelper(){}
+
+    public static GridMeasureStorageHelper getHelper() {
+        return new GridMeasureStorageHelper();
+    }
+
+    public void storeMeasureFromViewModel(PlgmProcessSubject model) throws ProcessException, HttpStatusException {
+
+        TblGridMeasure changedGM;
+
+        try (AutoCloseEntityManager em = new AutoCloseEntityManager(createEntityManager())) {
+            GridMeasureMapper gmMapper = new GridMeasureMapper();
+            GridMeasure vmGm = model.getGridMeasure();
+            TblGridMeasure tblGm = gmMapper.mapFromVModel(vmGm);
+            List<SingleGridmeasure> listSg = vmGm.getListSingleGridmeasures();
+
+            TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+            gmDao.getEM().getTransaction().begin();
+            changedGM = storeMeasureImplInTx(tblGm, model.getChangeUser(), gmDao, em);
+
+            TblSingleGridmeasureDao sgmDao = createTblSingleGridmeasureDao(em);
+            List<SingleGridmeasure> newSingleGms = new ArrayList<>();
+            if(!listSg.isEmpty()) {
+
+                processExistingSingleGridMeasureList(model, changedGM.getId(), em, listSg, sgmDao, newSingleGms);
+            }
+            else{
+                //Anlegen einer Leermassnahme
+                TblSingleGridmeasure tblSg = new TblSingleGridmeasure();
+                fillEmptyTblSingleGridmeasure(changedGM.getId(), tblGm.getModUser(), tblSg);
+                TblSingleGridmeasure tblSgDB = createSinglemeasureInDb(tblSg, sgmDao);
+                newSingleGms.add(new GenericApiToDbMapper().mapToViewModel(SingleGridmeasure.class, tblSgDB));
+            }
+
+            GridMeasure vmGmDB = gmMapper.mapToVModel(changedGM);
+            vmGmDB.setListSingleGridmeasures(newSingleGms);
+            model.setGridMeasure(vmGmDB);
+
+            gmDao.getEM().getTransaction().commit();
+        }
+    }
+
+    private void processExistingSingleGridMeasureList(PlgmProcessSubject model,
+                                                      Integer changedGmId,
+                                                      AutoCloseEntityManager em,
+                                                      List<SingleGridmeasure> listSg,
+                                                      TblSingleGridmeasureDao sgmDao,
+                                                      List<SingleGridmeasure> newSingleGms) throws HttpStatusException {
+        List<Steps> newSteps = new ArrayList<>();
+        TblStepsDao stpDao = createTblStepsDao(em);
+
+        //Insert, Update or Delete of SingleGridmeasures
+        GridMeasureMapper gridMeasureMapper = new GridMeasureMapper();
+        for (SingleGridmeasure sg : listSg) {
+            TblSingleGridmeasure mSg = new GenericApiToDbMapper().mapFromViewModel(TblSingleGridmeasure.class, sg);
+            gridMeasureMapper.adjustPowerSystemResourceMapFromViewModel(sg, mSg);
+            if (sg.isDelete() && listSg.size() > 1) {
+                deleteSingleGridmeasure(mSg, sg, sgmDao, stpDao);
+            }
+            else{
+                mSg.setFkTblGridmeasure(changedGmId);
+                TblSingleGridmeasure tblSgDB = storeSingleGm(mSg, model.getChangeUser(), sgmDao);
+                newSingleGms.add(new GenericApiToDbMapper().mapToViewModel(SingleGridmeasure.class, tblSgDB));
+
+                List<Steps> listStp = sg.getListSteps();
+
+                if (listStp != null) {
+                    processStepList(model, newSteps, stpDao, tblSgDB, listStp);
+                    sg.setListSteps(newSteps);
+                }
+            }
+        }
+    }
+
+    private void processStepList(PlgmProcessSubject model,
+                                 List<Steps> newSteps,
+                                 TblStepsDao stpDao,
+                                 TblSingleGridmeasure tblSgDB,
+                                 List<Steps> listStp) throws HttpStatusException {
+        for (Steps stp: listStp) {
+            TblSteps mStp = new GenericApiToDbMapper().mapFromViewModel(TblSteps.class, stp);
+            if (stp.isDelete() && listStp.size() > 1) {
+                deleteSteps(mStp, stpDao);
+            }
+            else {
+                mStp.setFkTblSingleGridmeasure(tblSgDB.getId());
+                TblSteps tblStpDB = storeSteps(mStp, model.getChangeUser(), stpDao);
+                newSteps.add(new GenericApiToDbMapper().mapToViewModel(Steps.class, tblStpDB));
+            }
+        }
+    }
+
+    private void fillEmptyTblSingleGridmeasure(Integer changedGmId, String modUser, TblSingleGridmeasure tblSg)  {
+        tblSg.setFkTblGridmeasure(changedGmId);
+        tblSg.setSortorder(1);
+        tblSg.setTitle("Leermassnahme");
+        tblSg.setCreateDate(Date.from(Instant.now()));
+        tblSg.setCreateUser(modUser);
+        tblSg.setModDate(Date.from(Instant.now()));
+        tblSg.setModUser(modUser);
+    }
+
+    public TblGridMeasure setMeasureStatusAndStore(Integer measureId, String changeUser, PlgmProcessState newStatus) throws ProcessException {
+        try (AutoCloseEntityManager em = new AutoCloseEntityManager(createEntityManager())) {
+            TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+
+            TblGridMeasure tblGM = gmDao.findByIdInTx(TblGridMeasure.class, measureId);
+            tblGM.setFkRefGmStatus(newStatus.getStatusValue());
+
+            return storeMeasureImpl(tblGM, changeUser, gmDao, em);
+        }
+    }
+
+    protected TblGridMeasureDao createTblGridMeasureDao(EntityManager em) {
+        return new TblGridMeasureDao(em);
+    }
+
+    protected TblIdCounterDao createTblIdCounterDao(EntityManager em) {
+        return new TblIdCounterDao(em);
+    }
+
+    protected TblSingleGridmeasureDao createTblSingleGridmeasureDao (EntityManager em) {
+        return new TblSingleGridmeasureDao(em);
+    }
+
+    protected TblStepsDao createTblStepsDao (EntityManager em) {
+        return new TblStepsDao(em);
+    }
+
+
+    protected EntityManager createEntityManager() {
+        // this method has been extracted for test purposes
+        return EntityHelper.getEMF().createEntityManager();
+    }
+
+
+    private TblGridMeasure storeMeasureImpl(TblGridMeasure tblGm, String changeUser
+            , TblGridMeasureDao gmDao, EntityManager em) throws ProcessException {
+
+        gmDao.getEM().getTransaction().begin();
+        TblGridMeasure tblGmDB = storeMeasureImplInTx(tblGm, changeUser, gmDao, em);
+        gmDao.getEM().getTransaction().commit();
+        return tblGmDB;
+    }
+
+    private TblGridMeasure storeMeasureImplInTx(TblGridMeasure tblGm, String changeUser
+            , TblGridMeasureDao gmDao, EntityManager em) throws ProcessException {
+
+        tblGm.setModUser(changeUser);
+        tblGm.setModDate(Date.from(Instant.now()));
+        if( tblGm.getCreateDate() == null ) {
+            tblGm.setCreateDate(tblGm.getModDate());
+        }
+        TblGridMeasure tblGmDB = null;
+        if( tblGm.getId() == null ) {
+            tblGmDB = createMeasureInDb(tblGm, gmDao, em);
+        }
+        else {
+            if( gmDao.findByIdInTx(TblGridMeasure.class, tblGm.getId()) != null) {
+                // entity should exist before it is updated
+                tblGmDB = updateMeasureInDb(tblGm, gmDao);
+            }
+            else {
+                String errText = CANNOT_UPDATE_AN_ENTITY_THAT_DOES_NOT_EXIST_ID +tblGm.getId();
+                logger.error(errText);
+                throw new ProcessException( errText, new HttpStatusException(HttpStatus.SC_NOT_FOUND, errText) );
+            }
+        }
+
+        return tblGmDB;
+    }
+
+
+
+    private TblGridMeasure createMeasureInDb(TblGridMeasure tblGm, TblGridMeasureDao gmDao, EntityManager em) throws ProcessException {
+        tblGm.setIdDescriptive(getNextDescriptiveId(em, tblGm));
+        tblGm.setCreateDate(Date.from(Instant.now()));
+        tblGm.setCreateUser(tblGm.getModUser());
+        tblGm.setCreateUserDepartment(tblGm.getModUserDepartment());
+
+        return updateMeasureInDb(tblGm, gmDao);
+    }
+
+    private TblGridMeasure updateMeasureInDb(TblGridMeasure tblGm, TblGridMeasureDao gmDao) throws ProcessException {
+        try {
+            return gmDao.storeInTx(tblGm);
+
+        } catch (Exception e) {
+            String errorText = tblGm != null ?
+                    "Error storing gridMeasureEntity:" + JsonGeneratorBase.getGson().toJson(tblGm) :
+                    CANNOT_STORE_EMPTY_GRID_MEASURE;
+
+            logger.error(errorText, e);
+            throw new ProcessException("Error in process:",
+                    new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR));
+        }
+    }
+
+    private TblSingleGridmeasure storeSingleGm(TblSingleGridmeasure newTblSg, String changeUser, TblSingleGridmeasureDao sgmDao) throws HttpStatusException{
+        newTblSg.setModUser(changeUser);
+        newTblSg.setModDate(Date.from(Instant.now()));
+
+        TblSingleGridmeasure ret = null;
+        if( newTblSg.getId() == null ) {
+            newTblSg.setCreateUser(changeUser);
+            newTblSg.setCreateDate(Date.from(Instant.now()));
+
+            ret = createSinglemeasureInDb(newTblSg, sgmDao);
+        }
+        else {
+            TblSingleGridmeasure aktSg = sgmDao.findByIdInTx(TblSingleGridmeasure.class, newTblSg.getId());
+            if( aktSg != null) {
+                // entity should exist before it is updated
+                newTblSg.setCreateUser(aktSg.getCreateUser());
+                newTblSg.setCreateDate(aktSg.getCreateDate());
+
+                ret = updateSingleGridmeasureInDb(newTblSg, sgmDao);
+            }
+            else {
+                String errText = CANNOT_UPDATE_AN_ENTITY_THAT_DOES_NOT_EXIST_ID+newTblSg.getId();
+                logger.error(errText);
+                throw new HttpStatusException(HttpStatus.SC_NOT_FOUND, errText) ;
+            }
+        }
+        return ret;
+    }
+
+    private TblSingleGridmeasure createSinglemeasureInDb(TblSingleGridmeasure tblSgm, TblSingleGridmeasureDao sgmDao) throws HttpStatusException{
+        return updateSingleGridmeasureInDb(tblSgm, sgmDao);
+    }
+
+    private TblSingleGridmeasure updateSingleGridmeasureInDb(TblSingleGridmeasure tblSgm, TblSingleGridmeasureDao sgmDao) throws HttpStatusException{
+        try {
+            return sgmDao.storeInTx(tblSgm);
+
+        } catch (Exception e) {
+            String errorText = tblSgm != null ?
+                    "Error storing singleGridmeasureEntity:" + JsonGeneratorBase.getGson().toJson(tblSgm) :
+                    CANNOT_STORE_EMPTY_GRID_MEASURE;
+
+            logger.error(errorText, e);
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    private void deleteSingleGridmeasure(TblSingleGridmeasure tblSgm, SingleGridmeasure sg, TblSingleGridmeasureDao sgmDao, TblStepsDao stpDao)throws HttpStatusException{
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        TblSingleGridmeasure tblSgmDB = null;
+
+        try {
+
+            //delete steps first
+            List<Steps> listSteps = sg.getListSteps();
+            if (listSteps != null && !listSteps.isEmpty()) {
+                for (Steps stp : listSteps) {
+                    TblSteps mStp = mapper.mapFromViewModel(TblSteps.class, stp);
+                    deleteSteps(mStp, stpDao);
+                }
+            }
+
+            //check entity is not new
+            if(tblSgm.getId() != null){
+                tblSgmDB = sgmDao.findByIdInTx(TblSingleGridmeasure.class, tblSgm.getId());
+            }
+            //check can be found in DB
+            if(tblSgmDB != null) {
+                sgmDao.removeInTx(tblSgmDB, tblSgmDB.getId());
+            }
+
+        } catch (Exception e) {
+            String errorText = "Error deleting singleGridmeasureEntity:" + JsonGeneratorBase.getGson().toJson(tblSgm);
+            logger.error(errorText, e);
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    private TblSteps storeSteps(TblSteps newTblStp, String changeUser, TblStepsDao stpDao) throws HttpStatusException{
+        newTblStp.setModUser(changeUser);
+        newTblStp.setModDate(Date.from(Instant.now()));
+
+        TblSteps ret = null;
+        if( newTblStp.getId() == null ) {
+            newTblStp.setCreateUser(changeUser);
+            newTblStp.setCreateDate(Date.from(Instant.now()));
+
+            ret = createStepsInDb(newTblStp, stpDao);
+        }
+        else {
+            TblSteps aktSg = stpDao.findByIdInTx(TblSteps.class, newTblStp.getId());
+            if( aktSg != null) {
+                // entity should exist before it is updated
+                newTblStp.setCreateUser(aktSg.getCreateUser());
+                newTblStp.setCreateDate(aktSg.getCreateDate());
+
+                ret = updateStepsInDb(newTblStp, stpDao);
+            }
+            else {
+                String errText = CANNOT_UPDATE_AN_ENTITY_THAT_DOES_NOT_EXIST_ID+newTblStp.getId();
+                logger.error(errText);
+                throw new HttpStatusException(HttpStatus.SC_NOT_FOUND, errText) ;
+            }
+        }
+        return ret;
+    }
+
+    private TblSteps createStepsInDb(TblSteps tblStp, TblStepsDao stpDao) throws HttpStatusException{
+        return updateStepsInDb(tblStp, stpDao);
+    }
+
+    private TblSteps updateStepsInDb(TblSteps tblStp, TblStepsDao stpDao) throws HttpStatusException{
+        try {
+            return stpDao.storeInTx(tblStp);
+
+        } catch (Exception e) {
+            String errorText = tblStp != null ?
+                    "Error storing stepsEntity:" + JsonGeneratorBase.getGson().toJson(tblStp) :
+                    CANNOT_STORE_EMPTY_GRID_MEASURE;
+
+            logger.error(errorText, e);
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    private void deleteSteps(TblSteps tblStp, TblStepsDao stpDao)throws HttpStatusException{
+        TblSteps tblStpDB = null;
+
+        try {
+            //check entity is not new
+            if(tblStp.getId() != null){
+                tblStpDB = stpDao.findByIdInTx(TblSteps.class, tblStp.getId());
+            }
+            //check can be found in DB
+            if(tblStpDB != null) {
+                stpDao.removeInTx(tblStpDB, tblStpDB.getId());
+            }
+
+        } catch (Exception e) {
+            String errorText = "Error deleting stepsEntity:" + JsonGeneratorBase.getGson().toJson(tblStp);
+            logger.error(errorText, e);
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    // Returns descriptive ID in in form of 180730-0001
+    private String getNextDescriptiveId(EntityManager em, TblGridMeasure tblGm) throws ProcessException {
+        synchronized (lock) {
+            try {
+                TblIdCounterDao idCounterDao = createTblIdCounterDao(em);
+                TblIdCounter idCounter = idCounterDao.getIdCounterForCounterType(Globals.COUNTERTYPE_GRIDMEASURE_ID);
+                if (idCounter == null){
+                    idCounter = createNewTblCounter(tblGm);
+                } else {
+                    updateTblCounter(idCounter, tblGm);
+                }
+
+                idCounterDao.storeInTx(idCounter);
+                return createDescriptiveId(idCounter);
+            } catch (Exception e) {
+                logger.error("Error in getNextGridmeasureId with counterType:" + Globals.COUNTERTYPE_GRIDMEASURE_ID , e);
+                throw new ProcessException("Error in process:",
+                    new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR));
+            }
+        }
+    }
+
+    private void updateTblCounter(TblIdCounter idCounter, TblGridMeasure tblGm) {
+        Integer counter = idCounter.getCounter();
+        Date lastModifiedDate = DateUtils.parseStringToDate(idCounter.getModifiedDate());
+        assert lastModifiedDate != null;
+        LocalDate localDateLastModified = DateUtils.asLocalDate(lastModifiedDate);
+        LocalDate localDateNow = LocalDate.now();
+
+        if (localDateNow.isEqual(localDateLastModified)) {
+            counter++;
+            idCounter.setCounter(counter);
+        } else {
+            idCounter.setCounter(1);
+            idCounter.setModifiedDate(DateUtils.formatDateToString(new Date()));
+        }
+        idCounter.setModDate(new Date());
+        idCounter.setModUser(tblGm.getModUser());
+    }
+
+    private TblIdCounter createNewTblCounter(TblGridMeasure tblGm) {
+        TblIdCounter idCounter;
+        idCounter = new TblIdCounter();
+        idCounter.setCounter(1);
+        idCounter.setCounterType(Globals.COUNTERTYPE_GRIDMEASURE_ID);
+        Date now = new Date();
+        idCounter.setModifiedDate(DateUtils.formatDateToString(now));
+        idCounter.setCreateDate(now);
+        idCounter.setCreateUser(tblGm.getModUser());
+        return idCounter;
+    }
+
+    private static String createDescriptiveId(TblIdCounter idCounter) {
+        DateFormat dateFormat = new SimpleDateFormat("yyMMdd");
+        String counterAsString = String.format ("%04d", idCounter.getCounter());
+        Date date = DateUtils.parseStringToDate(idCounter.getModifiedDate());
+        return dateFormat.format(date)+ "-" + counterAsString;
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/communication/RestServiceWrapper.java b/src/main/java/org/eclipse/openk/core/communication/RestServiceWrapper.java
new file mode 100644
index 0000000..c9a8de6
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/communication/RestServiceWrapper.java
@@ -0,0 +1,147 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.communication;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.http.util.EntityUtils;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.auth2.util.JwtHelper;
+import org.eclipse.openk.common.Globals;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.core.exceptions.PgmNestedException;
+import org.eclipse.openk.core.viewmodel.ErrorReturn;
+
+public class RestServiceWrapper {
+    private static final Logger LOGGER = Logger.getLogger(RestServiceWrapper.class.getName());
+    private String baseURL;
+    private boolean useHttps;
+
+    public RestServiceWrapper(String baseURL, boolean https) {
+        this.baseURL = baseURL;
+        this.useHttps = https;
+    }
+
+    public String performGetRequest(String restFunctionWithParams, String token) throws HttpStatusException {
+        LOGGER.debug("BaseUrl: " + baseURL);
+        String completeRequest = baseURL + "/" + restFunctionWithParams;
+        LOGGER.debug("CompleteUrl: " + completeRequest);
+        // create HTTP Client
+        CloseableHttpClient httpClient = createHttpsClient();
+
+        // create new Request with given URL
+        HttpGet getRequest = new HttpGet(completeRequest);
+        getRequest.addHeader("accept", Globals.HEADER_JSON_UTF8);
+
+        if (token != null && !token.isEmpty())
+        {
+            String accesstoken = JwtHelper.formatToken(token);
+            getRequest.addHeader(Globals.KEYCLOAK_AUTH_TAG, "Bearer " + accesstoken);
+        } else {
+            throw new HttpStatusException(HttpStatus.SC_UNAUTHORIZED);
+        }
+
+        HttpResponse response;
+        // Execute request an catch response
+        try {
+            response = httpClient.execute(getRequest);
+
+        } catch (IOException e) {
+            String errtext = "Communication to <" + completeRequest + "> failed!";
+            LOGGER.warn(errtext, e);
+            throw new HttpStatusException(HttpStatus.SC_SERVICE_UNAVAILABLE);
+        }
+
+        return createJson(response);
+    }
+
+	public String performPostRequest(String restFunctionWithParams, String token, String data) throws HttpStatusException {
+		String completeRequest = baseURL + "/" + restFunctionWithParams;
+
+		// create HTTP Client
+		CloseableHttpClient httpClient = createHttpsClient();
+
+		// create new Post Request with given URL
+		HttpPost postRequest = new HttpPost(completeRequest);
+
+		// add additional header to getRequest which accepts application/JSON data
+		postRequest.addHeader("accept", Globals.HEADER_JSON_UTF8);
+		postRequest.addHeader("Content-Type", Globals.HEADER_JSON_UTF8);
+
+		if (token != null && !token.isEmpty()) {
+			String accesstoken = JwtHelper.formatToken(token);
+			postRequest.addHeader(Globals.KEYCLOAK_AUTH_TAG, "Bearer " + accesstoken);
+		} else {
+			throw new HttpStatusException(HttpStatus.SC_UNAUTHORIZED);
+		}
+
+		postRequest.setEntity(new StringEntity(data, StandardCharsets.UTF_8));
+
+		HttpResponse response;
+		// Execute request an catch response
+		try {
+			response = httpClient.execute(postRequest);
+		} catch (IOException e) {
+			String errtext = "Communication to <" + completeRequest + "> failed!";
+			LOGGER.warn(errtext, e);
+			throw new HttpStatusException(HttpStatus.SC_SERVICE_UNAVAILABLE);
+		}
+		return createJson(response);
+	}
+
+    private CloseableHttpClient createHttpsClient() throws HttpStatusException {
+        if (useHttps) {
+            try {
+                SSLContextBuilder builder = new SSLContextBuilder();
+                builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
+                SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(builder.build());
+
+                return HttpClients.custom().setSSLSocketFactory(sslsf).build();
+            } catch (Exception e) {
+                LOGGER.error(e + "SSLContextBuilderException");
+                throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+            }
+        } else {
+            return HttpClientBuilder.create().build();
+        }
+    }
+    
+	private String createJson(HttpResponse response) throws HttpStatusException {
+		String retJson;
+		try {
+			retJson = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
+		} catch (IOException e) {
+			LOGGER.error(e);
+			throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+		}
+
+		if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+			ErrorReturn errorReturn = new ErrorReturn();
+			errorReturn.setErrorCode(response.getStatusLine().getStatusCode());
+			errorReturn.setErrorText(response.getStatusLine().getReasonPhrase());
+			throw new PgmNestedException(errorReturn);
+		}
+		return retJson;
+	}
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/BackendConfig.java b/src/main/java/org/eclipse/openk/core/controller/BackendConfig.java
new file mode 100644
index 0000000..3a44fea
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/BackendConfig.java
@@ -0,0 +1,139 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import edu.emory.mathcs.backport.java.util.Arrays;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration.EmailConfiguration;
+import org.eclipse.openk.api.BackendSettings;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.eclipse.openk.common.JsonGeneratorBase.getGson;
+
+
+public class BackendConfig {
+    private static final Logger logger = Logger.getLogger(BackendConfig.class);
+    private String portalBaseUrl;
+    private String portalFeLoginUrl;
+    private List<String> whiteListDocumenttypes = new ArrayList<>();
+    private EmailConfiguration emailConfiguration;
+
+    private EmailTemplatePaths emailTemplatePaths;
+    private BackendSettings backendSettings;
+
+    private static Object lock = new Object();
+
+    private static BackendConfig instance;
+
+    private BackendConfig() {}
+
+    public static void configure(PlannedGridMeasuresConfiguration configurationFromYaml, BackendSettings backendSettings) {
+        synchronized (lock) {
+            if (instance == null) {
+                instance = new BackendConfig();
+                instance.init();
+                instance.portalBaseUrl = configurationFromYaml.getPortalBaseURL();
+                instance.portalFeLoginUrl = configurationFromYaml.getPortalFeLoginURL();
+                instance.backendSettings = backendSettings;
+                return;
+            }
+            logger.warn("BackendConfig initialized more than once!");
+        }
+    }
+
+    public static BackendConfig getInstance() {
+        synchronized (lock ) {
+            if( instance == null ) {
+                String errormsg = "BackendConfig accessed without being initialized!";
+                logger.error(errormsg);
+                throw new RuntimeException(errormsg); // NOSONAR
+            }
+            return instance;
+        }
+    }
+
+    private void init(){
+        initEmailTemplatePaths();
+    }
+
+
+    private void initEmailTemplatePaths(){
+        ResourceLoaderBase loaderBase = new ResourceLoaderBase();
+        String fromPath = loaderBase.loadFromPath("emailConfiguration/mailTemplatesPaths.json");
+        EmailTemplatePaths templatePaths = getGson().fromJson(fromPath, EmailTemplatePaths.class);
+        setEmailTemplatePaths(templatePaths);
+    }
+
+    public String getPortalBaseUrl() {
+        return portalBaseUrl;
+    }
+
+    public void setPortalBaseUrl(String portabBaseUrl) {
+        this.portalBaseUrl = portabBaseUrl;
+    }
+
+    public List<String> getWhiteListDocumenttypes() {
+        return whiteListDocumenttypes;
+    }
+
+    public void setWhiteListDocumenttypes(List<String> whiteListDocumenttypes) {
+        this.whiteListDocumenttypes = whiteListDocumenttypes;
+    }
+
+    public void processAndSetWhiteListDocumenttypes(String commaSeperatedList){
+        List<String> whiteList = new ArrayList<>();
+        if (commaSeperatedList != null) {
+            String[] split = commaSeperatedList.split(",");
+            whiteList = new ArrayList<>(Arrays.asList(split));
+        }
+
+        setWhiteListDocumenttypes(whiteList);
+    }
+
+    public EmailConfiguration getEmailConfiguration() {
+        return emailConfiguration;
+    }
+
+    public void setEmailConfiguration(EmailConfiguration emailConfiguration) {
+        this.emailConfiguration = emailConfiguration;
+    }
+
+    public EmailTemplatePaths getEmailTemplatePaths() {
+        return emailTemplatePaths;
+    }
+
+    public void setEmailTemplatePaths(EmailTemplatePaths emailTemplatePaths) {
+        this.emailTemplatePaths = emailTemplatePaths;
+    }
+
+    public BackendSettings getBackendSettings() {
+        return backendSettings;
+    }
+
+    public String getPortalFeLoginUrl() {
+        return portalFeLoginUrl;
+    }
+
+    public void setPortalFeLoginUrl(String portalFeLoginUrl) {
+        this.portalFeLoginUrl = portalFeLoginUrl;
+    }
+
+    public static void resetBackendConfigUnitTests(){
+        instance = null;
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/BaseWebService.java b/src/main/java/org/eclipse/openk/core/controller/BaseWebService.java
new file mode 100644
index 0000000..cda16a0
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/BaseWebService.java
@@ -0,0 +1,103 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.controller;
+
+import java.io.IOException;
+import java.util.*;
+import javax.ws.rs.core.Response;
+import org.apache.log4j.Logger;
+import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public abstract class BaseWebService {
+    public enum SecureType {NONE, NORMAL, HIGH}
+    private final Map<String, Long> currentTimeMeasures = new HashMap<>();
+
+    @FunctionalInterface
+    public interface ModifyingInvokable<T> {
+        T invoke( String changeUser) throws  Exception; // NOSONAR
+    }
+    private final Logger logger;
+
+    protected BaseWebService(Logger logger) {
+        this.logger = logger;
+    }
+
+    protected abstract void assertAndRefreshToken(String token, SecureType secureType) throws HttpStatusException;
+    protected abstract String getUserFromToken(String token) throws HttpStatusException;
+
+    protected Response invokeRunnable(String token, SecureType secureType, ModifyingInvokable invokable) {
+        try (AutoCloseable ignored = perform(invokable.getClass().getName() + ".Invoke()")) { // NOSONAR
+            String changeUserName = "";
+            if (secureType != SecureType.NONE) {
+                assertAndRefreshToken(token, secureType);
+                changeUserName = getUserFromToken(token);
+            }
+            Object o = invokable.invoke(changeUserName);
+            return Response.ok(JsonGeneratorBase.getGson().toJson(o)).build();
+        } catch( HttpStatusException hse ) {
+            logger.error( "Caught internal exception:", hse);
+            return Response.status(hse.getHttpStatus()).entity(JsonGeneratorBase.getGson().toJson(hse.getPayload())).build();
+        } catch (Exception e) {
+            logger.error("Caught unexpected Exception:", e);
+            return Response.status(HttpStatus.INTERNAL_SERVER_ERROR_500).build();
+        }
+    }
+    protected String getVersionString() {
+        try {
+            // determine static VersionInfo
+            final Properties properties = new Properties();
+
+            properties.load(BaseWebService.class.getClassLoader().getResourceAsStream("project.properties"));
+
+            String beversion = properties.getProperty("backend.version");
+            if( beversion.contains("$")) {
+                beversion = "LOCAL-DEV";
+            }
+            return beversion;
+        } catch (IOException e) {
+            logger.error("Exception reading the properties file", e);
+            throw new RuntimeException("Exception during start up"); // NOSONAR
+        }
+    }
+
+    private void startProcessing(String methodName) {
+        Long lStartingTime = System.currentTimeMillis();
+        String lookupName = buildLookupId(methodName);
+        currentTimeMeasures.put(lookupName, lStartingTime);
+
+        logger.info(this.getClass().getName() + "." + lookupName + ": Start processing...");
+    }
+
+    protected AutoCloseable perform(final String methodName) {
+        startProcessing(methodName);
+        return () -> endProcessing(methodName);
+    }
+
+    private String buildLookupId(String func) {
+        return func + "@@" + Thread.currentThread().getId();
+    }
+
+    private void endProcessing(String methodName) {
+        String lookupName = buildLookupId(methodName);
+        if (currentTimeMeasures.containsKey(lookupName)) {
+            Long lStartingTime = currentTimeMeasures.get(lookupName);
+            currentTimeMeasures.remove(lookupName);
+            logger.info(
+                    this.getClass().getName() + "." + lookupName + ": Finished processing in " +
+                            (System.currentTimeMillis() - lStartingTime) + " ms");
+        }
+
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/EmailManager.java b/src/main/java/org/eclipse/openk/core/controller/EmailManager.java
new file mode 100644
index 0000000..58e4f0c
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/EmailManager.java
@@ -0,0 +1,114 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+
+package org.eclipse.openk.core.controller;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration.EmailConfiguration;
+import org.eclipse.openk.api.mail.Email;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+
+import javax.mail.MessagingException;
+
+public abstract class EmailManager {
+
+  protected static final Logger LOGGER = Logger.getLogger(EmailManager.class.getName());
+
+  protected Email email;
+  private String sender;
+
+  protected String templatePath;
+  protected boolean loadRecipientsFromGm;
+
+  private String recipientsTo;
+  private String recipientsCC;
+  protected String subject;
+  protected String emailBody;
+
+  protected PlgmProcessSubject processSubject;
+  private final EmailConfiguration emailConfiguration;
+
+  public EmailManager(PlgmProcessSubject model, String templatePath, boolean loadRecipientsFromGm) throws MessagingException {
+    this.templatePath = templatePath;
+    this.loadRecipientsFromGm = loadRecipientsFromGm;
+    emailConfiguration = BackendConfig.getInstance().getEmailConfiguration();
+    this.sender = BackendConfig.getInstance().getEmailConfiguration().getSender();
+    this.processSubject = model;
+    email = new Email(emailConfiguration.getSmtpHost(), emailConfiguration.getPort());
+    email.setFrom(sender);
+  }
+
+  protected void init() throws MessagingException {
+    this.loadEmailTemplate();
+    this.setRecipients();
+    this.prepareEmailContent();
+  }
+
+  private void loadEmailTemplate() {
+    LOGGER.debug("start loading EmailTemplate");
+    ResourceLoaderBase loaderBase = new ResourceLoaderBase();
+    String templateString = loaderBase.loadFromPath(templatePath);
+    String[] templateSplit = templateString.split("Body:");
+    String emailHead = templateSplit[0];
+    this.emailBody = templateSplit[1];
+    String[] emailHeadSplit = emailHead.split("Subject:");
+    String recipients = emailHeadSplit[0];
+    String[] recipientsSplit = recipients.split("CC:");
+    recipientsTo = recipientsSplit[0].trim().replace("To:", "");
+    recipientsCC = recipientsSplit[1].trim();
+    this.subject = emailHeadSplit[1].trim();
+    LOGGER.debug("finsished loading EmailTemplate");
+  }
+
+  protected abstract void prepareEmailContent();
+
+  private void setRecipients() throws MessagingException {
+    String recipientsFromGm;
+
+    recipientsFromGm = this.processSubject.getGridMeasure().getEmailAddresses();
+
+    if(this.loadRecipientsFromGm && recipientsFromGm != null) {
+        recipientsFromGm = "," + recipientsFromGm;
+        email.addRecipient(recipientsTo + recipientsFromGm);
+    }
+    else{
+      email.addRecipient(recipientsTo);
+    }
+    email.addCC(recipientsCC);
+  }
+
+  private void prepareMailToSend() throws MessagingException {
+    email.addText(emailBody);
+    email.setSubject(subject);
+    email.setContent();
+  }
+
+  public boolean sendEmail() throws MessagingException {
+
+    try {
+      prepareMailToSend();
+      boolean ret = email.send();
+      if (ret) {
+        LOGGER.info("Email with subject: " + email.getMessage().getSubject() + " has been sent successfully");
+      } else {
+        LOGGER.error("Some error occured while sending email with subject: " + email.getMessage().getSubject() + " . Email wasn't sent.");
+        throw new MessagingException();
+      }
+      return true;
+    } catch (MessagingException e) {
+      LOGGER.error("Error occured in sendEmail", e);
+      throw e;
+    }
+  }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/GridConfigButtonManipulator.java b/src/main/java/org/eclipse/openk/core/controller/GridConfigButtonManipulator.java
new file mode 100644
index 0000000..479e46f
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/GridConfigButtonManipulator.java
@@ -0,0 +1,87 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.BackendSettings;
+import org.eclipse.openk.api.RoleAccessDefinitionApi;
+import org.eclipse.openk.common.util.SmallReflectionHelper;
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class GridConfigButtonManipulator {
+    private static final Logger logger = Logger.getLogger(GridConfigButtonManipulator.class.getName());
+    private final BackendSettings.BpmnGridConfig gridConfig;
+    public GridConfigButtonManipulator(BackendSettings.BpmnGridConfig gridConfig) {
+        this.gridConfig  = gridConfig;
+    }
+
+    public void manipulateButtons(RoleAccessDefinitionApi roleAccess) {
+        for(RoleAccessDefinitionApi.Control control: roleAccess.getControls()) {
+            List<String> newList = new LinkedList<>();
+
+            for( String buttonTag: control.getActiveButtons()) {
+                if( evaluationNeeded(buttonTag)) {
+                    String newButtonTag = evaluateButtonTag(buttonTag);
+                    if(!newButtonTag.isEmpty()) {
+                        newList.add(newButtonTag);
+                    }
+                }
+                else {
+                    newList.add(buttonTag);
+                }
+            }
+            String[] newArray = new String[newList.size()];
+            control.setActiveButtons(newList.toArray(newArray));
+        }
+    }
+
+    private boolean evaluationNeeded( String buttonTag ) {
+        return buttonTag.startsWith("[");
+    }
+
+    private String evaluateButtonTag( String buttonTag ) {
+        Pattern regexPattern = Pattern.compile("\\[(.*?)\\]");
+        Set<String> allExpressions = new HashSet<>();
+        Matcher matcher = regexPattern.matcher(buttonTag);
+        boolean result = true;
+        while( matcher.find()) {
+            String expr = matcher.group();
+            allExpressions.add(expr);
+            result &= evalExpr(expr.replace("[", "").replace("]", ""));
+        }
+        if( result ) {
+            String strResult = buttonTag;
+            for( String s : allExpressions ) {
+                strResult = strResult.replace( s, "" );
+            }
+            return strResult;
+        }
+        return "";
+    }
+
+    private boolean evalExpr( String expr ) {
+        String[] splitty = expr.split(":");
+        try {
+            String result = SmallReflectionHelper.checkBoolField(this.gridConfig, splitty[0]) ? "TRUE" : "FALSE";
+            return result.equalsIgnoreCase(splitty[1]);
+        } catch (Exception e) {
+            logger.warn("Error during expression evaluation", e);
+        }
+        return true;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java b/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
new file mode 100644
index 0000000..4ed2e0a
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
@@ -0,0 +1,706 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.log4j.Logger;
+import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.openk.api.*;
+import org.eclipse.openk.common.mapper.GridMeasureMapper;
+import org.eclipse.openk.common.mapper.generic.GenericApiToDbMapper;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmGrid;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.db.dao.*;
+import org.eclipse.openk.db.model.*;
+
+import javax.persistence.EntityManager;
+import java.time.Instant;
+import java.util.*;
+
+public class GridMeasureBackendController {
+    protected static final Logger logger = Logger.getLogger(GridMeasureBackendController.class);
+    private static PlgmGrid processGrid = new PlgmGrid();
+
+    public VersionInfo getVersionInfo(String version ) {
+        return getVersionInfoImpl(new RefVersionDao(), version);
+    }
+
+    public GridMeasure storeGridMeasure( String token, String changeuser, GridMeasure newMeasure ) throws HttpStatusException {
+        try {
+            ProcessState stateInDb = getDbProcessState( newMeasure.getId() );
+            PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(newMeasure, changeuser);
+
+            assertIsUserAllowedToStore(token, newMeasure, changeuser);
+
+            subject.setStateInDb( stateInDb );
+            subject.setJwt(token);
+
+            processGrid.recover( subject ).start(() -> stateInDb);
+
+            return subject.getGridMeasure();
+
+        } catch (HttpStatusException hse) {
+            logger.error("Failure in storeGridMeasure, Dataset locked or user is not authorized to store", hse);
+            throw hse;
+        }
+        catch (ProcessException e) {
+            if( e.getCause() instanceof HttpStatusException ) {
+                throw (HttpStatusException)e.getCause();
+            }
+            logger.error("Error in process grid", e);
+            throw new HttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR_500);
+        }
+    }
+
+    public List<GridMeasure> getGridMeasures(FilterObject filterObject)  {
+
+
+        List<GridMeasure> vmList = new java.util.ArrayList<>();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+            GridMeasureMapper gmMapper = new GridMeasureMapper();
+
+            List<TblGridMeasure> mList = new ArrayList<>();
+
+            if (filterObject != null) {
+                mList = filterGridMeasures(filterObject, gmDao, mList);
+            }
+            else {
+                mList = gmDao.getGridMeasuresInTx();
+            }
+
+            for (TblGridMeasure m : mList) {
+                GridMeasure vm = gmMapper.mapToVModel(m);
+                vmList.add(vm);
+            }
+        }
+        return vmList;
+    }
+
+    private List<TblGridMeasure> filterGridMeasures(FilterObject filterObject, TblGridMeasureDao gmDao, List<TblGridMeasure> mList) {
+        if (filterObject.isCanceledStatusActive() && filterObject.isClosedStatusActive()) {
+            mList = gmDao.getGridMeasuresInTx();
+        }
+        else if (filterObject.isCanceledStatusActive() && !filterObject.isClosedStatusActive()) {
+            mList = gmDao.getGridMeasuresExcludingStatusInTx(PlgmProcessState.CLOSED.getStatusValue());
+        }
+        else if (!filterObject.isCanceledStatusActive() && filterObject.isClosedStatusActive()) {
+            mList = gmDao.getGridMeasuresExcludingStatusInTx(PlgmProcessState.CANCELED.getStatusValue());
+        }
+        else if (!filterObject.isCanceledStatusActive() && !filterObject.isClosedStatusActive()) {
+            mList = gmDao.getGridMeasuresExcludingStatusInTx(PlgmProcessState.CLOSED.getStatusValue(), PlgmProcessState.CANCELED.getStatusValue());
+        }
+        return mList;
+    }
+
+    public GridMeasure getGridMeasureById(Integer id)  throws HttpStatusException {
+
+        GridMeasure gridMeasure = null;
+
+        try (AutoCloseEntityManager em = createEm()) {
+            em.getTransaction().begin();
+            TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+            TblSingleGridmeasureDao singleGmDao = createTblSingleGridmeasureDao(em);
+            TblStepsDao stepsDao = createTblStepsDao(em);
+            GridMeasureMapper gmMapper = new GridMeasureMapper();
+            TblGridMeasure tblGridMeasure = gmDao.findByIdInTx(TblGridMeasure.class, (id));
+            em.getTransaction().commit();
+
+            if(tblGridMeasure != null) {
+                List<TblSingleGridmeasure> listTblSingleGridmeasure = singleGmDao.getSingleGridmeasuresByGmIdInTx((id));
+                gridMeasure = gmMapper.mapToVModel(tblGridMeasure, listTblSingleGridmeasure, stepsDao);
+            }
+            else {
+             throw new HttpStatusException(HttpStatus.NOT_FOUND_404);
+            }
+        }
+        return gridMeasure;
+    }
+
+    public List<HGridMeasure> getHistoricalStatusChangesById(Integer gmId)  {
+
+        List<HGridMeasure> hGridMeasures = new java.util.ArrayList<>();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            HTblGridMeasureDao hgmDao = createHistoricalTblGridMeasureDao(em);
+            GridMeasureMapper gmMapper = new GridMeasureMapper();
+
+            List<HTblGridMeasure> htblGridMeasures = hgmDao.getHistoricalGridMeasuresByIdInTx(gmId);
+            if (htblGridMeasures != null) {
+                Integer previousStatus = null;
+                for (HTblGridMeasure hgm : htblGridMeasures) {
+                    if (previousStatus != hgm.getFkRefGmStatus()) {
+                        HGridMeasure vm = gmMapper.mapToVModel(hgm);
+                        hGridMeasures.add(vm);
+                        previousStatus = hgm.getFkRefGmStatus();
+                    }
+                }
+            }
+        }
+        return hGridMeasures;
+    }
+
+    public List<String> getAffectedResourcesDistinct()  {
+
+        try (AutoCloseEntityManager em = createEm()) {
+            TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+            return gmDao.getAffectedResourcesDistinct( PlgmProcessState.CANCELED.getStatusValue() );
+        }
+    }
+
+    public List<String> getMailAddressesFromGridmeasures()  {
+        return MailAddressCache.getInstance().getMailAddresses();
+    }
+
+    public List<Integer> getCurrentReminders(String token)  throws HttpStatusException {
+        List<Integer> returnList = new ArrayList<>();
+        List<Integer> relevantStatusForUserList = new ArrayList<>();
+        Date now = new Date();
+
+        List<Integer> relevantStatusList = new ArrayList<>();
+        relevantStatusList.add(0);
+        relevantStatusList.add(1);
+        relevantStatusList.add(3);
+
+        List<String> relevantUserRolesList = getRelevantRolesForUser(token);
+
+        if(!relevantUserRolesList.isEmpty()){
+            relevantStatusForUserList = getRelevantStatusForRoles(relevantUserRolesList);
+        }
+
+        relevantStatusForUserList.retainAll(relevantStatusList);
+
+        try (AutoCloseEntityManager em = createEm()) {
+            TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+            BackendSettings bSettings = BackendConfig.getInstance().getBackendSettings();
+            Integer reminderPeriod = bSettings.getReminderPeriod();
+
+            for(Integer status: relevantStatusForUserList){
+                List<TblGridMeasure> gmList = gmDao.getGridMeasuresByStatusId(status);
+                for(TblGridMeasure gm: gmList) {
+                    //check auf Unterschreitung der reminderPeriod
+                    long nowLong = now.getTime();
+                    if( gm.getPlannedStarttimeFirstSinglemeasure() != null ) {
+                        long starttimeLong = gm.getPlannedStarttimeFirstSinglemeasure().getTime();
+                        long diff = starttimeLong - nowLong;
+                        long diffHours = diff / (60 * 60 * 1000);
+
+                        if (diffHours > 0 && diffHours < reminderPeriod) {
+                            returnList.add(gm.getId());
+                        }
+                    }
+                }
+            }
+        }
+
+        return returnList;
+    }
+
+    private List<String> getRelevantRolesForUser(String token) throws HttpStatusException{
+
+        List<String> returnList = new ArrayList<>();
+
+        ArrayList<String> listRelevantRoles = new ArrayList<>();
+        listRelevantRoles.add("planned-policies-measureapplicant");
+        listRelevantRoles.add("planned-policies-measureplanner");
+        listRelevantRoles.add("planned-policies-measureapprover");
+
+        //get roles from Token
+        List<String> actUserRoles = TokenManager.getInstance().getUserRoles(token);
+
+        //iterate User Roles and put relevant ones into returnList
+        for (String aktUserRole : actUserRoles) {
+            if(listRelevantRoles.contains(aktUserRole)){
+                returnList.add(aktUserRole);
+            }
+        }
+
+        return returnList;
+    }
+
+    private List<Integer> getRelevantStatusForRoles(List<String> userRolesList) {
+        List<Integer> statusList = new ArrayList<>();
+
+        //get Status for userRoles
+        for(String aktUserRole: userRolesList) {
+            List<Integer> statusForRoleList = getStatusByRole(aktUserRole);
+            statusList.addAll(statusForRoleList);
+        }
+
+        return statusList;
+    }
+
+    public TblDocuments downloadGridMeasureAttachment(int gridmeasuereId) throws HttpStatusException {
+        try (AutoCloseEntityManager em = createEm()) {
+            TblDocumentsDao tblDocumentsDao = createTblDocumentsDao(em);
+            return tblDocumentsDao.findByIdInTx(TblDocuments.class, gridmeasuereId);
+        } catch (Exception e) {
+            logger.error("Error in downloadGridMeasureAttachment", e);
+            throw new HttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR_500);
+        }
+
+    }
+
+    public List<Document> getGridMeasureAttachments(int gridmeasuereId) throws HttpStatusException {
+        List<Document> documentList = new ArrayList<>();
+
+        try {
+            List<TblMeasureDocuments> measureDocumentsList = getAllTblMeasureDocumentsByGridmeasureId(gridmeasuereId);
+            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+            for (TblMeasureDocuments tblMeasureDocuments : measureDocumentsList) {
+                TblDocuments currentDocument = tblMeasureDocuments.getTblDocuments();
+                documentList.add(mapper.mapToViewModel(Document.class, currentDocument));
+            }
+
+        } catch (HttpStatusException e) {
+            logger.error("Error in getGridMeasureAttachments", e);
+            throw new HttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR_500);
+        }
+
+        return documentList;
+    }
+
+
+    public Document uploadDocument(Document document, String changeUser,int gridmeasuereId) throws HttpStatusException {
+        Document retDocument = new Document();
+        List<TblMeasureDocuments> measureDocumentsList = getAllTblMeasureDocumentsByGridmeasureId(gridmeasuereId);
+
+        try (AutoCloseEntityManager em = createEm()) {
+
+            String filenameUtf8 = document.getDocumentName();
+            retDocument.setDocumentName(filenameUtf8);
+            byte[] fileData = Base64.decodeBase64(document.getData());
+            TblDocumentsDao tblDocumentsDao = createTblDocumentsDao(em);
+
+            //check if document already exists
+            TblDocuments documentToStore = getAlreadyExistingDocument(measureDocumentsList, filenameUtf8);
+
+            //new and update always the same steps
+            documentToStore.setDocument(fileData);
+            documentToStore.setModUser(changeUser);
+            documentToStore.setModDate(Date.from(Instant.now()));
+
+            if (documentToStore.getId() != null){
+                //update current: Optional aks user again to overwrite? wait for permission to update
+                storeTblDocument(documentToStore, tblDocumentsDao);
+            } else {
+                //id == null: create new Document
+                documentToStore.setDocumentName(filenameUtf8);
+                documentToStore.setCreateUser(changeUser);
+                documentToStore.setCreateDate(Date.from(Instant.now()));
+
+                TblDocuments storedDocument = storeTblDocument(documentToStore, tblDocumentsDao);
+
+                TblMeasureDocuments tblMeasureDocuments = createNewTblMeasureDocument(changeUser, gridmeasuereId, storedDocument);
+                storeTblMeasureDocument(em, tblMeasureDocuments);
+            }
+
+            retDocument.setId(documentToStore.getId());
+
+        } catch (Exception e) {
+            logger.error("Error in uploadGridMeasureAttachments", e);
+            throw new HttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR_500);
+        }
+
+        return retDocument;
+    }
+
+    private TblDocuments getAlreadyExistingDocument(List<TblMeasureDocuments> measureDocumentsList, String filenameUtf8) {
+        TblDocuments documentToStore = new TblDocuments();
+        for (TblMeasureDocuments tblMeasureDocuments : measureDocumentsList) {
+            TblDocuments currentDocument = tblMeasureDocuments.getTblDocuments();
+
+            if (currentDocument.getDocumentName().equals(filenameUtf8)) {
+                documentToStore = currentDocument;
+                break;
+            }
+        }
+        return documentToStore;
+    }
+
+    public int deleteDocument(String moduser, int documentId) throws HttpStatusException {
+        try (AutoCloseEntityManager em = createEm()) {
+            TblMeasureDocumentsDao tblMeasureDocumentsDao = createTblMeasureDocumentsDao(em);
+            TblDocumentsDao tblDocumentsDao = createTblDocumentsDao(em);
+
+            tblMeasureDocumentsDao.getEM().getTransaction().begin();
+
+            List<TblMeasureDocuments> mdList = tblMeasureDocumentsDao.getMeasureDocumentByDocumentId(documentId);
+            for( TblMeasureDocuments mMDocuments : mdList) {
+                mMDocuments.setModDate(Date.from(Instant.now()));
+                mMDocuments.setModUser(moduser);
+                tblMeasureDocumentsDao.mergeInTx(mMDocuments);
+                tblMeasureDocumentsDao.removeInTx(mMDocuments, mMDocuments.getId());
+            }
+
+            TblDocuments mDocuments = tblDocumentsDao.findByIdInTx(TblDocuments.class,documentId);
+            mDocuments.setModDate(Date.from(Instant.now()));
+            mDocuments.setModUser(moduser);
+            tblDocumentsDao.mergeInTx(mDocuments);
+            tblDocumentsDao.removeInTx(mDocuments, documentId);
+
+            tblMeasureDocumentsDao.getEM().getTransaction().commit();
+
+            return documentId;
+        }
+        catch (HttpStatusException se) {
+            logger.error("Error in deleteDocument", se);
+            throw new HttpStatusException(se.getHttpStatus());
+        }
+        catch(Exception e) {
+            logger.error("Error in deleteDocument", e);
+            throw new HttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR_500);
+        }
+
+    }
+
+    private List<TblMeasureDocuments> getAllTblMeasureDocumentsByGridmeasureId(int gridmeasuereId) throws HttpStatusException {
+        try (AutoCloseEntityManager em = createEm()) {
+            TblMeasureDocumentsDao tblMeasureDocumentsDao = createTblMeasureDocumentsDao(em);
+            return tblMeasureDocumentsDao.getAllTblMeasureDocumentsById(gridmeasuereId);
+        } catch (Exception e) {
+            logger.error("Error in getAllTblMeasureDocumentsByGridmeasureId", e);
+            throw new HttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR_500);
+        }
+    }
+
+    private TblDocuments storeTblDocument(TblDocuments documentToStore, TblDocumentsDao tblDocumentsDao) throws Exception {
+        tblDocumentsDao.getEM().getTransaction().begin();
+        TblDocuments storedDocument = tblDocumentsDao.storeInTx(documentToStore);
+        tblDocumentsDao.getEM().getTransaction().commit();
+        return storedDocument;
+    }
+
+    private void storeTblMeasureDocument(AutoCloseEntityManager em, TblMeasureDocuments tblMeasureDocuments) throws Exception {
+        TblMeasureDocumentsDao tblMeasureDocumentsDao = createTblMeasureDocumentsDao(em);
+        tblMeasureDocumentsDao.getEM().getTransaction().begin();
+        tblMeasureDocumentsDao.storeInTx(tblMeasureDocuments);
+        tblMeasureDocumentsDao.getEM().getTransaction().commit();
+    }
+
+    private TblMeasureDocuments createNewTblMeasureDocument(String changeUser, int gridmeasuereId, TblDocuments storedDocument) {
+        TblMeasureDocuments tblMeasureDocuments = new TblMeasureDocuments();
+        tblMeasureDocuments.setTblDocuments(storedDocument);
+        tblMeasureDocuments.setFkTblMeasure(gridmeasuereId);
+        tblMeasureDocuments.setCreateUser(changeUser);
+        tblMeasureDocuments.setCreateDate(Date.from(Instant.now()));
+        tblMeasureDocuments.setModUser(changeUser);
+        tblMeasureDocuments.setModDate(Date.from(Instant.now()));
+        return tblMeasureDocuments;
+    }
+
+    public Lock checkLock(Integer key, String info) throws HttpStatusException{
+        try (AutoCloseEntityManager em = createEm()) {
+            TblLockDao lockDao = createTblLockDao(em);
+            //check if lock already exists
+            TblLock mLock = lockDao.getLock(key, info);
+            if(mLock != null) {
+                GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+                return mapper.mapToViewModel(Lock.class, mLock);
+            }
+            else{
+                throw new HttpStatusException(HttpStatus.OK_200, "No lock", null);
+            }
+        }
+    }
+
+    private boolean isLocked(Integer key, String info, String userName){
+        try (AutoCloseEntityManager em = createEm()) {
+            TblLockDao lockDao = createTblLockDao(em);
+            //check if lock already exists
+            TblLock mLock = lockDao.getLock(key, info);
+            return !(mLock == null || mLock.getUsername().equals(userName));
+        }
+    }
+
+    public Lock createLock(String changeUser, Integer key, String info) throws Exception{
+        try (AutoCloseEntityManager em = createEm()) {
+            TblLockDao lockDao = createTblLockDao(em);
+            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+            //check if lock already exists
+            TblLock mLock = lockDao.getLock(key, info);
+
+            if (mLock != null && mLock.getUsername().equals(changeUser)) {
+                //existing Lock from current user, update ModUser and ModDate
+                mLock.setModUser(changeUser);
+                mLock.setModDate(Date.from(Instant.now()));
+
+                lockDao.getEM().getTransaction().begin();
+                TblLock updatedLock = lockDao.storeInTx(mLock);
+                lockDao.getEM().getTransaction().commit();
+
+                return mapper.mapToViewModel(Lock.class, updatedLock);
+            }
+            else if (mLock != null && !mLock.getUsername().equals(changeUser)) {
+                //existing Lock from another user
+                mLock.setModUser(changeUser);
+                mLock.setModDate(Date.from(Instant.now()));
+
+                lockDao.getEM().getTransaction().begin();
+                TblLock updatedLock = lockDao.storeInTx(mLock);
+                lockDao.getEM().getTransaction().commit();
+
+                Lock vmLock = mapper.mapToViewModel(Lock.class, updatedLock);
+                throw new HttpStatusException(HttpStatus.CONFLICT_409, "Dataset is locked by another user", vmLock);
+            }
+            else {
+                //mLock== null: no existing Lock for given key and info, create new Lock in DB
+                mLock = new TblLock();
+                mLock.setKey(key);
+                mLock.setUsername(changeUser);
+                mLock.setInfo(info);
+                mLock.setCreateUser(changeUser);
+                mLock.setCreateDate(Date.from(Instant.now()));
+
+                lockDao.getEM().getTransaction().begin();
+                TblLock newLock = lockDao.storeInTx(mLock);
+                lockDao.getEM().getTransaction().commit();
+
+                return mapper.mapToViewModel(Lock.class, newLock);
+            }
+        }
+    }
+
+    public Integer deleteLock(String changeUser, Integer key, String info, boolean bForce) throws Exception{
+        try (AutoCloseEntityManager em = createEm()) {
+            TblLockDao lockDao = createTblLockDao(em);
+            TblLock mLock = lockDao.getLock(key, info);
+
+            if(mLock != null && (bForce || mLock.getUsername().equals(changeUser))) {
+                lockDao.getEM().getTransaction().begin();
+
+                // touch the entity that we know, who unlocked an when->HIS-Table!
+                mLock.setModUser(changeUser);
+                mLock.setModDate(new Date(System.currentTimeMillis()));
+                lockDao.storeInTx(mLock);
+
+                // remove from db
+                lockDao.removeInTx(mLock, mLock.getId());
+                lockDao.getEM().getTransaction().commit();
+                return key;
+            }
+            else {
+                if( mLock == null ) {
+                    return key;
+                }
+                else {
+                    throw new HttpStatusException(HttpStatus.FORBIDDEN_403, "Cannot delete a lock of another user");
+                }
+            }
+        }
+    }
+
+
+    public RoleAccessDefinitionApi recalcAndGetRoleAccessDefinition() {
+        return RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(new GridConfigButtonManipulator(BackendConfig.getInstance().getBackendSettings().getBpmnGridConfig())::manipulateButtons);
+    }
+
+    public BackendSettings.BpmnGridConfig setGridConfig(
+            Boolean isSkipForApproval,
+            Boolean isEndAfterApproved,
+            Boolean isSkipRequesting,
+            Boolean isEndAfterReleased,
+            Boolean isSkipInWork) {
+        BackendSettings.BpmnGridConfig newConfig = BackendConfig.getInstance().getBackendSettings().getBpmnGridConfig();
+
+        if( isSkipForApproval != null ) { newConfig.setSkipForApproval( isSkipForApproval ); }
+        if( isEndAfterApproved != null ) { newConfig.setEndAfterApproved( isEndAfterApproved ); }
+        if( isSkipRequesting != null ) { newConfig.setSkipRequesting( isSkipRequesting ); }
+        if( isEndAfterReleased != null ) { newConfig.setEndAfterReleased( isEndAfterReleased); }
+        if( isSkipInWork != null ) { newConfig.setSkipInWork( isSkipInWork ); }
+        RoleAccessDefinitions.INSTANCE.setDirty();
+        recalcAndGetRoleAccessDefinition();
+
+        return newConfig;
+    }
+
+
+    private HashMap<String, List<Integer>> getUserRolesFromAccessDefinition() {
+        HashMap<String, List<Integer>> rolesMap = new HashMap<>();
+        RoleAccessDefinitionApi json  = recalcAndGetRoleAccessDefinition();
+        for(RoleAccessDefinitionApi.EditRole role : json.getEditRoles()) {
+            List<Integer> statuslist = intArrayToList(role.getGridMeasureStatusIds());
+            rolesMap.put(role.getName(), statuslist );
+        }
+        return rolesMap;
+    }
+
+    private List<Integer> intArrayToList( int[] arr ) {
+        List<Integer> list = new ArrayList<>();
+        for( int val : arr ) {
+            list.add(val);
+        }
+        return list;
+    }
+
+    private List<String> getRolesByStatus(Integer statusId){
+        List <Integer> statusList;
+        List <String> rolesList= new ArrayList<>();
+        HashMap hmRoles = getUserRolesFromAccessDefinition();
+        Iterator it = hmRoles.entrySet().iterator();
+        while (it.hasNext()) {
+            Map.Entry role = (Map.Entry)it.next();
+            statusList = (List<Integer>)role.getValue();
+            if (statusList.contains(statusId)) {
+                rolesList.add(role.getKey().toString());
+            }
+            it.remove();
+        }
+        return rolesList;
+    }
+
+    private List<Integer> getStatusByRole(String userRole){
+        List<Integer> statusList = new ArrayList<>();
+        RoleAccessDefinitionApi json  = recalcAndGetRoleAccessDefinition();
+        for(RoleAccessDefinitionApi.EditRole role: json.getEditRoles()) {
+            if(role.getName().equals(userRole)) {
+                int[] jsonStatusList = role.getGridMeasureStatusIds();
+                for (int i : jsonStatusList ) {
+                    statusList.add(i);
+                }
+            }
+        }
+
+        return statusList;
+    }
+
+    private List<String> getStornoRoles(){
+        List<String> stornoRolesList = new ArrayList<>();
+        RoleAccessDefinitionApi json  = recalcAndGetRoleAccessDefinition();
+         String[] stornoRoles = json.getStornoSection().getStornoRoles();
+         for(String role: stornoRoles){
+             stornoRolesList.add(role); }
+        return stornoRolesList;
+    }
+
+    private boolean isUserAllowedToCancel( List<String> actUserRoles){
+
+            boolean isAllowedToCancel = false;
+            List<String> stornoRoles = getStornoRoles();
+
+            for (String role : actUserRoles) {
+                if(stornoRoles.contains(role)) {
+                    isAllowedToCancel = true;
+                    break;
+                }
+            }
+            return isAllowedToCancel;
+    }
+
+    private void assertIsUserAllowedToStore(String token, GridMeasure gridMeasure, String userName) throws HttpStatusException {
+        //check GM locked?
+        if (!isLocked(gridMeasure.getId(), "gridmeasure", userName)){
+
+            //get DB status from GridMeasure
+            Integer statusIdDB;
+            if( gridMeasure.getId() != null ) {
+                try (AutoCloseEntityManager em = createEm()) {
+                    TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+                    TblGridMeasure gm = gmDao.findById(TblGridMeasure.class, gridMeasure.getId());
+                    statusIdDB = gm.getFkRefGmStatus();
+                }
+            }
+            else {
+                statusIdDB = PlgmProcessState.NEW.getStatusValue();
+            }
+
+            //get roles from Token
+            List<String> actUserRoles = TokenManager.getInstance().getUserRoles(token);
+
+            //in case of status = 2 (Cancelled), check if user is allowed to cancel
+            if(gridMeasure.getStatusId() == PlgmProcessState.CANCELED.getStatusValue()){
+                if(isUserAllowedToCancel(actUserRoles)){
+                    //user is allowed to cancel, all further checks are unnecessary in this case
+                    return;
+                }
+                else{
+                    logger.error("Failure in storeGridMeasure, User is not authorized to cancel a Gridmeasure");
+                    throw new HttpStatusException(HttpStatus.FORBIDDEN_403);
+                }
+            }
+
+            //in case of all other status:
+            //get roles from access-definition where DB-status is mentioned
+            List<String> listRoles = getRolesByStatus(statusIdDB);
+
+            //check if one of these roles(from access-definition-roles) is in token
+            for (String role : listRoles) {
+                if(actUserRoles.contains(role)) {
+                    return;
+                }
+            }
+            logger.error("Failure in storeGridMeasure, User is not authorized to store");
+            throw new HttpStatusException(HttpStatus.FORBIDDEN_403);
+        }
+        else {
+            logger.error("Failure in storeGridMeasure, Dataset locked");
+            throw new HttpStatusException(HttpStatus.LOCKED_423);
+        }
+    }
+
+    private VersionInfo getVersionInfoImpl(RefVersionDao dao, String pomVersion) {
+        RefVersion dbVersion = dao.getVersionInTx();
+        VersionInfo vi = new VersionInfo();
+        vi.setBackendVersion(pomVersion);
+
+        if (dbVersion == null) {
+            vi.setDbVersion("NO_DB");
+        } else {
+            vi.setDbVersion(dbVersion.getVersion());
+        }
+        return vi;
+    }
+
+    private ProcessState getDbProcessState( Integer measureId ) throws HttpStatusException {
+        if( measureId == null ) {
+            return PlgmProcessState.NEW;
+        }
+
+        try (AutoCloseEntityManager em = createEm()) {
+            TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+            TblGridMeasure gm = gmDao.findById(TblGridMeasure.class, measureId);
+            if( gm == null ) {
+                logger.error("getDbProcessState(): GridMeasure with Id="+measureId+" could not be found!");
+                throw( new HttpStatusException(HttpStatus.NOT_FOUND_404));
+            }
+            return PlgmProcessState.fromValue(gm.getFkRefGmStatus());
+        }
+    }
+
+    protected TblSingleGridmeasureDao createTblSingleGridmeasureDao(EntityManager em) { return new TblSingleGridmeasureDao(em); }
+
+    protected TblGridMeasureDao createTblGridMeasureDao(EntityManager em) { return new TblGridMeasureDao(em); }
+
+    protected HTblGridMeasureDao createHistoricalTblGridMeasureDao(EntityManager em) { return new HTblGridMeasureDao(em); }
+
+    protected TblStepsDao createTblStepsDao(EntityManager em) { return new TblStepsDao(em); }
+
+    protected TblDocumentsDao createTblDocumentsDao(EntityManager em) { return new TblDocumentsDao(em); }
+
+    protected TblMeasureDocumentsDao createTblMeasureDocumentsDao(EntityManager em) { return new TblMeasureDocumentsDao(em); }
+
+    protected TblLockDao createTblLockDao(EntityManager em) { return new TblLockDao(em); }
+
+    protected AutoCloseEntityManager createEm() {
+        return new AutoCloseEntityManager(EntityHelper.getEMF().createEntityManager());
+    }
+
+
+
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/InitMailAddressCacheJob.java b/src/main/java/org/eclipse/openk/core/controller/InitMailAddressCacheJob.java
new file mode 100644
index 0000000..387c733
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/InitMailAddressCacheJob.java
@@ -0,0 +1,39 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+
+package org.eclipse.openk.core.controller;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import org.apache.log4j.Logger;
+
+public class InitMailAddressCacheJob {
+
+    private static final Logger LOGGEER = Logger.getLogger(GridMeasureBackendController.class);
+
+    public void init()  {
+        LOGGEER.debug("InitMailAddressCollectionJob called");
+        TimerTask timerTask = new MailAddressCacheTimerTask();
+        Timer timer = new Timer();
+
+        long reloadInterval = BackendConfig.getInstance().getBackendSettings().getReloadMailAddressesInMin()*60L * 1000L;
+
+        timer.scheduleAtFixedRate(timerTask, 500, reloadInterval);
+    }
+
+
+
+
+
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/MailAddressCache.java b/src/main/java/org/eclipse/openk/core/controller/MailAddressCache.java
new file mode 100644
index 0000000..f9a0c95
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/MailAddressCache.java
@@ -0,0 +1,40 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MailAddressCache {
+    private static final MailAddressCache MAILADDRESSCACHE_INSTANCE = new MailAddressCache();
+    private final List<String> mailAddresses = new ArrayList<>();
+
+    private MailAddressCache(){
+    }
+
+    public static MailAddressCache getInstance() {
+        return MAILADDRESSCACHE_INSTANCE;
+    }
+
+    public List<String> getMailAddresses() {
+        synchronized (mailAddresses){
+            return mailAddresses;
+        }
+    }
+
+    public void setMailAddresses(List<String> mailAddresses) {
+        synchronized (this.mailAddresses){
+            this.mailAddresses.clear();
+            this.mailAddresses.addAll(mailAddresses);
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/MailAddressCacheTimerTask.java b/src/main/java/org/eclipse/openk/core/controller/MailAddressCacheTimerTask.java
new file mode 100644
index 0000000..394b8b5
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/MailAddressCacheTimerTask.java
@@ -0,0 +1,73 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+
+package org.eclipse.openk.core.controller;
+
+import java.util.*;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.db.dao.AutoCloseEntityManager;
+import org.eclipse.openk.db.dao.EntityHelper;
+import org.eclipse.openk.db.dao.TblGridMeasureDao;
+
+import javax.persistence.EntityManager;
+
+
+public class MailAddressCacheTimerTask extends TimerTask {
+
+    private static final Logger LOGGER = Logger.getLogger(MailAddressCacheTimerTask.class.getName());
+
+    @Override
+    public void run() {
+        LOGGER.debug("MailAddressCacheTimerTask called");
+        try {
+
+            List<String> mailAddressStrings = new ArrayList<>();
+            List<String> singleMailAddressList = new ArrayList<>();
+            Set<String> mailAddressesUniqueSet = new HashSet<>();
+            List<String> mailAddressesUniqueList = new ArrayList<>();
+
+            try (AutoCloseEntityManager em = createEm()) {
+                TblGridMeasureDao gmDao = createTblGridMeasureDao(em);
+                mailAddressStrings = gmDao.getMailAddressesFromGridmeasures();
+            }
+
+            while (mailAddressStrings.remove(null));
+
+            for (String mailAddressString : mailAddressStrings) {
+
+                mailAddressString = mailAddressString.replace(";", ",");
+                String[] singleMailAddresses = mailAddressString.split(",");
+                singleMailAddressList.addAll(Arrays.asList(singleMailAddresses));
+                singleMailAddressList.replaceAll(String::trim);
+
+                mailAddressesUniqueSet.addAll(singleMailAddressList);
+            }
+
+            mailAddressesUniqueList = new ArrayList<>(mailAddressesUniqueSet);
+            MailAddressCache.getInstance().setMailAddresses(mailAddressesUniqueList);
+
+        }
+        catch (Exception e) {
+            LOGGER.error("Error in MailAddressCacheTimerTask",e);
+        }
+    }
+
+
+    protected AutoCloseEntityManager createEm() {
+        return new AutoCloseEntityManager(EntityHelper.getEMF().createEntityManager());
+    }
+
+    protected TblGridMeasureDao createTblGridMeasureDao(EntityManager em) { return new TblGridMeasureDao(em); }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/core/controller/MasterDataBackendController.java b/src/main/java/org/eclipse/openk/core/controller/MasterDataBackendController.java
new file mode 100644
index 0000000..40f4f90
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/MasterDataBackendController.java
@@ -0,0 +1,262 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.openk.api.BackendSettings;
+import org.eclipse.openk.api.Branch;
+import org.eclipse.openk.api.BranchLevel;
+import org.eclipse.openk.api.CostCenter;
+import org.eclipse.openk.api.GmStatus;
+import org.eclipse.openk.api.UserDepartment;
+import org.eclipse.openk.api.UserSettings;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.common.mapper.generic.GenericApiToDbMapper;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.db.dao.AutoCloseEntityManager;
+import org.eclipse.openk.db.dao.EntityHelper;
+import org.eclipse.openk.db.dao.RefBranchDao;
+import org.eclipse.openk.db.dao.RefBranchLevelDao;
+import org.eclipse.openk.db.dao.RefCostCenterDao;
+import org.eclipse.openk.db.dao.RefGmStatusDao;
+import org.eclipse.openk.db.dao.RefUserDepartmentDao;
+import org.eclipse.openk.db.dao.TblUserSettingsDao;
+import org.eclipse.openk.db.model.RefBranch;
+import org.eclipse.openk.db.model.RefBranchLevel;
+import org.eclipse.openk.db.model.RefCostCenter;
+import org.eclipse.openk.db.model.RefGmStatus;
+import org.eclipse.openk.db.model.RefUserDepartment;
+import org.eclipse.openk.db.model.TblUserSettings;
+
+import javax.persistence.EntityManager;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import static org.eclipse.openk.common.JsonGeneratorBase.getGson;
+
+public class MasterDataBackendController {
+    protected static final Logger logger = Logger.getLogger(MasterDataBackendController.class);
+
+    public List<String> getEmailAddressesFromTemplates()  {
+        List<String> recipientAddressesAllList = new ArrayList<>();
+
+        //fetch names of relevant emailTemplates
+        BackendSettings bSettings = BackendConfig.getInstance().getBackendSettings();
+        String emailTemplateAddressesForNotification = bSettings.getEmailTemplateAddressesForNotification();
+        String[] templateNameList = emailTemplateAddressesForNotification.split(",");
+
+        EmailTemplatePaths paths = BackendConfig.getInstance().getEmailTemplatePaths();
+
+        //TODO: refactoren, z.B. Möglichkeit schaffen, einen Template-Path direkt mit Hilfe des Template-Namens zu holen
+        //fetch emailTemplates by the aid of their names
+        List<String> relevantEmailTemplates = new ArrayList<>();
+        for(String templateName: templateNameList) {
+            if (templateName.contains("active"))
+                relevantEmailTemplates.add(paths.getActiveEmailTemplate());
+            if (templateName.contains("applied"))
+                relevantEmailTemplates.add(paths.getAppliedEmailTemplate());
+            if (templateName.contains("approved"))
+                relevantEmailTemplates.add(paths.getApprovedEmailTemplate());
+            if (templateName.contains("cancelled"))
+                relevantEmailTemplates.add(paths.getCancelledEmailTemplate());
+            if (templateName.contains("closed"))
+                relevantEmailTemplates.add(paths.getClosedEmailTemplate());
+            if (templateName.contains("finished"))
+                relevantEmailTemplates.add(paths.getFinishedEmailTemplate());
+            if (templateName.contains("forapproval"))
+                relevantEmailTemplates.add(paths.getForapprovalEmailTemplate());
+            if (templateName.contains("inwork"))
+                relevantEmailTemplates.add(paths.getInworkEmailTemplate());
+            if (templateName.contains("rejected"))
+                relevantEmailTemplates.add(paths.getRejectedEmailTemplate());
+            if (templateName.contains("released"))
+                relevantEmailTemplates.add(paths.getReleasedEmailTemplate());
+            if (templateName.contains("requested"))
+                relevantEmailTemplates.add(paths.getRequestedEmailTemplate());
+            if (templateName.contains("workfinished"))
+                relevantEmailTemplates.add(paths.getWorkfinishedEmailTemplate());
+        }
+
+        //fetch emailAddresses from relevant emailTemplates
+        String[] recipientsSplit;
+        String recipientsTo;
+        String[] recipientAddresses;
+
+        for(String templatePath: relevantEmailTemplates) {
+
+            ResourceLoaderBase loaderBase = new ResourceLoaderBase();
+            String templateString = loaderBase.loadFromPath(templatePath);
+
+            recipientsSplit = templateString.split("CC");
+            recipientsTo = recipientsSplit[0].trim().replace("To:", "");
+            if(!recipientsTo.isEmpty()) {
+                recipientAddresses = recipientsTo.split(",");
+                recipientAddressesAllList.addAll(Arrays.asList(recipientAddresses));
+            }
+        }
+
+        recipientAddressesAllList.replaceAll(String::trim);
+        return recipientAddressesAllList;
+    }
+
+    public List<Branch> getBranches()  {
+        List<Branch> vmList = new java.util.ArrayList<>();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            RefBranchDao bDao = createRefBranchDao(em);
+
+            List<RefBranch>mList = bDao.getBranchesInTx();
+            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+            mList.forEach(m -> vmList.add(mapper.mapToViewModel(Branch.class, m) ) );
+        }
+        return vmList;
+    }
+
+    public List<BranchLevel> getBranchLevels()  {
+        List<BranchLevel> vmList = new java.util.ArrayList<>();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            RefBranchLevelDao blDao = createRefBranchLevelDao(em);
+
+            List<RefBranchLevel>mList = blDao.getBranchLevelsInTx();
+            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+            mList.forEach(m -> vmList.add(mapper.mapToViewModel(BranchLevel.class, m) ) );
+        }
+
+        return vmList;
+    }
+
+    public List<GmStatus> getGmStatus()  {
+        List<GmStatus> vmList = new java.util.ArrayList<>();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            RefGmStatusDao sDao = createRefGmStatusDao(em);
+
+            List<RefGmStatus>mList = sDao.getGmStatusInTx();
+            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+            mList.forEach(m -> vmList.add(mapper.mapToViewModel(GmStatus.class, m)));
+        }
+        return vmList;
+    }
+
+    public List<CostCenter> getCostCenters()  {
+        List<CostCenter> vmList = new java.util.ArrayList<>();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            RefCostCenterDao costCenterDao = createRefCostCenterDao(em);
+
+            List<RefCostCenter>mList = costCenterDao.getCostCentersInTx();
+            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+            mList.forEach(m -> vmList.add(mapper.mapToViewModel(CostCenter.class, m)));
+        }
+        return vmList;
+    }
+
+    public List<UserDepartment> getUserDepartments()  {
+        List<UserDepartment> vmList = new java.util.ArrayList<>();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            RefUserDepartmentDao userDepartmentDao = createRefUserDepartmentDao(em);
+
+            List<RefUserDepartment>mList = userDepartmentDao.getUserDepartmentsInTx();
+            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+            mList.forEach(m -> vmList.add(mapper.mapToViewModel(UserDepartment.class, m)));
+        }
+        return vmList;
+    }
+
+    public UserSettings getUserSettings(String username, String settingType)  throws HttpStatusException{
+        UserSettings userSettings = new UserSettings();
+
+        try (AutoCloseEntityManager em = createEm()) {
+            TblUserSettingsDao userSettingsDao = createRefUserSettingsDao(em);
+
+            TblUserSettings tblUserSettings = userSettingsDao.getUserSettingsBySettingType(username, settingType);
+            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+            userSettings = mapper.mapToViewModel(UserSettings.class,tblUserSettings);
+
+        }
+        catch(HttpStatusException e) {
+            logger.error("getUserSettings", e);
+            throw new HttpStatusException(org.apache.http.HttpStatus.SC_NOT_FOUND, e.getMessage());
+        }
+        return userSettings;
+    }
+
+    public UserSettings storeUserSettings(String changeUser, UserSettings userSettings)  throws HttpStatusException{
+
+        TblUserSettings tblUsDb = new TblUserSettings();
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        TblUserSettings tblUserSettings = mapper.mapFromViewModel(TblUserSettings.class, userSettings);
+        tblUserSettings.setModUser(changeUser);
+        tblUserSettings.setModDate(Date.from(Instant.now()));
+
+        try (AutoCloseEntityManager em = createEm()) {
+            TblUserSettingsDao userSettingsDao = createRefUserSettingsDao(em);
+
+            TblUserSettings tblDb = userSettingsDao.getUserSettingsBySettingType(changeUser, userSettings.getSettingType());
+
+            if(tblDb.getId() != null){
+                // entity should exist before it is updated
+                userSettingsDao.getEM().getTransaction().begin();
+                tblUsDb =  userSettingsDao.updateUserSettingsInDB(tblUserSettings, tblDb);
+                userSettingsDao.getEM().getTransaction().commit();
+            }
+            else{
+                userSettingsDao.getEM().getTransaction().begin();
+                tblUsDb =  userSettingsDao.createUserSettingsInDb(changeUser, tblUserSettings);
+                userSettingsDao.getEM().getTransaction().commit();
+            }
+        }
+        catch (HttpStatusException e) {
+            logger.error("Error in storeUserSettings", e);
+            throw new HttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR_500);
+        }
+        return mapper.mapToViewModel(UserSettings.class, tblUsDb);
+    }
+
+
+    public BackendSettings getBackendSettings() {
+        ResourceLoaderBase loaderBase = new ResourceLoaderBase();
+        String backendSettingsString = loaderBase.loadFromPath("./backendSettings.json");
+        return getGson().fromJson(backendSettingsString, BackendSettings.class);
+    }
+
+    protected RefBranchDao createRefBranchDao(EntityManager em) {
+        return new RefBranchDao(em);
+    }
+
+    protected RefBranchLevelDao createRefBranchLevelDao(EntityManager em) { return new RefBranchLevelDao(em); }
+
+    protected RefGmStatusDao createRefGmStatusDao(EntityManager em) {
+        return new RefGmStatusDao(em);
+    }
+
+    protected RefCostCenterDao createRefCostCenterDao(EntityManager em) {
+        return new RefCostCenterDao(em);
+    }
+
+    protected RefUserDepartmentDao createRefUserDepartmentDao(EntityManager em) { return new RefUserDepartmentDao(em); }
+
+    protected TblUserSettingsDao createRefUserSettingsDao(EntityManager em) { return new TblUserSettingsDao(em); }
+
+    protected AutoCloseEntityManager createEm() {
+        return new AutoCloseEntityManager(EntityHelper.getEMF().createEntityManager());
+    }
+
+}
+
diff --git a/src/main/java/org/eclipse/openk/core/controller/PgmEmail.java b/src/main/java/org/eclipse/openk/core/controller/PgmEmail.java
new file mode 100644
index 0000000..7005ffc
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/PgmEmail.java
@@ -0,0 +1,146 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+
+package org.eclipse.openk.core.controller;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.communication.RestServiceWrapper;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+import javax.mail.MessagingException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+public class PgmEmail extends EmailManager {
+
+  private static final String SUBJECT_DATE_PATTERN_APPLIED = "EEEE', den' dd.MM.yy 'um' HH:mm:ss";
+  protected Map<String,String> contentReplaceMap;
+  private static String portalFeUrl = null;
+  private static final Object portalLoadingLock = new Object();
+  private String jwt = null;
+
+  public PgmEmail(PlgmProcessSubject model, String templatePath, boolean loadRecipientsFromGm) throws MessagingException {
+    super(model, templatePath, loadRecipientsFromGm);
+    this.jwt = model.getJwt();
+    init();
+  }
+
+  @Override
+  public void prepareEmailContent() {
+    LOGGER.debug("Modifying Email...");
+    createContentReplacHashMap();
+
+    for (Entry<String, String> stringStringEntry : contentReplaceMap.entrySet()) {
+      emailBody = emailBody.replace(stringStringEntry.getKey(),stringStringEntry.getValue());
+      subject = subject.replace(stringStringEntry.getKey(),stringStringEntry.getValue());
+    }
+
+    LOGGER.debug("...modifying Email finished");
+  }
+
+  protected void createContentReplacHashMap(){
+    GridMeasure currentGridMeasure = processSubject.getGridMeasure();
+    this.contentReplaceMap = new HashMap<>();
+    contentReplaceMap.put("$gridMeasureTitle$", currentGridMeasure.getTitle());
+
+    String directMeasureLink = getDirectMeasureLink(currentGridMeasure.getId());
+    contentReplaceMap.put("$directMeasureLink$", directMeasureLink);
+
+    Date plannedStarttimeFirstSinglemeasure = currentGridMeasure.getPlannedStarttimeFirstSinglemeasure();
+    if(plannedStarttimeFirstSinglemeasure != null) {
+      DateFormat dfmt = new SimpleDateFormat(SUBJECT_DATE_PATTERN_APPLIED);
+      String formattedDate = dfmt.format(plannedStarttimeFirstSinglemeasure);
+      contentReplaceMap.put("$plannedStarttimeFirstSinglemeasure$", formattedDate);
+    }
+
+    Date plannedEndtimeLastSinglemeasure = currentGridMeasure.getPlannedEndtimeLastSinglemeasure();
+    if(plannedEndtimeLastSinglemeasure != null) {
+      DateFormat dfmt = new SimpleDateFormat(SUBJECT_DATE_PATTERN_APPLIED);
+      String formattedDate = dfmt.format(plannedEndtimeLastSinglemeasure);
+      contentReplaceMap.put("$plannedEndtimeLastSinglemeasure$", formattedDate);
+    }
+
+    String remark = currentGridMeasure.getRemark();
+    if(remark != null) {
+      contentReplaceMap.put("$gridMeasureRemark$", remark);
+    }
+
+  }
+
+  private String getDirectMeasureLink(Integer measureId) {
+    // Example Link: http://localhost:4220/#/gridMeasureDetail/5/edit?fwdUrl=http%3A%2F%2Flocalhost%3A4201%2F%23%2Flogin
+    // %3FfwdUrl%3Dhttp%3A%2F%2Flocalhost%3A4220%2F%26fwdId%3D5
+    String portalFeLoginUrl = BackendConfig.getInstance().getPortalFeLoginUrl();
+    initPortalFeUrl(this.jwt);
+
+    String stdGridmeasureURL = portalFeUrl + "#/" + "gridMeasureDetail/" + measureId + "/edit";
+
+    String fwdURL = "fwdUrl=" + portalFeUrl + "&fwdId=" + measureId;
+    String fwdURLEncoded = "";
+    String finalFwdUrl = portalFeLoginUrl + "?" + fwdURL;
+    try {
+      fwdURLEncoded = URLEncoder.encode(finalFwdUrl, "UTF-8");
+    } catch (UnsupportedEncodingException e) {
+      LOGGER.error("Error in getDirectMeasureLink", e);
+      return "";
+    }
+
+    return stdGridmeasureURL + "?fwdUrl=" + fwdURLEncoded;
+  }
+
+  private static void initPortalFeUrl(String jwt)  {
+    if( jwt == null ) {
+      LOGGER.info("Empty JWT passed to EMailManger");
+      portalFeUrl = "";
+    }
+    synchronized (portalLoadingLock) {
+      if( portalFeUrl == null ) {
+        RestServiceWrapper wrapper = createWrapper();
+        try {
+          portalFeUrl =  extractPortalFE(wrapper.performGetRequest("userModulesForUser", jwt));
+        } catch (HttpStatusException e) {
+          LOGGER.warn("Modules for User could not be resolved", e);
+        }
+      }
+    }
+  }
+
+  private static RestServiceWrapper createWrapper() {
+    return new RestServiceWrapper(BackendConfig.getInstance().getPortalBaseUrl(), false);
+  }
+
+  private static String extractPortalFE( String moduleConfig ) {
+    String retUrl = "<PortalFE-URL>";
+    JsonParser parser = new JsonParser();
+    JsonElement je = parser.parse(moduleConfig);
+    JsonArray moduleArray = je.getAsJsonArray();
+    for( JsonElement moduleElem : moduleArray ) {
+      String moduleNameUpper = moduleElem.getAsJsonObject().get("name").getAsString().toUpperCase();
+      if( moduleNameUpper.contains("PLAN") && moduleNameUpper.contains("NAHME") ) {
+        return moduleElem.getAsJsonObject().get("link").getAsString();
+      }
+    }
+    return retUrl;
+  }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/ResponseBuilderWrapper.java b/src/main/java/org/eclipse/openk/core/controller/ResponseBuilderWrapper.java
new file mode 100644
index 0000000..259b7ab
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/ResponseBuilderWrapper.java
@@ -0,0 +1,62 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.controller;
+
+import java.io.UnsupportedEncodingException;
+import javax.ws.rs.core.Response;
+import org.apache.http.HttpStatus;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.common.Globals;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public enum ResponseBuilderWrapper {
+    INSTANCE;
+    private static final Logger LOGGER = Logger.getLogger(ResponseBuilderWrapper.class.getName());
+
+    public Response.ResponseBuilder getResponseBuilder( String json ) throws HttpStatusException {
+        return getResponseBuilder(jsonStringToBytes( json ));
+
+    }
+
+    private Response.ResponseBuilder getResponseBuilder(byte[] json) {
+        return Response.status(HttpStatus.SC_OK).entity(json)
+                .header("Content-Type", "application/json; charset=utf-8")
+                .header("X-XSS-Protection", "1; mode = block")
+                .header("X-DNS-Prefetch-Control", "off")
+                .header("X-Content-Type-Options", "nosniff")
+                .header("X-Frame-Options", "sameorigin")
+                .header("Strict-Transport-Security", "max-age=15768000; includeSubDomains")
+                .header("Cache-Control", "no-cache; no-store; must-revalidate")
+                .header("Pragma", "no-cache")
+                .header("Expires", "0")
+                .header("Access-Control-Allow-Origin", "*");
+    }
+
+    private byte[] jsonStringToBytes( String jsonString ) throws HttpStatusException {
+        try {
+            return jsonString.getBytes("UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            LOGGER.error("Error in process grid", e);
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    public Response buildOKResponse(String jsonString) throws HttpStatusException {
+        return getResponseBuilder( jsonStringToBytes( jsonString)).build();
+    }
+
+
+    public Response buildOKResponse(String jsonString, String sessionToken) throws HttpStatusException  {
+        return getResponseBuilder(jsonStringToBytes(jsonString)).header(Globals.SESSION_TOKEN_TAG, sessionToken).build();
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/RoleAccessDefinitions.java b/src/main/java/org/eclipse/openk/core/controller/RoleAccessDefinitions.java
new file mode 100644
index 0000000..f64a556
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/RoleAccessDefinitions.java
@@ -0,0 +1,54 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import org.eclipse.openk.api.RoleAccessDefinitionApi;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+
+public enum RoleAccessDefinitions {
+    INSTANCE;
+
+    private boolean isDirty = true;
+    public interface RoleAccessManipulator {
+        void apply(RoleAccessDefinitionApi roleAccessDefObj );
+    }
+
+    private Object synchLock = new Object();
+    private  RoleAccessDefinitionApi roleAccessDefinition;
+
+
+    public void setDirty() {
+        synchronized (synchLock) {
+            isDirty = true;
+        }
+    }
+
+    public RoleAccessDefinitionApi getRoleAccessDefinition( RoleAccessManipulator manipulator ) {
+        synchronized (synchLock) {
+            if( isDirty && manipulator != null ) {
+                load();
+                manipulator.apply(this.roleAccessDefinition);
+            }
+            isDirty = false;
+            return roleAccessDefinition;
+        }
+    }
+
+    public void load() {
+        synchronized (synchLock) {
+            ResourceLoaderBase loaderBase = new ResourceLoaderBase();
+            String roles = loaderBase.loadFromPath("roleAccessConfiguration/role-access-definition.json");
+            roleAccessDefinition = JsonGeneratorBase.getGson().fromJson(roles, RoleAccessDefinitionApi.class);
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/controller/TokenManager.java b/src/main/java/org/eclipse/openk/core/controller/TokenManager.java
new file mode 100644
index 0000000..a8dc950
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/controller/TokenManager.java
@@ -0,0 +1,70 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.controller;
+
+
+import org.apache.http.HttpStatus;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.auth2.model.JwtPayload;
+import org.eclipse.openk.auth2.model.JwtRealmAccess;
+import org.eclipse.openk.auth2.util.JwtHelper;
+import org.eclipse.openk.common.Globals;
+import org.eclipse.openk.core.communication.RestServiceWrapper;
+import org.eclipse.openk.core.controller.BaseWebService.SecureType;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+import java.util.List;
+
+public class TokenManager {
+    private static final Logger LOGGER = Logger.getLogger(TokenManager.class.getName());
+
+    private static final TokenManager INSTANCE = new TokenManager();
+
+    private TokenManager() {
+    }
+
+    public static TokenManager getInstance() {
+        return INSTANCE;
+    }
+
+    public void logout(String token) throws HttpStatusException {
+        RestServiceWrapper restServiceWrapper = new RestServiceWrapper(BackendConfig.getInstance().getPortalBaseUrl(), false);
+        restServiceWrapper.performGetRequest("logout",token);
+    }
+
+    public void checkAut(String token) throws HttpStatusException {
+        RestServiceWrapper restServiceWrapper = new RestServiceWrapper(BackendConfig.getInstance().getPortalBaseUrl(), false);
+        restServiceWrapper.performGetRequest("checkAuth",token);
+    }
+
+    public void checkAutLevel(String token, SecureType secureType) throws HttpStatusException {
+        JwtPayload jwtPayload = JwtHelper.getJwtPayload(token);
+        boolean isNormalUser = jwtPayload.getRealmAccess().isInRole(Globals.KEYCLOAK_ROLE_NORMALUSER);
+        boolean isSuperUser = jwtPayload.getRealmAccess().isInRole(Globals.KEYCLOAK_ROLE_SUPERUSER);
+
+        boolean notAuth = secureType == SecureType.NORMAL && !(isNormalUser || isSuperUser);
+        notAuth |= (secureType == SecureType.HIGH && !isSuperUser);
+
+        if ( notAuth )
+        {
+            LOGGER.warn("Security level not sufficent ");
+            throw new HttpStatusException(HttpStatus.SC_FORBIDDEN);
+        }
+    }
+
+    public List<String> getUserRoles(String token) throws HttpStatusException {
+        JwtPayload jwtPayload = JwtHelper.getJwtPayload(token);
+        JwtRealmAccess jra = jwtPayload.getRealmAccess();
+        return jra.getRoles();
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/core/exceptions/HttpStatusException.java b/src/main/java/org/eclipse/openk/core/exceptions/HttpStatusException.java
new file mode 100644
index 0000000..0ecdf6c
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/exceptions/HttpStatusException.java
@@ -0,0 +1,46 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.exceptions;
+
+public class HttpStatusException extends Exception {
+    private final int httpStatus;
+    private final transient Object payload;
+
+    public HttpStatusException(int httpStatus ) {
+        this.httpStatus = httpStatus;
+        this.payload = null;
+    }
+
+    public HttpStatusException(int httpStatus, String msg ) {
+        super( msg );
+        this.httpStatus = httpStatus;
+        this.payload = null;
+    }
+
+    public HttpStatusException(int httpStatus, String msg, Object payload ) {
+        super( msg );
+        this.httpStatus = httpStatus;
+        this.payload = payload;
+    }
+
+    public HttpStatusException(int httpStatus, String message, Throwable t) {
+        super(message, t);
+        this.httpStatus = httpStatus;
+        this.payload = null;
+    }
+
+    public int getHttpStatus() {
+        return httpStatus;
+    }
+
+    public Object getPayload() { return payload; }
+}
diff --git a/src/main/java/org/eclipse/openk/core/exceptions/PgmExceptionMapper.java b/src/main/java/org/eclipse/openk/core/exceptions/PgmExceptionMapper.java
new file mode 100644
index 0000000..8e73092
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/exceptions/PgmExceptionMapper.java
@@ -0,0 +1,43 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.exceptions;
+
+import org.apache.http.HttpStatus;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.core.viewmodel.ErrorReturn;
+import org.eclipse.openk.core.viewmodel.GeneralReturnItem;
+
+public final class PgmExceptionMapper {
+    private PgmExceptionMapper() {}
+
+    public static String unknownErrorToJson() {
+        ErrorReturn er = new ErrorReturn();
+        er.setErrorText("Unknown Error");
+        er.setErrorCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        return JsonGeneratorBase.getGson().toJson(er);
+    }
+
+    public static String toJson(HttpStatusException e) {
+            ErrorReturn er = new ErrorReturn();
+            er.setErrorText(e.getMessage());
+        er.setErrorCode(e.getHttpStatus());
+            return JsonGeneratorBase.getGson().toJson(er);
+    }
+
+    public static String getGeneralErrorJson() {
+        return JsonGeneratorBase.getGson().toJson(new GeneralReturnItem("NOK"));
+    }
+
+    public static String getGeneralOKJson() {
+        return JsonGeneratorBase.getGson().toJson(new GeneralReturnItem("OK"));
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/exceptions/PgmNestedException.java b/src/main/java/org/eclipse/openk/core/exceptions/PgmNestedException.java
new file mode 100644
index 0000000..00ad0cd
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/exceptions/PgmNestedException.java
@@ -0,0 +1,38 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.exceptions;
+
+import org.eclipse.openk.core.viewmodel.ErrorReturn;
+
+public class PgmNestedException extends HttpStatusException {
+    private static final long serialVersionUID = 6771249960550163561L;
+    private final ErrorReturn errorReturn;
+
+    public PgmNestedException(ErrorReturn er) {
+        super(er.getErrorCode());
+        errorReturn = er;
+    }
+
+    public PgmNestedException(ErrorReturn er, Throwable t) {
+        super(er.getErrorCode(), "Error message",  t);
+        errorReturn = er;
+    }
+
+    public ErrorReturn getErrorReturn() {
+        return errorReturn;
+    }
+
+    @Override
+    public int getHttpStatus() {
+        return errorReturn.getErrorCode();
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/viewmodel/ErrorReturn.java b/src/main/java/org/eclipse/openk/core/viewmodel/ErrorReturn.java
new file mode 100644
index 0000000..021407b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/viewmodel/ErrorReturn.java
@@ -0,0 +1,34 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.viewmodel;
+
+import java.io.Serializable;
+
+public class ErrorReturn implements Serializable {
+    private static final long serialVersionUID = -1841112315318005840L;
+
+    private String errorText;
+    private int errorCode;
+
+    public String getErrorText() {
+        return errorText;
+    }
+    public void setErrorText(String errorText) {
+        this.errorText = errorText;
+    }
+    public int getErrorCode() {
+        return errorCode;
+    }
+    public void setErrorCode(int errorCode) {
+        this.errorCode = errorCode;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/core/viewmodel/GeneralReturnItem.java b/src/main/java/org/eclipse/openk/core/viewmodel/GeneralReturnItem.java
new file mode 100644
index 0000000..c3480a7
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/core/viewmodel/GeneralReturnItem.java
@@ -0,0 +1,28 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.viewmodel;
+
+
+public class GeneralReturnItem {
+    private String ret;
+
+    public GeneralReturnItem(String ret ) {
+        this.ret = ret;
+}
+    public String getRet() {
+        return ret;
+    }
+
+    public void setRet(String ret) {
+        this.ret = ret;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/AutoCloseEntityManager.java b/src/main/java/org/eclipse/openk/db/dao/AutoCloseEntityManager.java
new file mode 100644
index 0000000..ee158a9
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/AutoCloseEntityManager.java
@@ -0,0 +1,297 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.db.dao;
+
+import java.util.List;
+import java.util.Map;
+import javax.persistence.EntityGraph;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.FlushModeType;
+import javax.persistence.LockModeType;
+import javax.persistence.Query;
+import javax.persistence.StoredProcedureQuery;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaDelete;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.CriteriaUpdate;
+import javax.persistence.metamodel.Metamodel;
+
+public class AutoCloseEntityManager implements EntityManager, AutoCloseable {
+    private EntityManager em;
+
+    public AutoCloseEntityManager(EntityManager entityManager) {
+        em = entityManager;
+    }
+
+    @Override
+    public void persist(Object o) {
+        em.persist(o);
+    }
+
+    @Override
+    public <T> T merge(T t) {
+        return em.merge(t);
+    }
+
+    @Override
+    public void remove(Object o) {
+        em.remove(o);
+    }
+
+    @Override
+    public <T> T find(Class<T> aClass, Object o) {
+        return em.find(aClass, o);
+    }
+
+    @Override
+    public <T> T find(Class<T> aClass, Object o, Map<String, Object> map) {
+        return em.find(aClass, o, map);
+    }
+
+    @Override
+    public <T> T find(Class<T> aClass, Object o, LockModeType lockModeType) {
+        return em.find(aClass, o, lockModeType);
+    }
+
+    @Override
+    public <T> T find(Class<T> aClass, Object o, LockModeType lockModeType, Map<String, Object> map) {
+        return em.find(aClass, o, lockModeType, map);
+    }
+
+    @Override
+    public <T> T getReference(Class<T> aClass, Object o) {
+        return em.getReference(aClass, o);
+    }
+
+    @Override
+    public void flush() {
+        em.flush();
+    }
+
+    @Override
+    public FlushModeType getFlushMode() {
+        return em.getFlushMode();
+    }
+
+    @Override
+    public void setFlushMode(FlushModeType flushModeType) {
+        em.setFlushMode(flushModeType);
+    }
+
+    @Override
+    public void lock(Object o, LockModeType lockModeType) {
+        em.lock(o, lockModeType);
+    }
+
+    @Override
+    public void lock(Object o, LockModeType lockModeType, Map<String, Object> map) {
+        em.lock(o, lockModeType, map);
+    }
+
+    @Override
+    public void refresh(Object o) {
+        em.refresh(o);
+    }
+
+    @Override
+    public void refresh(Object o, Map<String, Object> map) {
+        em.refresh(o, map);
+    }
+
+    @Override
+    public void refresh(Object o, LockModeType lockModeType) {
+        em.refresh(o, lockModeType);
+    }
+
+    @Override
+    public void refresh(Object o, LockModeType lockModeType, Map<String, Object> map) {
+        em.refresh(o, lockModeType, map);
+    }
+
+    @Override
+    public void clear() {
+        em.clear();
+    }
+
+    @Override
+    public void detach(Object o) {
+        em.detach(o);
+    }
+
+    @Override
+    public boolean contains(Object o) {
+        return em.contains(o);
+    }
+
+    @Override
+    public LockModeType getLockMode(Object o) {
+        return em.getLockMode(o);
+    }
+
+    @Override
+    public void setProperty(String s, Object o) {
+        em.setProperty(s, o);
+    }
+
+    @Override
+    public Map<String, Object> getProperties() {
+        return em.getProperties();
+    }
+
+    @Override
+    public Query createQuery(String s) {
+        return em.createQuery(s);
+    }
+
+    @Override
+    public <T> TypedQuery<T> createQuery(CriteriaQuery<T> criteriaQuery) {
+        return em.createQuery(criteriaQuery);
+    }
+
+    @Override
+    public Query createQuery(CriteriaUpdate updateQuery) {
+        return em.createQuery(updateQuery);
+    }
+
+    @Override
+    public Query createQuery(CriteriaDelete deleteQuery) {
+        return em.createQuery(deleteQuery);
+    }
+
+    @Override
+    public <T> TypedQuery<T> createQuery(String s, Class<T> aClass) {
+        return em.createQuery(s, aClass);
+    }
+
+    @Override
+    public Query createNamedQuery(String s) {
+        return em.createNamedQuery(s);
+    }
+
+    @Override
+    public <T> TypedQuery<T> createNamedQuery(String s, Class<T> aClass) {
+        return em.createNamedQuery(s, aClass);
+    }
+
+    @Override
+    public Query createNativeQuery(String s) {
+        return em.createNativeQuery(s);
+    }
+
+    @Override
+    public Query createNativeQuery(String s, Class aClass) {
+        return em.createNativeQuery(s, aClass);
+    }
+
+    @Override
+    public Query createNativeQuery(String s, String s1) {
+        return em.createNativeQuery(s, s1);
+    }
+
+    @Override
+    public StoredProcedureQuery createNamedStoredProcedureQuery(String name) {
+        return em.createNamedStoredProcedureQuery(name);
+    }
+
+    @Override
+    public StoredProcedureQuery createStoredProcedureQuery(String procedureName) {
+        return em.createStoredProcedureQuery(procedureName);
+    }
+
+    @Override
+    public StoredProcedureQuery createStoredProcedureQuery(String procedureName, Class... resultClasses) {
+        return em.createStoredProcedureQuery(procedureName, resultClasses);
+    }
+
+    @Override
+    public StoredProcedureQuery createStoredProcedureQuery(String procedureName, String... resultSetMappings) {
+        return em.createStoredProcedureQuery(procedureName, resultSetMappings);
+    }
+
+    @Override
+    public void joinTransaction() {
+        em.joinTransaction();
+    }
+
+    @Override
+    public boolean isJoinedToTransaction() {
+        return em.isJoinedToTransaction();
+    }
+
+    @Override
+    public <T> T unwrap(Class<T> aClass) {
+        return em.unwrap(aClass);
+    }
+
+    @Override
+    public Object getDelegate() {
+        return em.getDelegate();
+    }
+
+    @Override
+    public void close() {
+        if (em.isOpen()) {
+            if (em.getTransaction().isActive()) {
+                em.getTransaction().rollback();
+            }
+            em.close();
+        }
+    }
+
+    @Override
+    public boolean isOpen() {
+        return em.isOpen();
+    }
+
+    @Override
+    public EntityTransaction getTransaction() {
+        return em.getTransaction();
+    }
+
+    @Override
+    public EntityManagerFactory getEntityManagerFactory() {
+        return em.getEntityManagerFactory();
+    }
+
+    @Override
+    public CriteriaBuilder getCriteriaBuilder() {
+        return em.getCriteriaBuilder();
+    }
+
+    @Override
+    public Metamodel getMetamodel() {
+        return em.getMetamodel();
+    }
+
+    @Override
+    public <T> EntityGraph<T> createEntityGraph(Class<T> rootType) {
+        return em.createEntityGraph(rootType);
+    }
+
+    @Override
+    public EntityGraph<?> createEntityGraph(String graphName) {
+        return em.createEntityGraph(graphName);
+    }
+
+    @Override
+    public EntityGraph<?> getEntityGraph(String graphName) {
+        return em.getEntityGraph(graphName);
+    }
+
+    @Override
+    public <T> List<EntityGraph<? super T>> getEntityGraphs(Class<T> entityClass) {
+        return em.getEntityGraphs(entityClass);
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/EntityHelper.java b/src/main/java/org/eclipse/openk/db/dao/EntityHelper.java
new file mode 100644
index 0000000..7771061
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/EntityHelper.java
@@ -0,0 +1,54 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.db.dao;
+
+import java.util.Map;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+public class EntityHelper {
+    private static String factoryName = null;
+    private static Map<String, Object> properties = null;
+    private static EntityManagerFactory entityManagerFactory;
+
+    private EntityHelper() {
+    }
+
+    public static synchronized void setProperties( Map< String, Object > properties) {
+        EntityHelper.properties = properties;
+    }
+
+    public static synchronized void setFactoryName( String factoryName ) {
+        EntityHelper.factoryName=factoryName;
+    }
+
+    public static synchronized EntityManagerFactory getEMF() {
+        if (factoryName == null  ) {
+            throw new RuntimeException("Entity factory has not been initialized with a factory name!"); // NOSONAR
+        }
+
+        if (entityManagerFactory == null) {
+            entityManagerFactory = createFactory();
+        }
+        return entityManagerFactory;
+    }
+
+    protected static EntityManagerFactory createFactory() {
+        if( properties == null ) {
+            return Persistence.createEntityManagerFactory(factoryName);
+        }
+        else
+        {
+            return Persistence.createEntityManagerFactory(factoryName, properties);
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/GenericDaoJpa.java b/src/main/java/org/eclipse/openk/db/dao/GenericDaoJpa.java
new file mode 100644
index 0000000..81d01b6
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/GenericDaoJpa.java
@@ -0,0 +1,329 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+*/
+
+
+package org.eclipse.openk.db.dao;
+
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityNotFoundException;
+import javax.persistence.Query;
+
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.log4j.Logger;
+import org.apache.log4j.xml.DOMConfigurator;
+import org.eclipse.openk.db.dao.interfaces.IGenericDao;
+
+
+public abstract class GenericDaoJpa<T, I extends Serializable> implements IGenericDao<T, I> {
+
+    public static final Logger LOGGER = Logger.getLogger(GenericDaoJpa.class.getName());
+
+    // Create Entity Manager Factory
+    private EntityManager em = null;
+
+    public GenericDaoJpa() {
+        DOMConfigurator.configureAndWatch("log4j.xml");
+    }
+
+    public GenericDaoJpa(EntityManager em) {
+        super();
+        if (this.em == null) {
+            this.em = em;
+        }
+    }
+
+    @Override
+    public synchronized EntityManager getEM() {
+        if (em == null) {
+            em = EntityHelper.getEMF().createEntityManager();
+        }
+        return em;
+    }
+
+    @Override
+    public T findByIdInTx(final Class<T> persistentClass, final I id) {
+        return getEM().find(persistentClass, id);
+    }
+
+    @Override
+    public T findById(final Class<T> persistentClass, final I id) {
+        getEM().getTransaction().begin();
+        try {
+            final T entity = getEM().find(persistentClass, id);
+
+            getEM().getTransaction().commit();
+
+            return entity;
+        } catch (Exception e) {
+            getEM().getTransaction().rollback();
+            throw e;
+        }
+    }
+
+    @Override
+    public void remove(final T entity, final I id) throws Exception {
+        getEM();
+        try {
+            em.getTransaction().begin();
+            em.find(entity.getClass(), id);
+            em.remove(entity);
+            em.getTransaction().commit();
+            LOGGER.info("Entity with Id " + id + " removed!");
+        } catch (EntityNotFoundException ex) {
+            String errorText = "Entity " + entity.toString() + " with id " + id + " no longer exists! - " + ex.getMessage(); //NOSONAR
+            LOGGER.error(errorText);
+            throw new Exception(errorText); // NOSONAR _fd Legacy Code! Don't touch!
+        } catch (Exception ex) {
+            em.getTransaction().rollback();
+            String errorText = "Error removing " + entity + "; " + ex.getMessage();
+            LOGGER.error(errorText, ex);
+            throw new Exception(errorText); // NOSONAR _fd Legacy Code! Don't touch!
+        } finally {
+            LOGGER.info("GenericDao.remove.finally");
+            em.close();
+        }
+    }
+
+    private void removeInTxInner(final T entity, final I id) throws Exception { // NOSONAR _fd Legacy Code! Don't touch!
+        try {
+            em.getReference(entity.getClass(), id);
+        } catch (EntityNotFoundException ex) {
+            String errorText = "Entity " + entity.toString() + " with id " + id + " no longer exists! - " + ex.getMessage();
+            LOGGER.error(errorText);
+            throw new Exception(errorText); // NOSONAR _fd Legacy Code! Don't touch!
+        }
+    }
+
+    @Override
+    public void removeInTx(final T entity, final I id) throws Exception {
+        getEM();
+        try {
+            this.removeInTxInner(entity, id);
+            em.remove(entity);
+            LOGGER.info("Entity with Id " + id + " removed!");
+        } catch (Exception ex) {
+            String errorText = "Error removing " + entity + "; " + ex.getMessage();
+            LOGGER.error(errorText, ex);
+            throw new Exception(errorText); // NOSONAR _fd Legacy Code! Don't touch!
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public List<T> find(final boolean all, final int maxResult,
+                        final int firstResult) {
+        List<T> entityList;
+        // Returns the persistent class associated wit T.
+        Class<T> persistentClass = getPersistentClass();
+        String persistentClassName = persistentClass.getSimpleName();
+        String selectString = "select t from " + persistentClassName + " t";
+        Query q = em.createQuery(selectString);
+        if (!all) {
+            q.setMaxResults(maxResult);
+            q.setFirstResult(firstResult);
+        }
+        entityList = (List<T>) q.getResultList();
+        LOGGER.info("EntityList with " + entityList.size() + " entries found!");
+        em.close();
+        return entityList;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public List<T> findInTx(final boolean all, final int maxResult,
+                            final int firstResult) {
+        List<T> entityList;
+        // Returns the persistent class associated wit T.
+        Class<T> persistentClass = getPersistentClass();
+        String persistentClassName = persistentClass.getSimpleName();
+        String selectString = "from " + persistentClassName + " t";
+        Query q = em.createQuery(selectString);
+        if (!all) {
+            q.setMaxResults(maxResult);
+            q.setFirstResult(firstResult);
+        }
+        entityList = (List<T>) q.getResultList();
+        LOGGER.info("EntityList with " + entityList.size() + " entries found!");
+        return entityList;
+    }
+
+    @Override
+    public T store(final T entity) throws Exception {
+        T entityNew = null;
+
+        if (isInsert(entity)) {
+            persist(entity);
+        } else {
+            entityNew = merge(entity);
+        }
+        return entityNew;
+    }
+
+    @Override
+    public T storeInTx(final T entity) throws Exception {
+        T entityNew;
+
+        if (isInsert(entity)) {
+            entityNew = persistInTx(entity);
+        } else {
+            entityNew = mergeInTx(entity);
+        }
+        return entityNew;
+    }
+
+    @Override
+    public T persist(final T entity) throws Exception {
+
+        getEM();
+        try {
+            em.getTransaction().begin();
+            em.persist(entity);
+            em.flush();
+            em.refresh(entity);
+            em.getTransaction().commit();
+            LOGGER.info("Entity " + entity + " persisted!");
+            return entity;
+        } catch (Exception ex) {
+            em.getTransaction().rollback();
+            String errorText = "Error persisting " + entity + ": " + ex.getMessage();
+            LOGGER.error(errorText, ex);
+            throw new Exception(errorText); // NOSONAR _fd Legacy Code! Don't touch!
+        } finally {
+            LOGGER.info("GenericDao.persist.finally");
+            em.close();
+        }
+
+    }
+
+    @Override
+    public T persistInTx(final T entity) throws Exception {
+        getEM();
+        try {
+            em.persist(entity);
+            em.flush();
+            em.refresh(entity);
+            LOGGER.info("Entity " + entity + " persisted!");
+            return entity;
+        } catch (Exception ex) {
+            String errorText = "Error persisting in Transaction " + entity + ": " + ex.getMessage();
+            LOGGER.error(errorText, ex);
+            throw new Exception(errorText); // NOSONAR _fd Legacy Code! Don't touch!
+        }
+    }
+
+    @Override
+    public T merge(final T entity) throws Exception {
+        getEM();
+        T entityMerged;
+        try {
+            em.getTransaction().begin();
+            entityMerged = em.merge(entity);
+            em.getTransaction().commit();
+            LOGGER.info("Entity " + entity + " merged!");
+        } catch (Exception ex) {
+            em.getTransaction().rollback();
+            String errorText = "Error merging " + entity + ": " + ex.getMessage();
+            LOGGER.error(errorText, ex);
+            throw new Exception(errorText); // NOSONAR _fd Legacy Code! Don't touch!
+        } finally {
+            LOGGER.info("GenericDao.merge.finally");
+            em.close();
+        }
+
+        return entityMerged;
+    }
+
+    @Override
+    public T mergeInTx(final T entity) throws Exception {
+        getEM();
+        T entityMerged;
+        try {
+            entityMerged = em.merge(entity);
+            LOGGER.info("Entity " + entity + " merged!");
+        } catch (Exception ex) {
+            String errorText = "Error merging in Transaction " + entity + ": " + ex.getMessage();
+            LOGGER.error(errorText, ex);
+            throw new Exception(errorText); // NOSONAR _fd Legacy Code! Don't touch!
+        }
+        return entityMerged;
+    }
+
+    @Override
+    public void startTransaction() {
+        getEM();
+        em.getTransaction().begin();
+    }
+
+    @Override
+    public void commitTransaction() {
+        getEM();
+        em.getTransaction().commit();
+    }
+
+    @Override
+    public void rollbackTransaction() {
+        getEM();
+        em.getTransaction().rollback();
+    }
+
+
+    @Override
+    public void endTransaction() {
+        throw new NotImplementedException();
+    }
+
+
+    @Override
+    public void closeSession() {
+        getEM();
+        em.close();
+    }
+
+
+    private Class<T> getPersistentClass() {
+        @SuppressWarnings("unchecked")
+        Class<T> persistentClass = (Class<T>) ((ParameterizedType) getClass().
+                getGenericSuperclass()).getActualTypeArguments()[0];
+        return persistentClass;
+    }
+
+
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    private boolean isInsert(final T entity) throws Exception { // NOSONAR _fd Legacy Code! Don't touch!
+
+        Class[] noparams = {};
+        Object[] noObjParams = {};
+        Class<T> persistentClass = (Class<T>) entity.getClass();
+        Method m = persistentClass.getDeclaredMethod("getId", noparams);
+        Integer result = (Integer) m.invoke(entity, noObjParams);
+        return result == null;
+    }
+
+    public List<T> refreshModelCollection(List<T> modelCollection) {
+        List<T> result = new ArrayList<>();
+        if (modelCollection != null && !modelCollection.isEmpty()) {
+            em.getEntityManagerFactory().getCache().evict(modelCollection.get(0).getClass());
+            T mergedEntity;
+            for (T entity : modelCollection) {
+                mergedEntity = em.merge(entity);
+                em.refresh(mergedEntity);
+                result.add(mergedEntity);
+            }
+        }
+        return result;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/HTblGridMeasureDao.java b/src/main/java/org/eclipse/openk/db/dao/HTblGridMeasureDao.java
new file mode 100644
index 0000000..0536f38
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/HTblGridMeasureDao.java
@@ -0,0 +1,43 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.HTblGridMeasure;
+import org.eclipse.openk.db.model.TblGridMeasure;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class HTblGridMeasureDao extends GenericDaoJpa<TblGridMeasure, Integer>{
+    public HTblGridMeasureDao() {
+        super();
+    }
+
+    public HTblGridMeasureDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<HTblGridMeasure> getHistoricalGridMeasuresByIdInTx(Integer gmId) {
+        try {
+            String selectString = "from HTblGridMeasure t WHERE t.id = :gmId ORDER BY t.fkRefGmStatus DESC";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter("gmId", gmId);
+
+            return refreshModelCollection(q.getResultList());
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/db/dao/RefBranchDao.java b/src/main/java/org/eclipse/openk/db/dao/RefBranchDao.java
new file mode 100644
index 0000000..c198058
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/RefBranchDao.java
@@ -0,0 +1,39 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.RefBranch;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class RefBranchDao extends GenericDaoJpa<RefBranch, Long>{
+    public RefBranchDao() {
+        super();
+    }
+
+    public RefBranchDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<RefBranch> getBranchesInTx() {
+        try {
+            String selectString = "from RefBranch t";
+            Query q = getEM().createQuery(selectString);
+            return (List<RefBranch>) q.getResultList();
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/RefBranchLevelDao.java b/src/main/java/org/eclipse/openk/db/dao/RefBranchLevelDao.java
new file mode 100644
index 0000000..e2140ed
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/RefBranchLevelDao.java
@@ -0,0 +1,39 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.RefBranchLevel;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class RefBranchLevelDao extends GenericDaoJpa<RefBranchLevel, Integer>{
+    public RefBranchLevelDao() {
+        super();
+    }
+
+    public RefBranchLevelDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<RefBranchLevel> getBranchLevelsInTx() {
+        try {
+            String selectString = "from RefBranchLevel t";
+            Query q = getEM().createQuery(selectString);
+            return (List<RefBranchLevel>) q.getResultList();
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/db/dao/RefCostCenterDao.java b/src/main/java/org/eclipse/openk/db/dao/RefCostCenterDao.java
new file mode 100644
index 0000000..6d37abe
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/RefCostCenterDao.java
@@ -0,0 +1,39 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.RefCostCenter;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class RefCostCenterDao extends GenericDaoJpa<RefCostCenter, Integer>{
+    public RefCostCenterDao() {
+        super();
+    }
+
+    public RefCostCenterDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<RefCostCenter> getCostCentersInTx() {
+        try {
+            String selectString = "from RefCostCenter t";
+            Query q = getEM().createQuery(selectString);
+            return (List<RefCostCenter>) q.getResultList();
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/RefGmStatusDao.java b/src/main/java/org/eclipse/openk/db/dao/RefGmStatusDao.java
new file mode 100644
index 0000000..a3da06e
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/RefGmStatusDao.java
@@ -0,0 +1,39 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.RefGmStatus;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class RefGmStatusDao extends GenericDaoJpa<RefGmStatus, Integer>{
+    public RefGmStatusDao() {
+        super();
+    }
+
+    public RefGmStatusDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<RefGmStatus> getGmStatusInTx() {
+        try {
+            String selectString = "from RefGmStatus t";
+            Query q = getEM().createQuery(selectString);
+            return (List<RefGmStatus>) q.getResultList();
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/db/dao/RefUserDepartmentDao.java b/src/main/java/org/eclipse/openk/db/dao/RefUserDepartmentDao.java
new file mode 100644
index 0000000..697e1b9
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/RefUserDepartmentDao.java
@@ -0,0 +1,39 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.RefUserDepartment;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class RefUserDepartmentDao extends GenericDaoJpa<RefUserDepartmentDao, Integer>{
+    public RefUserDepartmentDao() {
+        super();
+    }
+
+    public RefUserDepartmentDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<RefUserDepartment> getUserDepartmentsInTx() {
+        try {
+            String selectString = "from RefUserDepartment t";
+            Query q = getEM().createQuery(selectString);
+            return (List<RefUserDepartment>) q.getResultList();
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/RefVersionDao.java b/src/main/java/org/eclipse/openk/db/dao/RefVersionDao.java
new file mode 100644
index 0000000..564ad9b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/RefVersionDao.java
@@ -0,0 +1,38 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.db.dao;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import org.eclipse.openk.db.model.RefVersion;
+
+
+public class RefVersionDao extends GenericDaoJpa<RefVersion, Integer> {
+    public RefVersionDao() {
+        super();
+    }
+
+    public RefVersionDao(EntityManager em) {
+        super(em);
+    }
+
+    public RefVersion getVersionInTx() {
+        try {
+            String selectString = "from RefVersion t";
+            Query q = getEM().createQuery(selectString);
+            return (RefVersion) q.getSingleResult();
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null;
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/TblDocumentsDao.java b/src/main/java/org/eclipse/openk/db/dao/TblDocumentsDao.java
new file mode 100644
index 0000000..d746b4b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/TblDocumentsDao.java
@@ -0,0 +1,26 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import javax.persistence.EntityManager;
+import org.eclipse.openk.db.model.TblDocuments;
+
+public class TblDocumentsDao extends GenericDaoJpa<TblDocuments, Integer>{
+    public TblDocumentsDao() {
+        super();
+    }
+
+    public TblDocumentsDao(EntityManager em) {
+        super(em);
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java b/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java
new file mode 100644
index 0000000..4b16cb5
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/TblGridMeasureDao.java
@@ -0,0 +1,113 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.TblGridMeasure;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.LinkedList;
+import java.util.List;
+
+public class TblGridMeasureDao extends GenericDaoJpa<TblGridMeasure, Integer>{
+    public static final String FK_REF_GM_STATUS = "fkRefGmStatus";
+
+    public TblGridMeasureDao() {
+        super();
+    }
+
+    public TblGridMeasureDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<TblGridMeasure> getGridMeasuresInTx() {
+        try {
+            String selectString = "from TblGridMeasure t";
+            Query q = getEM().createQuery(selectString);
+
+            return refreshModelCollection(q.getResultList());
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+
+    public List<String> getAffectedResourcesDistinct( Integer stornoStatus ) {
+        List<String> retList = new LinkedList<>();
+        try {
+            String selectString = "select t.affectedResource from TblGridMeasure t WHERE t.fkRefGmStatus <> :fkRefGmStatus group by t.affectedResource";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter(FK_REF_GM_STATUS, stornoStatus );
+
+            return (List<String>)q.getResultList();
+
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+        }
+        return retList;
+    }
+
+    public List<String> getMailAddressesFromGridmeasures() {
+        List<String> retList = new LinkedList<>();
+        try {
+            String selectString = "select t.emailAddresses from TblGridMeasure t";
+            Query q = getEM().createQuery(selectString);
+
+            return (List<String>)q.getResultList();
+
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+        }
+        return retList;
+    }
+
+    public List<TblGridMeasure> getGridMeasuresByStatusId(Integer statusId) {
+        try {
+            String selectString = "from TblGridMeasure t WHERE t.fkRefGmStatus = :fkRefGmStatus";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter(FK_REF_GM_STATUS, statusId);
+
+            return refreshModelCollection(q.getResultList());
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+
+    public List<TblGridMeasure> getGridMeasuresExcludingStatusInTx(Integer statusId) {
+        try {
+            String selectString = "from TblGridMeasure t WHERE t.fkRefGmStatus != :fkRefGmStatus";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter(FK_REF_GM_STATUS, statusId);
+
+            return refreshModelCollection(q.getResultList());
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+
+    public List<TblGridMeasure> getGridMeasuresExcludingStatusInTx(Integer statusId1, Integer statusId2) {
+        try {
+            String selectString = "from TblGridMeasure t WHERE t.fkRefGmStatus NOT IN (:fkRefGmStatus1, :fkRefGmStatus2)";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter("fkRefGmStatus1", statusId1);
+            q.setParameter("fkRefGmStatus2", statusId2);
+
+            return refreshModelCollection(q.getResultList());
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/db/dao/TblIdCounterDao.java b/src/main/java/org/eclipse/openk/db/dao/TblIdCounterDao.java
new file mode 100644
index 0000000..49e0d66
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/TblIdCounterDao.java
@@ -0,0 +1,51 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import org.apache.http.HttpStatus;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.db.model.TblIdCounter;
+import org.eclipse.openk.db.model.TblLock;
+import org.eclipse.openk.db.model.TblMeasureDocuments;
+
+
+public class TblIdCounterDao extends GenericDaoJpa<TblIdCounter, Integer>{
+    public TblIdCounterDao() {
+        super();
+    }
+
+    public TblIdCounterDao(EntityManager em) {
+        super(em);
+    }
+
+    public TblIdCounter getIdCounterForCounterType(String counterType) throws HttpStatusException {
+        try {
+            String selectString = "from TblIdCounter t WHERE t.counterType  = :counterType";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter("counterType",counterType);
+            if(!q.getResultList().isEmpty()) {
+                return (TblIdCounter) q.getSingleResult();
+            }
+            else {
+                return null;
+            }
+
+        }
+        catch (Exception t) {
+            LOGGER.error("Error in getIdCounterForCounterType",t);
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR, t.getMessage());
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/TblLockDao.java b/src/main/java/org/eclipse/openk/db/dao/TblLockDao.java
new file mode 100644
index 0000000..7214bbe
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/TblLockDao.java
@@ -0,0 +1,59 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.TblLock;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.LinkedList;
+import java.util.List;
+
+public class TblLockDao extends GenericDaoJpa<TblLock, Integer>{
+    public TblLockDao() {
+        super();
+    }
+
+    public TblLockDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<TblLock> getLocksInTx() {
+        try {
+            String selectString = "from TblLock t";
+            Query q = getEM().createQuery(selectString);
+            return (List<TblLock>) q.getResultList();
+        } catch (Exception t) {
+            LOGGER.error("Caught exception", t);
+            return new LinkedList<>();
+        }
+    }
+
+    public TblLock getLock(Integer key, String info) {
+        try {
+            String selectString = "from TblLock t WHERE t.key = :key and t.info = :info";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter("key", key);
+            q.setParameter("info", info);
+
+            if(!q.getResultList().isEmpty()) {
+                return (TblLock) q.getSingleResult();
+            }
+            else {
+                return null;
+            }
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null;
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/TblMeasureDocumentsDao.java b/src/main/java/org/eclipse/openk/db/dao/TblMeasureDocumentsDao.java
new file mode 100644
index 0000000..deeb2f4
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/TblMeasureDocumentsDao.java
@@ -0,0 +1,70 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.apache.http.HttpStatus;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.db.model.TblMeasureDocuments;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+
+public class TblMeasureDocumentsDao extends GenericDaoJpa<TblMeasureDocuments, Integer>{
+    public TblMeasureDocumentsDao() {
+        super();
+    }
+
+    public TblMeasureDocumentsDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<TblMeasureDocuments> getAllTblMeasureDocumentsById(int gridmeasuereId) throws HttpStatusException {
+        try {
+            String selectString = "from TblMeasureDocuments t WHERE t.fkTblMeasure = :fkTblMeasure";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter("fkTblMeasure",gridmeasuereId);
+            return (List<TblMeasureDocuments>) q.getResultList();
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR, t.getMessage());
+        }
+
+    }
+
+    public List<TblMeasureDocuments> getMeasureDocumentByDocumentId(int documentId) throws HttpStatusException {
+        try {
+            String selectString = "from TblMeasureDocuments t WHERE t.tblDocuments.id  = :tblDocuments";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter("tblDocuments",documentId);
+
+            if(!q.getResultList().isEmpty()) {
+                return (List<TblMeasureDocuments>) q.getResultList();
+            }
+            else {
+                String errText = "No documentMeasure Result available for the given documentId";
+                LOGGER.info(errText);
+                throw new HttpStatusException(HttpStatus.SC_NOT_FOUND);
+            }
+
+        }
+        catch (HttpStatusException se) {
+            LOGGER.error("getMeasureDocumentByDocumentId", se);
+            throw new HttpStatusException(se.getHttpStatus());
+        }
+        catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR, t.getMessage());
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/TblSingleGridmeasureDao.java b/src/main/java/org/eclipse/openk/db/dao/TblSingleGridmeasureDao.java
new file mode 100644
index 0000000..63a7dc6
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/TblSingleGridmeasureDao.java
@@ -0,0 +1,108 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.TblSingleGridmeasure;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class TblSingleGridmeasureDao extends GenericDaoJpa<TblSingleGridmeasure, Integer>{
+    public TblSingleGridmeasureDao() {
+        super();
+    }
+
+    public TblSingleGridmeasureDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<TblSingleGridmeasure> getSingleGridmeasuresInTx() {
+        try {
+            String selectString = "from TblSingleGridmeasure t";
+            Query q = getEM().createQuery(selectString);
+
+            return refreshModelCollection(q.getResultList());
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+
+    public List<TblSingleGridmeasure> getSingleGridmeasuresByGmIdInTx(Integer gmId) {
+        try {
+            String selectString = "from TblSingleGridmeasure t WHERE t.fkTblGridmeasure = :gmId ORDER BY t.sortorder";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter("gmId", gmId);
+
+            return q.getResultList();
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+
+ /*   public TblSingleGridmeasure storeSingleGm(TblSingleGridmeasure newTblSg, String changeUser) throws HttpStatusException{
+        getEM().getTransaction().begin();
+
+        newTblSg.setModUser(changeUser);
+        newTblSg.setModDate(Date.from(Instant.now()));
+        if( newTblSg.getCreateDate() == null ) {
+            newTblSg.setCreateDate(newTblSg.getModDate());
+        }
+        TblSingleGridmeasure ret = null;
+        if( newTblSg.getId() == null ) {
+            ret = createSinglemeasureInDb(newTblSg);
+        }
+        else {
+            TblSingleGridmeasure aktSg = findByIdInTx(TblSingleGridmeasure.class, newTblSg.getId());
+            if( aktSg != null) {
+                // entity should exist before it is updated
+                newTblSg.setCreateDate(aktSg.getCreateDate());
+                newTblSg.setCreateUser(aktSg.getCreateUser());
+                newTblSg.setId(aktSg.getId());
+
+                ret = updateSingleGridmeasureInDb(newTblSg);
+            }
+            else {
+                String errText = "Cannot update an entity that does not exist. ID="+newTblSg.getId();
+                LOGGER.error(errText);
+                throw new HttpStatusException(HttpStatus.SC_NOT_FOUND, errText) ;
+            }
+        }
+
+        getEM().getTransaction().commit();
+        return ret;
+    }
+
+    private TblSingleGridmeasure createSinglemeasureInDb(TblSingleGridmeasure tblSgm) throws HttpStatusException{
+        tblSgm.setCreateDate(Date.from(Instant.now()));
+        tblSgm.setCreateUser(tblSgm.getModUser());
+
+        return updateSingleGridmeasureInDb(tblSgm);
+    }
+
+    private TblSingleGridmeasure updateSingleGridmeasureInDb(TblSingleGridmeasure tblSgm) throws HttpStatusException{
+        try {
+            return mergeInTx(tblSgm);
+
+        } catch (Exception e) {
+            String errorText = tblSgm != null ?
+                    "Error storing singleGridmeasureEntity:" + JsonGeneratorBase.getGson().toJson(tblSgm) :
+                    "Cannot store empty gridMeasure";
+
+            LOGGER.error(errorText, e);
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }*/
+}
+
diff --git a/src/main/java/org/eclipse/openk/db/dao/TblStepsDao.java b/src/main/java/org/eclipse/openk/db/dao/TblStepsDao.java
new file mode 100644
index 0000000..827da88
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/TblStepsDao.java
@@ -0,0 +1,55 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.eclipse.openk.db.model.TblSteps;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class TblStepsDao extends GenericDaoJpa<TblSteps, Integer>{
+    public TblStepsDao() {
+        super();
+    }
+
+    public TblStepsDao(EntityManager em) {
+        super(em);
+    }
+
+    public List<TblSteps> getStepsInTx() {
+        try {
+            String selectString = "from TblSteps t";
+            Query q = getEM().createQuery(selectString);
+
+            return refreshModelCollection(q.getResultList());
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+
+    public List<TblSteps> getStepsBySingleGmIdInTx(Integer singleGmId) {
+        try {
+            String selectString = "from TblSteps t WHERE t.fkTblSingleGridmeasure = :singleGmId ORDER BY t.sortorder";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter("singleGmId", singleGmId);
+
+            return q.getResultList();
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            return null; // NOSONAR We decide to use null logic
+        }
+    }
+
+}
+
diff --git a/src/main/java/org/eclipse/openk/db/dao/TblUserSettingsDao.java b/src/main/java/org/eclipse/openk/db/dao/TblUserSettingsDao.java
new file mode 100644
index 0000000..884e7f3
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/TblUserSettingsDao.java
@@ -0,0 +1,88 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.dao;
+
+import org.apache.http.HttpStatus;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.db.model.TblUserSettings;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.time.Instant;
+import java.util.Date;
+
+public class TblUserSettingsDao extends GenericDaoJpa<TblUserSettings, Integer>{
+    public TblUserSettingsDao() {
+        super();
+    }
+
+    public TblUserSettingsDao(EntityManager em) {
+        super(em);
+    }
+
+    public TblUserSettings getUserSettingsBySettingType(String username, String settingType) throws HttpStatusException{
+        try {
+            String selectString = "from TblUserSettings t WHERE t.username = :username and t.settingType = :settingType";
+            Query q = getEM().createQuery(selectString);
+            q.setParameter("username",username);
+            q.setParameter("settingType",settingType);
+
+            if(!q.getResultList().isEmpty()) {
+                return (TblUserSettings) q.getSingleResult();
+            }
+            else {
+                String errText = "No Result available for the given username and settingType";
+                LOGGER.info(errText);
+                return new TblUserSettings();
+            }
+
+        } catch (Exception t) {
+            LOGGER.error(t.getMessage());
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR, t.getMessage());
+        }
+    }
+
+    public TblUserSettings updateUserSettingsInDB(TblUserSettings tblUsUpdate, TblUserSettings tblUsDB)  throws HttpStatusException{
+
+        tblUsUpdate.setCreateDate(tblUsDB.getCreateDate());
+        tblUsUpdate.setCreateUser(tblUsDB.getCreateUser());
+        tblUsUpdate.setId(tblUsDB.getId());
+
+        try {
+            return this.storeInTx(tblUsUpdate);
+
+        } catch (Exception e) {
+            String errorText = tblUsUpdate != null ? // NOSONAR
+                    "Error storing userSettings:" + JsonGeneratorBase.getGson().toJson(tblUsUpdate) :
+                    "Cannot store empty userSettings";
+
+            LOGGER.error(errorText, e);
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    public TblUserSettings createUserSettingsInDb(String changeUser, TblUserSettings tblUs) throws HttpStatusException{
+        try {
+            tblUs.setCreateUser(changeUser);
+            tblUs.setCreateDate(Date.from(Instant.now()));
+            return this.storeInTx(tblUs);
+
+        } catch (Exception e) {
+            String errorText = tblUs != null ? // NOSONAR Sonar is too eager here! Condition not always true
+                    "Error storing UserSettings Entity:" + JsonGeneratorBase.getGson().toJson(tblUs) :
+                    "Cannot store empty UserSettings";
+            LOGGER.error(errorText, e);
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/dao/interfaces/IGenericDao.java b/src/main/java/org/eclipse/openk/db/dao/interfaces/IGenericDao.java
new file mode 100644
index 0000000..332f8d6
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/dao/interfaces/IGenericDao.java
@@ -0,0 +1,85 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.db.dao.interfaces;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.persistence.EntityManager;
+
+public interface IGenericDao<T, I extends Serializable> {
+
+
+    T findById(Class<T> persistentClass, I id);
+
+    T findByIdInTx(Class<T> persistentClass, I id);
+
+    T store(T persistentObject) throws Exception; // NOSONAR _fd Legacy Code! Don't touch!
+
+    T storeInTx(T persistentObject) throws Exception; // NOSONAR _fd Legacy Code! Don't touch!
+
+    T persist(T persistentObject) throws Exception; // NOSONAR _fd Legacy Code! Don't touch!
+
+    T persistInTx(T persistentObject) throws Exception; // NOSONAR _fd Legacy Code! Don't touch!
+
+    T merge(T persistentObject) throws Exception; // NOSONAR _fd Legacy Code! Don't touch!
+
+    T mergeInTx(T persistentObject) throws Exception; // NOSONAR _fd Legacy Code! Don't touch!
+
+    void remove(T persistentObject, I id) throws Exception; // NOSONAR _fd Legacy Code! Don't touch!
+
+    void removeInTx(T persistentObject, I id) throws Exception; // NOSONAR _fd Legacy Code! Don't touch!
+
+    List<T> find(boolean all, int maxResult, int firstResult);
+
+    List<T> findInTx(boolean all, int maxResult, int firstResult);
+
+    EntityManager getEM();
+
+    void startTransaction();
+
+    void endTransaction();
+
+    void commitTransaction();
+
+    void rollbackTransaction();
+
+    void closeSession();
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/org/eclipse/openk/db/model/HTblGridMeasure.java b/src/main/java/org/eclipse/openk/db/model/HTblGridMeasure.java
new file mode 100644
index 0000000..321e374
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/HTblGridMeasure.java
@@ -0,0 +1,314 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * The persistent class for the "HTBL_GRIDMEASURE" database table.
+ */
+@Entity
+@Table(name = "HTBL_GRIDMEASURE", schema = "public")
+@NamedQuery(name = "HTblGridMeasure.findAll", query = "SELECT t FROM HTblGridMeasure t")
+public class HTblGridMeasure implements Serializable{
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "HTBL_GRIDMEASURE_ID_SEQ")
+    @SequenceGenerator(name = "HTBL_GRIDMEASURE_ID_SEQ", sequenceName = "HTBL_GRIDMEASURE_ID_SEQ", allocationSize = 1)
+    @Column(name = "hid", updatable = false)
+    private Integer hId;
+
+    @Column(name = "haction")
+    private Integer hAction;
+
+    @Column(name = "hdate")
+    private Date hDate;
+
+    @Column(name = "huser")
+    private String hUser;
+
+    @Column(name = "id")
+    private Integer id;
+
+    @Column(name = "id_descriptive")
+    private String idDescriptive;
+
+    @Column(name = "title")
+    private String title;
+
+    @Column(name = "affected_resource")
+    private String affectedResource;
+
+    @Column(name = "remark")
+    private String remark;
+
+    @Column(name = "fk_ref_gm_status")
+    private Integer fkRefGmStatus;
+
+    @Column (name= "switching_object")
+    private String switchingObject;
+
+    @Column (name= "cost_center")
+    private String costCenter;
+
+    @Column (name= "responsible_onsite_name")
+    private String responsibleOnSiteName;
+
+    @Column (name= "responsible_onsite_department")
+    private String responsibleOnSiteDepartment;
+
+    @Column (name= "approval_by")
+    private String approvalBy;
+
+    @Column (name= "area_of_switching")
+    private String areaOfSwitching;
+
+    @Column (name= "appointment_repetition")
+    private String appointmentRepetition;
+
+    @Column (name= "appointment_startdate")
+    private Date appointmentStartdate;
+
+    @Column (name= "appointment_numberof")
+    private Integer appointmentNumberOf;
+
+    @Column (name= "planned_starttime_first_sequence")
+    private Date plannedStarttimeFirstSequence;
+
+    @Column (name= "planned_starttime_first_singlemeasure")
+    private Date plannedStarttimeFirstSinglemeasure;
+
+    @Column (name= "planned_endtime_last_singlemeasure")
+    private Date plannedEndtimeLastSinglemeasure;
+
+    @Column (name= "planned_endtime_gridmeasure")
+    private Date plannedEndtimeGridmeasure;
+
+    @Column (name= "starttime_first_sequence")
+    private Date starttimeFirstSequence;
+
+    @Column (name= "starttime_first_singlemeasure")
+    private Date starttimeFirstSinglemeasure;
+
+    @Column (name= "endtime_last_singlemeasure")
+    private Date endtimeLastSinglemeasure;
+
+    @Column (name= "endtime_gridmeasure")
+    private Date endtimeGridmeasure;
+
+    @Column (name= "time_of_reallocation")
+    private String timeOfReallocation;
+
+    @Column (name= "description")
+    private String description;
+
+    @Column (name= "fk_ref_branch")
+    private Integer fkRefBranch;
+
+    @Column (name= "fk_ref_branch_level")
+    private Integer fkRefBranchLevel;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_user_department")
+    private String createUserDepartment;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_user_department")
+    private String modUserDepartment;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+
+    public Integer gethAction() {
+        return hAction;
+    }
+
+    public void sethAction(Integer hAction) {
+        this.hAction = hAction;
+    }
+
+    public Date gethDate() {
+        return hDate;
+    }
+
+    public void sethDate(Date hDate) {
+        this.hDate = hDate;
+    }
+
+    public String gethUser() {
+        return hUser;
+    }
+
+    public void sethUser(String hUser) {
+        this.hUser = hUser;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getHId() { return this.hId; }
+
+    public void setHId(Integer hId) { this.hId = hId; }
+
+    public String getTitle() { return title; }
+
+    public void setTitle(String title) { this.title = title; }
+
+    public String getAffectedResource() { return affectedResource; }
+
+    public void setAffectedResource(String affectedResource) { this.affectedResource = affectedResource; }
+
+    public String getRemark() { return remark; }
+
+    public void setRemark(String remark) { this.remark = remark; }
+
+    public Integer getFkRefGmStatus() { return fkRefGmStatus; }
+
+    public void setFkRefGmStatus(Integer fkRefGmStatus) { this.fkRefGmStatus = fkRefGmStatus; }
+
+    public String getIdDescriptive() { return idDescriptive; }
+
+    public void setIdDescriptive(String idDescriptive) { this.idDescriptive = idDescriptive; }
+
+    public String getSwitchingObject() { return switchingObject; }
+
+    public void setSwitchingObject(String switchingObject) { this.switchingObject = switchingObject; }
+
+    public String getCostCenter() { return costCenter; }
+
+    public void setCostCenter(String costCenter) { this.costCenter = costCenter; }
+
+    public String getResponsibleOnSiteName() { return responsibleOnSiteName; }
+
+    public void setResponsibleOnSiteName(String responsibleOnSiteName) { this.responsibleOnSiteName = responsibleOnSiteName; }
+
+    public String getResponsibleOnSiteDepartment() { return responsibleOnSiteDepartment; }
+
+    public void setResponsibleOnSiteDepartment(String responsibleOnSiteDepartment) { this.responsibleOnSiteDepartment = responsibleOnSiteDepartment; }
+
+    public String getApprovalBy() { return approvalBy; }
+
+    public void setApprovalBy(String approvalBy) { this.approvalBy = approvalBy; }
+
+    public String getAreaOfSwitching() { return areaOfSwitching; }
+
+    public void setAreaOfSwitching(String areaOfSwitching) { this.areaOfSwitching = areaOfSwitching; }
+
+    public String getAppointmentRepetition() { return appointmentRepetition; }
+
+    public void setAppointmentRepetition(String appointmentRepetition) { this.appointmentRepetition = appointmentRepetition; }
+
+    public Date getAppointmentStartdate() { return appointmentStartdate; }
+
+    public void setAppointmentStartdate(Date appointmentStartdate) { this.appointmentStartdate = appointmentStartdate; }
+
+    public Integer getAppointmentNumberOf() { return appointmentNumberOf; }
+
+    public void setAppointmentNumberOf(Integer appointmentNumberOf) { this.appointmentNumberOf = appointmentNumberOf; }
+
+    public Date getPlannedStarttimeFirstSequence() { return plannedStarttimeFirstSequence; }
+
+    public void setPlannedStarttimeFirstSequence(Date plannedStarttimeFirstSequence) { this.plannedStarttimeFirstSequence = plannedStarttimeFirstSequence; }
+
+    public Date getPlannedStarttimeFirstSinglemeasure() { return plannedStarttimeFirstSinglemeasure; }
+
+    public void setPlannedStarttimeFirstSinglemeasure(Date plannedStarttimeFirstSinglemeasure) { this.plannedStarttimeFirstSinglemeasure = plannedStarttimeFirstSinglemeasure; }
+
+    public Date getPlannedEndtimeLastSinglemeasure() { return plannedEndtimeLastSinglemeasure; }
+
+    public void setPlannedEndtimeLastSinglemeasure(Date plannedEndtimeLastSinglemeasure) { this.plannedEndtimeLastSinglemeasure = plannedEndtimeLastSinglemeasure; }
+
+    public Date getPlannedEndtimeGridmeasure() { return plannedEndtimeGridmeasure; }
+
+    public void setPlannedEndtimeGridmeasure(Date plannedEndtimeGridmeasure) { this.plannedEndtimeGridmeasure = plannedEndtimeGridmeasure; }
+
+    public Date getStarttimeFirstSequence() { return starttimeFirstSequence; }
+
+    public void setStarttimeFirstSequence(Date starttimeFirstSequence) { this.starttimeFirstSequence = starttimeFirstSequence; }
+
+    public Date getStarttimeFirstSinglemeasure() { return starttimeFirstSinglemeasure; }
+
+    public void setStarttimeFirstSinglemeasure(Date starttimeFirstSinglemeasure) { this.starttimeFirstSinglemeasure = starttimeFirstSinglemeasure; }
+
+    public Date getEndtimeLastSinglemeasure() { return endtimeLastSinglemeasure; }
+
+    public void setEndtimeLastSinglemeasure(Date endtimeLastSinglemeasure) { this.endtimeLastSinglemeasure = endtimeLastSinglemeasure; }
+
+    public Date getEndtimeGridmeasure() { return endtimeGridmeasure; }
+
+    public void setEndtimeGridmeasure(Date endtimeGridmeasure) { this.endtimeGridmeasure = endtimeGridmeasure; }
+
+    public String getTimeOfReallocation() { return timeOfReallocation; }
+
+    public void setTimeOfReallocation(String timeOfReallocation) { this.timeOfReallocation = timeOfReallocation; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public Integer getFkRefBranch() { return fkRefBranch; }
+
+    public void setFkRefBranch(Integer fkRefBranch) { this.fkRefBranch = fkRefBranch; }
+
+    public Integer getFkRefBranchLevel() { return fkRefBranchLevel; }
+
+    public void setFkRefBranchLevel(Integer fkRefBranchLevel) { this.fkRefBranchLevel = fkRefBranchLevel; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public String getCreateUserDepartment() { return createUserDepartment; }
+
+    public void setCreateUserDepartment(String createUserDepartment) { this.createUserDepartment = createUserDepartment; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public String getModUserDepartment() { return modUserDepartment; }
+
+    public void setModUserDepartment(String modUserDepartment) { this.modUserDepartment = modUserDepartment; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+
+}
diff --git a/src/main/java/org/eclipse/openk/db/model/RefBranch.java b/src/main/java/org/eclipse/openk/db/model/RefBranch.java
new file mode 100644
index 0000000..7eb9d78
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/RefBranch.java
@@ -0,0 +1,92 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * The persistent class for the "REF_BRANCH database table.
+ */
+@Entity
+@Table(name = "ref_branch", schema = "public")
+@NamedQuery(name = "RefBranch.findAll", query = "SELECT r FROM RefBranch r")
+public class RefBranch implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "REF_BRANCH_ID_SEQ")
+    @SequenceGenerator(name = "REF_BRANCH_ID_SEQ", sequenceName = "REF_BRANCH_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "name")
+    private String name;
+
+    @Column(name = "description")
+    private String description;
+
+    @Column(name = "color_code")
+    private String colorCode;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public String getColorCode() { return colorCode; }
+
+    public void setColorCode(String colorCode) { this.colorCode = colorCode; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/db/model/RefBranchLevel.java b/src/main/java/org/eclipse/openk/db/model/RefBranchLevel.java
new file mode 100644
index 0000000..fe613d0
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/RefBranchLevel.java
@@ -0,0 +1,93 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * The persistent class for the "REF_BRANCH_LEVEL database table.
+ */
+@Entity
+@Table(name = "ref_branch_level", schema = "public")
+@NamedQuery(name = "RefBranchLevel.findAll", query = "SELECT r FROM RefBranchLevel r")
+public class RefBranchLevel implements Serializable{
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "REF_BRANCH_LEVEL_ID_SEQ")
+    @SequenceGenerator(name = "REF_BRANCH_LEVEL_ID_SEQ", sequenceName = "REF_BRANCH_LEVEL_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "name")
+    private String name;
+
+    @Column(name = "description")
+    private String description;
+
+    @Column(name = "fk_ref_branch")
+    private Integer fkRefBranch;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public Integer getFkRefBranch() { return fkRefBranch; }
+
+    public void setFkRefBranch(Integer fkRefBranch) { this.fkRefBranch = fkRefBranch; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+}
diff --git a/src/main/java/org/eclipse/openk/db/model/RefCostCenter.java b/src/main/java/org/eclipse/openk/db/model/RefCostCenter.java
new file mode 100644
index 0000000..68fb572
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/RefCostCenter.java
@@ -0,0 +1,84 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * The persistent class for the "REF_COST_CENTER database table.
+ */
+@Entity
+@Table(name = "ref_cost_center", schema = "public")
+@NamedQuery(name = "RefCostCenter.findAll", query = "SELECT r FROM RefCostCenter r")
+public class RefCostCenter implements Serializable{
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "REF_COST_CENTER_ID_SEQ")
+    @SequenceGenerator(name = "REF_COST_CENTER_ID_SEQ", sequenceName = "REF_COST_CENTER_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "name")
+    private String name;
+
+    @Column(name = "description")
+    private String description;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+}
diff --git a/src/main/java/org/eclipse/openk/db/model/RefGmStatus.java b/src/main/java/org/eclipse/openk/db/model/RefGmStatus.java
new file mode 100644
index 0000000..e702d8b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/RefGmStatus.java
@@ -0,0 +1,78 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * The persistent class for the "REF_GM_STATUS database table.
+ */
+@Entity
+@Table(name = "ref_gm_status", schema = "public")
+@NamedQuery(name = "RefGmStatus.findAll", query = "SELECT r FROM RefGmStatus r")
+public class RefGmStatus implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "REF_GM_STATUS_ID_SEQ")
+    @SequenceGenerator(name = "REF_GM_STATUS_ID_SEQ", sequenceName = "REF_GM_STATUS_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "name")
+    private String name;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/db/model/RefUserDepartment.java b/src/main/java/org/eclipse/openk/db/model/RefUserDepartment.java
new file mode 100644
index 0000000..87099c6
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/RefUserDepartment.java
@@ -0,0 +1,75 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * The persistent class for the "REF_USER_DEPARTMENT database table.
+ */
+@Entity
+@Table(name = "ref_user_department", schema = "public")
+@NamedQuery(name = "RefUserDepartment.findAll", query = "SELECT r FROM RefUserDepartment r")
+public class RefUserDepartment {
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "REF_USER_DEPARTMENT_ID_SEQ")
+    @SequenceGenerator(name = "REF_USER_DEPARTMENT_ID_SEQ", sequenceName = "REF_USER_DEPARTMENT_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "name")
+    private String name;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getName() { return name; }
+
+    public void setName(String name) { this.name = name; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+}
diff --git a/src/main/java/org/eclipse/openk/db/model/RefVersion.java b/src/main/java/org/eclipse/openk/db/model/RefVersion.java
new file mode 100644
index 0000000..d58b13d
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/RefVersion.java
@@ -0,0 +1,57 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+
+/**
+ * The persistent class for the "REF_VERSION" database table.
+ */
+@Entity
+@Table(name = "ref_version", schema = "public")
+@NamedQuery(name = "RefVersion.findAll", query = "SELECT r FROM RefVersion r")
+public class RefVersion implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "id")
+    private Integer id;
+
+    @Column(name = "version")
+    private String version;
+
+    public Integer getId() {
+        return this.id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getVersion() {
+        return this.version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/db/model/TblDocuments.java b/src/main/java/org/eclipse/openk/db/model/TblDocuments.java
new file mode 100644
index 0000000..cbff55e
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/TblDocuments.java
@@ -0,0 +1,109 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "tbl_documents", schema = "public")
+@NamedQuery(name = "TblDocuments.findAll", query = "SELECT r FROM TblDocuments r")
+public class TblDocuments implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TBL_DOCUMENTS_ID_SEQ")
+    @SequenceGenerator(name = "TBL_DOCUMENTS_ID_SEQ", sequenceName = "TBL_DOCUMENTS_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "document_name")
+    private String documentName;
+
+    @Column(name = "document")
+    private byte[] document;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getDocumentName() {
+        return documentName;
+    }
+
+    public void setDocumentName(String documentName) {
+        this.documentName = documentName;
+    }
+
+    public byte[] getDocument() {
+        return document;
+    }
+
+    public void setDocument(byte[] document) {
+        this.document = document;
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getModUser() {
+        return modUser;
+    }
+
+    public void setModUser(String modUser) {
+        this.modUser = modUser;
+    }
+
+    public Date getModDate() {
+        return modDate;
+    }
+
+    public void setModDate(Date modDate) {
+        this.modDate = modDate;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/model/TblGridMeasure.java b/src/main/java/org/eclipse/openk/db/model/TblGridMeasure.java
new file mode 100644
index 0000000..868a619
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/TblGridMeasure.java
@@ -0,0 +1,270 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.*;
+
+/**
+ * The persistent class for the "TBL_GRIDMEASURE" database table.
+ */
+@Entity
+@Table(name = "TBL_GRIDMEASURE", schema = "public")
+@NamedQuery(name = "TblGridMeasure.findAll", query = "SELECT t FROM TblGridMeasure t")
+public class TblGridMeasure implements Serializable{
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TBL_GRIDMEASURE_ID_SEQ")
+    @SequenceGenerator(name = "TBL_GRIDMEASURE_ID_SEQ", sequenceName = "TBL_GRIDMEASURE_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "id_descriptive")
+    private String idDescriptive;
+
+    @Column(name = "title")
+    private String title;
+
+    @Column(name = "affected_resource")
+    private String affectedResource;
+
+    @Column(name = "remark")
+    private String remark;
+
+    @Column(name = "email_addresses")
+    private String emailAddresses;
+
+    @Column(name = "fk_ref_gm_status")
+    private Integer fkRefGmStatus;
+
+    @Column (name= "switching_object")
+    private String switchingObject;
+
+    @Column (name= "cost_center")
+    private String costCenter;
+
+    @Column (name= "responsible_onsite_name")
+    private String responsibleOnSiteName;
+
+    @Column (name= "responsible_onsite_department")
+    private String responsibleOnSiteDepartment;
+
+    @Column (name= "approval_by")
+    private String approvalBy;
+
+    @Column (name= "area_of_switching")
+    private String areaOfSwitching;
+
+    @Column (name= "appointment_repetition")
+    private String appointmentRepetition;
+
+    @Column (name= "appointment_startdate")
+    private Date appointmentStartdate;
+
+    @Column (name= "appointment_numberof")
+    private Integer appointmentNumberOf;
+
+    @Column (name= "planned_starttime_first_sequence")
+    private Date plannedStarttimeFirstSequence;
+
+    @Column (name= "planned_starttime_first_singlemeasure")
+    private Date plannedStarttimeFirstSinglemeasure;
+
+    @Column (name= "planned_endtime_last_singlemeasure")
+    private Date plannedEndtimeLastSinglemeasure;
+
+    @Column (name= "planned_endtime_gridmeasure")
+    private Date plannedEndtimeGridmeasure;
+
+    @Column (name= "starttime_first_sequence")
+    private Date starttimeFirstSequence;
+
+    @Column (name= "starttime_first_singlemeasure")
+    private Date starttimeFirstSinglemeasure;
+
+    @Column (name= "endtime_last_singlemeasure")
+    private Date endtimeLastSinglemeasure;
+
+    @Column (name= "endtime_gridmeasure")
+    private Date endtimeGridmeasure;
+
+    @Column (name= "time_of_reallocation")
+    private String timeOfReallocation;
+
+    @Column (name= "description")
+    private String description;
+
+    @Column (name= "fk_ref_branch")
+    private Integer fkRefBranch;
+
+    @Column (name= "fk_ref_branch_level")
+    private Integer fkRefBranchLevel;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_user_department")
+    private String createUserDepartment;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_user_department")
+    private String modUserDepartment;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+
+    public Integer getId() { return this.id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getTitle() { return title; }
+
+    public void setTitle(String title) { this.title = title; }
+
+    public String getAffectedResource() { return affectedResource; }
+
+    public void setAffectedResource(String affectedResource) { this.affectedResource = affectedResource; }
+
+    public String getRemark() { return remark; }
+
+    public void setRemark(String remark) { this.remark = remark; }
+
+    public String getEmailAddresses() { return emailAddresses; }
+
+    public void setEmailAddresses(String emailAddresses) { this.emailAddresses = emailAddresses; }
+
+    public Integer getFkRefGmStatus() { return fkRefGmStatus; }
+
+    public void setFkRefGmStatus(Integer fkRefGmStatus) { this.fkRefGmStatus = fkRefGmStatus; }
+
+    public String getIdDescriptive() { return idDescriptive; }
+
+    public void setIdDescriptive(String idDescriptive) { this.idDescriptive = idDescriptive; }
+
+    public String getSwitchingObject() { return switchingObject; }
+
+    public void setSwitchingObject(String switchingObject) { this.switchingObject = switchingObject; }
+
+    public String getCostCenter() { return costCenter; }
+
+    public void setCostCenter(String costCenter) { this.costCenter = costCenter; }
+
+    public String getResponsibleOnSiteName() { return responsibleOnSiteName; }
+
+    public void setResponsibleOnSiteName(String responsibleOnSiteName) { this.responsibleOnSiteName = responsibleOnSiteName; }
+
+    public String getResponsibleOnSiteDepartment() { return responsibleOnSiteDepartment; }
+
+    public void setResponsibleOnSiteDepartment(String responsibleOnSiteDepartment) { this.responsibleOnSiteDepartment = responsibleOnSiteDepartment; }
+
+    public String getApprovalBy() { return approvalBy; }
+
+    public void setApprovalBy(String approvalBy) { this.approvalBy = approvalBy; }
+
+    public String getAreaOfSwitching() { return areaOfSwitching; }
+
+    public void setAreaOfSwitching(String areaOfSwitching) { this.areaOfSwitching = areaOfSwitching; }
+
+    public String getAppointmentRepetition() { return appointmentRepetition; }
+
+    public void setAppointmentRepetition(String appointmentRepetition) { this.appointmentRepetition = appointmentRepetition; }
+
+    public Date getAppointmentStartdate() { return appointmentStartdate; }
+
+    public void setAppointmentStartdate(Date appointmentStartdate) { this.appointmentStartdate = appointmentStartdate; }
+
+    public Integer getAppointmentNumberOf() { return appointmentNumberOf; }
+
+    public void setAppointmentNumberOf(Integer appointmentNumberOf) { this.appointmentNumberOf = appointmentNumberOf; }
+
+    public Date getPlannedStarttimeFirstSequence() { return plannedStarttimeFirstSequence; }
+
+    public void setPlannedStarttimeFirstSequence(Date plannedStarttimeFirstSequence) { this.plannedStarttimeFirstSequence = plannedStarttimeFirstSequence; }
+
+    public Date getPlannedStarttimeFirstSinglemeasure() { return plannedStarttimeFirstSinglemeasure; }
+
+    public void setPlannedStarttimeFirstSinglemeasure(Date plannedStarttimeFirstSinglemeasure) { this.plannedStarttimeFirstSinglemeasure = plannedStarttimeFirstSinglemeasure; }
+
+    public Date getPlannedEndtimeLastSinglemeasure() { return plannedEndtimeLastSinglemeasure; }
+
+    public void setPlannedEndtimeLastSinglemeasure(Date plannedEndtimeLastSinglemeasure) { this.plannedEndtimeLastSinglemeasure = plannedEndtimeLastSinglemeasure; }
+
+    public Date getPlannedEndtimeGridmeasure() { return plannedEndtimeGridmeasure; }
+
+    public void setPlannedEndtimeGridmeasure(Date plannedEndtimeGridmeasure) { this.plannedEndtimeGridmeasure = plannedEndtimeGridmeasure; }
+
+    public Date getStarttimeFirstSequence() { return starttimeFirstSequence; }
+
+    public void setStarttimeFirstSequence(Date starttimeFirstSequence) { this.starttimeFirstSequence = starttimeFirstSequence; }
+
+    public Date getStarttimeFirstSinglemeasure() { return starttimeFirstSinglemeasure; }
+
+    public void setStarttimeFirstSinglemeasure(Date starttimeFirstSinglemeasure) { this.starttimeFirstSinglemeasure = starttimeFirstSinglemeasure; }
+
+    public Date getEndtimeLastSinglemeasure() { return endtimeLastSinglemeasure; }
+
+    public void setEndtimeLastSinglemeasure(Date endtimeLastSinglemeasure) { this.endtimeLastSinglemeasure = endtimeLastSinglemeasure; }
+
+    public Date getEndtimeGridmeasure() { return endtimeGridmeasure; }
+
+    public void setEndtimeGridmeasure(Date endtimeGridmeasure) { this.endtimeGridmeasure = endtimeGridmeasure; }
+
+    public String getTimeOfReallocation() { return timeOfReallocation; }
+
+    public void setTimeOfReallocation(String timeOfReallocation) { this.timeOfReallocation = timeOfReallocation; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public Integer getFkRefBranch() { return fkRefBranch; }
+
+    public void setFkRefBranch(Integer fkRefBranch) { this.fkRefBranch = fkRefBranch; }
+
+    public Integer getFkRefBranchLevel() { return fkRefBranchLevel; }
+
+    public void setFkRefBranchLevel(Integer fkRefBranchLevel) { this.fkRefBranchLevel = fkRefBranchLevel; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public String getCreateUserDepartment() { return createUserDepartment; }
+
+    public void setCreateUserDepartment(String createUserDepartment) { this.createUserDepartment = createUserDepartment; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public String getModUserDepartment() { return modUserDepartment; }
+
+    public void setModUserDepartment(String modUserDepartment) { this.modUserDepartment = modUserDepartment; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+
+}
diff --git a/src/main/java/org/eclipse/openk/db/model/TblIdCounter.java b/src/main/java/org/eclipse/openk/db/model/TblIdCounter.java
new file mode 100644
index 0000000..ec2858d
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/TblIdCounter.java
@@ -0,0 +1,120 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "tbl_id_counter", schema = "public")
+@NamedQuery(name = "TblIdCounter.findAll", query = "SELECT r FROM TblIdCounter r")
+public class TblIdCounter implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TBL_ID_COUNTER_ID_SEQ")
+    @SequenceGenerator(name = "TBL_ID_COUNTER_ID_SEQ", sequenceName = "TBL_ID_COUNTER_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "counter")
+    private Integer counter;
+
+    @Column(name = "counter_type")
+    private String counterType;
+
+    @Column(name = "info")
+    private String modifiedDate;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getCounter() {
+        return counter;
+    }
+
+    public void setCounter(Integer counter) {
+        this.counter = counter;
+    }
+
+    public String getCounterType() {
+        return counterType;
+    }
+
+    public void setCounterType(String counterType) {
+        this.counterType = counterType;
+    }
+
+    public String getModifiedDate() {
+        return modifiedDate;
+    }
+
+    public void setModifiedDate(String modifiedDate) {
+        this.modifiedDate = modifiedDate;
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getModUser() {
+        return modUser;
+    }
+
+    public void setModUser(String modUser) {
+        this.modUser = modUser;
+    }
+
+    public Date getModDate() {
+        return modDate;
+    }
+
+    public void setModDate(Date modDate) {
+        this.modDate = modDate;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/model/TblLock.java b/src/main/java/org/eclipse/openk/db/model/TblLock.java
new file mode 100644
index 0000000..bf13e73
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/TblLock.java
@@ -0,0 +1,84 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * The persistent class for the "TBL_LOCK database table.
+ */
+@Entity
+@Table(name = "tbl_lock", schema = "public")
+@NamedQuery(name = "TblLock.findAll", query = "SELECT t FROM TblLock t")
+public class TblLock implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TBL_LOCK_ID_SEQ")
+    @SequenceGenerator(name = "TBL_LOCK_ID_SEQ", sequenceName = "TBL_LOCK_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "key")
+    private Integer key;
+
+    @Column(name = "username")
+    private String username;
+
+    @Column(name = "info")
+    private String info;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public Integer getKey() { return key; }
+
+    public void setKey(Integer key) { this.key = key; }
+
+    public String getUsername() { return username; }
+
+    public void setUsername(String username) { this.username = username; }
+
+    public String getInfo() { return info; }
+
+    public void setInfo(String info) { this.info = info; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/db/model/TblMeasureDocuments.java b/src/main/java/org/eclipse/openk/db/model/TblMeasureDocuments.java
new file mode 100644
index 0000000..931cb01
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/TblMeasureDocuments.java
@@ -0,0 +1,112 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "tbl_measure_documents", schema = "public")
+@NamedQuery(name = "TblMeasureDocuments.findAll", query = "SELECT r FROM TblMeasureDocuments r")
+public class TblMeasureDocuments implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TBL_MEASURE_DOCUMENTS_ID_SEQ")
+    @SequenceGenerator(name = "TBL_MEASURE_DOCUMENTS_ID_SEQ", sequenceName = "TBL_MEASURE_DOCUMENTS_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "fk_tbl_measure")
+    private Integer fkTblMeasure;
+
+    @ManyToOne
+    @JoinColumn(name="fk_tbl_documents")
+    private TblDocuments tblDocuments;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getFkTblMeasure() {
+        return fkTblMeasure;
+    }
+
+    public void setFkTblMeasure(Integer fkTblMeasure) {
+        this.fkTblMeasure = fkTblMeasure;
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getModUser() {
+        return modUser;
+    }
+
+    public void setModUser(String modUser) {
+        this.modUser = modUser;
+    }
+
+    public Date getModDate() {
+        return modDate;
+    }
+
+    public void setModDate(Date modDate) {
+        this.modDate = modDate;
+    }
+
+    public TblDocuments getTblDocuments() {
+        return tblDocuments;
+    }
+
+    public void setTblDocuments(TblDocuments tblDocuments) {
+        this.tblDocuments = tblDocuments;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/db/model/TblSingleGridmeasure.java b/src/main/java/org/eclipse/openk/db/model/TblSingleGridmeasure.java
new file mode 100644
index 0000000..daa9591
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/TblSingleGridmeasure.java
@@ -0,0 +1,144 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+/**
+ * The persistent class for the "TBL_SINGLE_GRIDMEASURE" database table.
+ */
+@Entity
+@Table(name = "TBL_SINGLE_GRIDMEASURE", schema = "public")
+@NamedQuery(name = "TblSingleGridmeasure.findAll", query = "SELECT t FROM TblSingleGridmeasure t")
+public class TblSingleGridmeasure implements Serializable{
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TBL_SINGLE_GRIDMEASURE_ID_SEQ")
+    @SequenceGenerator(name = "TBL_SINGLE_GRIDMEASURE_ID_SEQ", sequenceName = "TBL_SINGLE_GRIDMEASURE_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "sortorder")
+    private Integer sortorder;
+
+    @Column(name = "title")
+    private String title;
+
+    @Column(name = "switching_object")
+    private String switchingObject;
+
+    @Column(name = "cim_id")
+    private String cimId;
+
+    @Column(name = "cim_name")
+    private String cimName;
+
+    @Column(name = "cim_description")
+    private String cimDescription;
+
+    @Column(name = "planned_starttime_singlemeasure")
+    private Date plannedStarttimeSinglemeasure;
+
+    @Column(name = "planned_endtime_singlemeasure")
+    private Date plannedEndtimeSinglemeasure;
+
+    @Column (name= "description")
+    private String description;
+
+    @Column (name= "fk_tbl_gridmeasure")
+    private Integer fkTblGridmeasure;
+
+    @Column (name= "create_user")
+    private String createUser;
+
+    @Column (name= "create_date")
+    private Date createDate;
+
+    @Column (name= "mod_user")
+    private String modUser;
+
+    @Column (name= "mod_date")
+    private Date modDate;
+
+
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public Integer getSortorder() { return sortorder; }
+
+    public void setSortorder(Integer sortorder) { this.sortorder = sortorder; }
+
+    public String getTitle() { return title; }
+
+    public void setTitle(String title) { this.title = title; }
+
+    public String getSwitchingObject() { return switchingObject; }
+
+    public void setSwitchingObject(String affectedResource) { this.switchingObject = affectedResource; }
+
+    public String getCimId() { return cimId; }
+
+    public void setCimId(String cimId) { this.cimId = cimId; }
+
+    public String getCimName() { return cimName; }
+
+    public void setCimName(String cimName) { this.cimName = cimName; }
+
+    public String getCimDescription() { return cimDescription; }
+
+    public void setCimDescription(String cimDescription) { this.cimDescription = cimDescription; }
+
+    public Date getPlannedStarttimeSinglemeasure() { return plannedStarttimeSinglemeasure; }
+
+    public void setPlannedStarttimeSinglemeasure(Date plannedStarttimeSinglemeasure) { this.plannedStarttimeSinglemeasure = plannedStarttimeSinglemeasure; }
+
+    public Date getPlannedEndtimeSinglemeasure() { return plannedEndtimeSinglemeasure; }
+
+    public void setPlannedEndtimeSinglemeasure(Date plannedEndtimeSinglemeasure) { this.plannedEndtimeSinglemeasure = plannedEndtimeSinglemeasure; }
+
+    public String getDescription() { return description; }
+
+    public void setDescription(String description) { this.description = description; }
+
+    public Integer getFkTblGridmeasure() { return fkTblGridmeasure; }
+
+    public void setFkTblGridmeasure(Integer fkTblGridmeasure) { this.fkTblGridmeasure = fkTblGridmeasure; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+}
+
diff --git a/src/main/java/org/eclipse/openk/db/model/TblSteps.java b/src/main/java/org/eclipse/openk/db/model/TblSteps.java
new file mode 100644
index 0000000..fc33a59
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/TblSteps.java
@@ -0,0 +1,115 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * The persistent class for the "TBL_STEPS" database table.
+ */
+@Entity
+@Table(name = "TBL_STEPS", schema = "public")
+@NamedQuery(name = "TblSteps.findAll", query = "SELECT t FROM TblSteps t")
+public class TblSteps implements Serializable{
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TBL_STEPS_ID_SEQ")
+    @SequenceGenerator(name = "TBL_STEPS_ID_SEQ", sequenceName = "TBL_STEPS_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "sortorder")
+    private Integer sortorder;
+
+    @Column(name = "switching_object")
+    private String switchingObject;
+
+    @Column(name = "target_state")
+    private String targetState;
+
+    @Column (name= "fk_tbl_single_gridmeasure")
+    private Integer fkTblSingleGridmeasure;
+
+    @Column (name= "create_user")
+    private String createUser;
+
+    @Column (name= "create_date")
+    private Date createDate;
+
+    @Column (name= "mod_user")
+    private String modUser;
+
+    @Column (name= "mod_date")
+    private Date modDate;
+
+
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public Integer getSortorder() { return sortorder; }
+
+    public void setSortorder(Integer sortorder) { this.sortorder = sortorder; }
+
+    public String getSwitchingObject() {
+        return switchingObject;
+    }
+
+    public void setSwitchingObject(String switchingObject) {
+        this.switchingObject = switchingObject;
+    }
+
+    public String getTargetState() {
+        return targetState;
+    }
+
+    public void setTargetState(String targetState) {
+        this.targetState = targetState;
+    }
+
+    public Integer getFkTblSingleGridmeasure() {
+        return fkTblSingleGridmeasure;
+    }
+
+    public void setFkTblSingleGridmeasure(Integer fkTblSingleGridmeasure) {
+        this.fkTblSingleGridmeasure = fkTblSingleGridmeasure;
+    }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+}
+
diff --git a/src/main/java/org/eclipse/openk/db/model/TblUserSettings.java b/src/main/java/org/eclipse/openk/db/model/TblUserSettings.java
new file mode 100644
index 0000000..d4393cb
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/db/model/TblUserSettings.java
@@ -0,0 +1,90 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * The persistent class for the "REF_USER_SETTINGS" database table.
+ */
+@Entity
+@Table(name = "tbl_user_settings", schema = "public")
+@NamedQuery(name = "TblUserSettings.findAll", query = "SELECT r FROM TblUserSettings r")
+public class TblUserSettings implements Serializable{
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TBL_USER_SETTINGS_ID_SEQ")
+    @SequenceGenerator(name = "TBL_USER_SETTINGS_ID_SEQ", sequenceName = "TBL_USER_SETTINGS_ID_SEQ", allocationSize = 1)
+    @Column(name = "id", updatable = false)
+    private Integer id;
+
+    @Column(name = "username")
+    private String username;
+
+    @Column(name = "setting_type")
+    private String settingType;
+
+    @Column(name = "value")
+    private String value;
+
+    @Column(name = "create_user")
+    private String createUser;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "mod_user")
+    private String modUser;
+
+    @Column(name = "mod_date")
+    private Date modDate;
+
+    public Integer getId() { return id; }
+
+    public void setId(Integer id) { this.id = id; }
+
+    public String getUsername() { return username; }
+
+    public void setUsername(String username) { this.username = username; }
+
+    public String getSettingType() { return settingType; }
+
+    public void setSettingType(String settingType) { this.settingType = settingType; }
+
+    public String getValue() { return value; }
+
+    public void setValue(String value) { this.value = value; }
+
+    public String getCreateUser() { return createUser; }
+
+    public void setCreateUser(String createUser) { this.createUser = createUser; }
+
+    public Date getCreateDate() { return createDate; }
+
+    public void setCreateDate(Date createDate) { this.createDate = createDate; }
+
+    public String getModUser() { return modUser; }
+
+    public void setModUser(String modUser) { this.modUser = modUser; }
+
+    public Date getModDate() { return modDate; }
+
+    public void setModDate(Date modDate) { this.modDate = modDate; }
+}
diff --git a/src/main/java/org/eclipse/openk/health/DBIsPresentHealthCheck.java b/src/main/java/org/eclipse/openk/health/DBIsPresentHealthCheck.java
new file mode 100644
index 0000000..12b5566
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/health/DBIsPresentHealthCheck.java
@@ -0,0 +1,40 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.health;
+
+import com.codahale.metrics.health.HealthCheck;
+import org.eclipse.openk.api.VersionInfo;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.resources.PlannedGridMeasuresResource;
+
+public class DBIsPresentHealthCheck extends HealthCheck {
+    @Override
+    protected Result check() throws Exception {
+        VersionInfo vi = getVersionInfoFromResource();
+
+        if( vi != null && !vi.getBackendVersion().isEmpty() && !vi.getDbVersion().isEmpty() &&
+                !vi.getDbVersion().contains("NO_DB") ) {
+            return Result.healthy();
+        }
+        else {
+            return Result.unhealthy( vi == null || vi.getDbVersion().isEmpty() ||
+                    vi.getDbVersion().contains("NO_DB") ? "DB not ready" : "service not ready");
+        }
+    }
+
+    protected VersionInfo getVersionInfoFromResource(){
+        return JsonGeneratorBase.getGson().fromJson(
+                new PlannedGridMeasuresResource().getVersionInfo().getEntity().toString(),
+                VersionInfo.class);
+
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/health/MailConfigurationHealthCheck.java b/src/main/java/org/eclipse/openk/health/MailConfigurationHealthCheck.java
new file mode 100644
index 0000000..0d5c3fc
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/health/MailConfigurationHealthCheck.java
@@ -0,0 +1,76 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.health;
+
+import com.codahale.metrics.health.HealthCheck;
+import org.eclipse.openk.api.mail.Email;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+import org.eclipse.openk.core.controller.BackendConfig;
+
+public class MailConfigurationHealthCheck extends HealthCheck {
+
+    private String getEmailTemplatePath()
+    {
+        return BackendConfig.getInstance().getEmailTemplatePaths().getAppliedEmailTemplate();
+    }
+
+    private String getEmailTemplateString(String emailTemplatePath)
+    {
+        ResourceLoaderBase loaderBase = new ResourceLoaderBase();
+        return loaderBase.loadFromPath(emailTemplatePath);
+    }
+
+        @Override
+        protected Result check() throws Exception {
+
+            String templatePath = getEmailTemplatePath();
+            String templateString = getEmailTemplateString(templatePath);
+
+            String[] templateSplit = templateString.split("Body:");
+            String emailHead = templateSplit[0]; //Header
+            String[] emailHeadSplit = emailHead.split("Subject:");
+            String recipients = emailHeadSplit[0]; //all Recipients
+            String[] recipientsSplit = recipients.split("CC:");
+            String recipientsTo = recipientsSplit[0].trim().replace("To:", "");
+            String recipientsCC = "";
+            if (recipientsSplit.length > 1) {
+                recipientsCC = recipientsSplit[1].trim();
+            }
+
+            if (!recipientsTo.isEmpty() && !recipientsCC.isEmpty()) {
+
+                String[] recipientToList = recipientsTo.split(",");
+                String[] recipientCCList = recipientsCC.split(",");
+
+                for (String recipientToEmail: recipientToList) {
+                    if (!Email.validateEmailAddress(recipientToEmail.trim())) {
+                        return Result.unhealthy("recipients To email-address is not valid");
+                    }
+                }
+                for (String recipientCCEmail: recipientCCList) {
+                    if (!Email.validateEmailAddress(recipientCCEmail.trim())) {
+                        return Result.unhealthy("recipients CC email-address is not valid");
+                    }
+                }
+                return Result.healthy();
+
+            }
+            else {
+                return Result.unhealthy("Applied Email-Template not found or wrong Email-Configuration");
+            }
+        }
+    }
+
+
+
+
+
diff --git a/src/main/java/org/eclipse/openk/health/MailServerPresentHealthCheck.java b/src/main/java/org/eclipse/openk/health/MailServerPresentHealthCheck.java
new file mode 100644
index 0000000..3c9a708
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/health/MailServerPresentHealthCheck.java
@@ -0,0 +1,35 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.health;
+import com.codahale.metrics.health.HealthCheck;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration.EmailConfiguration;
+import java.net.Socket;
+
+public class MailServerPresentHealthCheck extends HealthCheck {
+
+    @Override
+    protected Result check() throws Exception {
+
+        EmailConfiguration emailConfiguration = BackendConfig.getInstance().getEmailConfiguration();
+
+        try (Socket testSocket = new Socket(emailConfiguration.getSmtpHost(), Integer.parseInt(emailConfiguration.getPort()))){
+
+            if (testSocket.isConnected()){
+                return Result.healthy();
+            }
+        else{
+                return Result.unhealthy("Mailserver not ready");
+            }
+        }
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/resources/BaseResource.java b/src/main/java/org/eclipse/openk/resources/BaseResource.java
new file mode 100644
index 0000000..ba493c7
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/resources/BaseResource.java
@@ -0,0 +1,59 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.resources;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.auth2.util.JwtHelper;
+import org.eclipse.openk.core.controller.BaseWebService;
+import org.eclipse.openk.core.controller.TokenManager;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public class BaseResource extends BaseWebService {
+
+    private final boolean developMode;
+    private static final String LET_ME_IN = "LET_ME_IN";
+
+    public BaseResource(Logger logger) {
+        super(logger);
+
+        String versionString = this.getVersionString();
+        developMode = versionString.contains("DEVELOP") || versionString.contains("SNAPSHOT");
+    }
+
+
+    @Override
+    protected void assertAndRefreshToken(String token, SecureType secureType) throws HttpStatusException {
+        if (isBackdoor(token)) {
+            return;
+        }
+        TokenManager.getInstance().checkAut(token);
+        TokenManager.getInstance().checkAutLevel(token, secureType);
+    }
+
+    @Override
+    public String getUserFromToken(String token) throws HttpStatusException {
+        if( isBackdoor(token)) {
+            return "default_backdoor_user";
+        }
+        return JwtHelper.getJwtPayload(token).getPreferredUsername();
+    }
+
+    protected boolean isDevelopMode() {
+        return developMode;
+    }
+
+    private boolean isBackdoor(String token) {
+        // backdoor is only available when the version(POM) contains "DEVELOP" or "SNAPSHOT"
+        return developMode && LET_ME_IN.equals(token);
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/resources/MasterDataResource.java b/src/main/java/org/eclipse/openk/resources/MasterDataResource.java
new file mode 100644
index 0000000..280ec3d
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/resources/MasterDataResource.java
@@ -0,0 +1,151 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.resources;
+
+import com.codahale.metrics.annotation.Timed;
+import io.swagger.annotations.*;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.*;
+import org.eclipse.openk.common.Globals;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.core.controller.MasterDataBackendController;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+@Api(value = "/mics/gridmeasures")
+@ApiResponses( value ={
+        @ApiResponse(code = 200, message = "OK",response = VersionInfo.class,reference = "#/definitions/VersionInfo"),
+        @ApiResponse(code = 400, message = "Bad Request"),
+        @ApiResponse(code = 401, message = "Unauthorized"),
+        @ApiResponse(code = 404, message = "Not found"),
+        @ApiResponse(code = 423, message = "Locked"),
+        @ApiResponse(code = 500, message = "Internal Server Error") } )
+@Path("/mics/gridmeasures")
+public class MasterDataResource extends BaseResource {
+
+    private static final Logger LOGGER = Logger.getLogger(MasterDataResource.class.getName());
+
+    public MasterDataResource() {
+        super(LOGGER);
+    }
+
+    @ApiOperation(value = "EmailAddresses", notes = "This service retrieves a list of email-addresses which are configured in the relevant email-templates")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = String.class) } )
+    @GET
+    @Path("/getEmailAddressesFromTemplates")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getEmailAddressesFromTemplates(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+                .getEmailAddressesFromTemplates());
+    }
+
+    @ApiOperation(value = "Branches", notes = "This service gets all Branches from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = Branch.class,reference = "#/definitions/Branches") } )
+    @GET
+    @Path("/getBranches")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getBranches(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+                .getBranches());
+    }
+
+    @ApiOperation(value = "BranchLevels", notes = "This service gets all BranchLevels from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = BranchLevel.class,reference = "#/definitions/BranchLevels") } )
+    @GET
+    @Path("/getBranchLevels")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getBranchLevels(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+                .getBranchLevels());
+    }
+
+    @ApiOperation(value = "GmStatus", notes = "This service gets all possible Status from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = GmStatus.class,reference = "#/definitions/GmStatus") } )
+    @GET
+    @Path("/getGmStatus")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getGmStatus(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+                .getGmStatus());
+    }
+
+    @ApiOperation(value = "CostCenter", notes = "This service gets all possible Cost-Centers from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = CostCenter.class,reference = "#/definitions/CostCenter") } )
+    @GET
+    @Path("/getCostCenters")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getCostCenters(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+                .getCostCenters());
+    }
+
+    @ApiOperation(value = "UserDepartment", notes = "This service gets all possible User-Departments from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = UserDepartment.class,reference = "#/definitions/UserDepartment") } )
+    @GET
+    @Path("/getUserDepartments")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getUserDepartments(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+                .getUserDepartments());
+    }
+
+    @ApiOperation(value = "UserSettings", notes = "This service gets all User-Settings for the given Username from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = UserSettings.class,reference = "#/definitions/UserSettings") } )
+    @GET
+    @Path("/getUserSettings/{settingType}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getUserSettings(@PathParam("settingType") String settingType,
+        @ApiParam(name = "Authorization", value = "JWT Token", required = true) @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+            .getUserSettings(modusr, settingType));
+    }
+
+    @ApiOperation(value = "Store User Setting", notes = "This service stores the given User Setting in the "+
+            "database.")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = UserSettings.class,reference = "#/definitions/UserSettings") } )
+    @PUT
+    @Path("/storeUserSettings")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response storeUserSettings(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt,
+                                     String settingsString) {
+        UserSettings userSettings = JsonGeneratorBase.getGson().fromJson(settingsString, UserSettings.class);
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+                .storeUserSettings(modusr, userSettings));
+    }
+
+
+    @ApiOperation(value = "BackendSettings", notes = "This service gets the Backendsettings")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = BackendSettings.class,reference = "#/definitions/BackendSettings") } )
+    @GET
+    @Path("/getBackendSettings")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getBackendSettings(@ApiParam(name = "Authorization", value = "JWT Token", required = true)
+    @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new MasterDataBackendController()
+            .getBackendSettings());
+    }
+
+
+}
diff --git a/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java b/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java
new file mode 100644
index 0000000..43f7d6c
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/resources/PlannedGridMeasuresResource.java
@@ -0,0 +1,379 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.resources;
+
+
+import com.codahale.metrics.annotation.Timed;
+import com.google.gson.JsonObject;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import javassist.bytecode.ByteArray;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.http.HttpStatus;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.api.BackendSettings;
+import org.eclipse.openk.api.Document;
+import org.eclipse.openk.api.FilterObject;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.HGridMeasure;
+import org.eclipse.openk.api.Lock;
+import org.eclipse.openk.api.VersionInfo;
+import org.eclipse.openk.common.Globals;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.common.mapper.generic.GenericApiToDbMapper;
+import org.eclipse.openk.core.controller.GridMeasureBackendController;
+import org.eclipse.openk.core.controller.ResponseBuilderWrapper;
+import org.eclipse.openk.core.controller.TokenManager;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.core.exceptions.PgmExceptionMapper;
+import org.eclipse.openk.db.model.TblDocuments;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.NotSupportedException;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import static org.eclipse.openk.api.BackendSettings.BpmnGridConfig.END_AFTER_APPROVED;
+import static org.eclipse.openk.api.BackendSettings.BpmnGridConfig.END_AFTER_RELEASED;
+import static org.eclipse.openk.api.BackendSettings.BpmnGridConfig.SKIP_FOR_APPROVAL;
+import static org.eclipse.openk.api.BackendSettings.BpmnGridConfig.SKIP_IN_WORK;
+import static org.eclipse.openk.api.BackendSettings.BpmnGridConfig.SKIP_REQUESTING;
+
+@Api(value = "/mics/gridmeasures")
+@ApiResponses( value ={
+        @ApiResponse(code = 200, message = "OK",response = VersionInfo.class,reference = "#/definitions/VersionInfo"),
+        @ApiResponse(code = 400, message = "Bad Request"),
+        @ApiResponse(code = 401, message = "Unauthorized"),
+        @ApiResponse(code = 404, message = "Not found"),
+        @ApiResponse(code = 423, message = "Locked"),
+        @ApiResponse(code = 500, message = "Internal Server Error") } )
+@Path("/mics/gridmeasures")
+public class PlannedGridMeasuresResource extends BaseResource {
+    private static final Logger LOGGER = Logger.getLogger(PlannedGridMeasuresResource.class.getName());
+
+    public PlannedGridMeasuresResource() {
+        super(LOGGER);
+
+    }
+
+    @ApiOperation(value = "Version Information", notes = "This services displays the version infos of this backend and the connected database.")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = VersionInfo.class,reference = "#/definitions/VersionInfo") } )
+    @GET
+    @Path("/versionInfo")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getVersionInfo() {
+        return invokeRunnable(null, SecureType.NONE, modusr -> new GridMeasureBackendController().getVersionInfo(getVersionString()));
+    }
+
+
+    @ApiOperation(value = "Store planned grid measure", notes = "This services stores the given grid measure in the "+
+                                                                "database and resumes the bpmn-process.")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = GridMeasure.class,reference = "#/definitions/GridMeasure") } )
+    @PUT
+    @Path("/storeGridMeasure")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response storeGridMeasure(@ApiParam(name="Authorization", value="JWT Token", required=true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt,
+                                     @ApiParam(name="Payload", value="GridMeasure to store", required=true, example = "see GridMeasure below") String gridMeasure) {
+
+        GridMeasure gridMeasureObj = JsonGeneratorBase.getGson().fromJson(gridMeasure, GridMeasure.class);
+        return invokeRunnable(jwt, SecureType.NORMAL, (String modusr) ->  new GridMeasureBackendController()
+                    .storeGridMeasure(jwt, modusr, gridMeasureObj)
+        );
+    }
+
+
+    @ApiOperation(value = "Get grid measures", notes = "This service gets all grid measures from the database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = GridMeasure.class,reference = "#/definitions/GridMeasure") } )
+    @POST
+    @Path("/getGridMeasures")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getGridMeasures(@ApiParam(name ="Authorization", value ="JWT Token", required =true)
+                                    @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt,
+                                    @ApiParam(name="filterObject", value="object to filter grid measure for status", required=true)
+                                    String filterObject) {
+
+        FilterObject filterObjectPro = JsonGeneratorBase.getGson().fromJson(filterObject, FilterObject.class);
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .getGridMeasures(filterObjectPro));
+    }
+
+    @ApiOperation(value = "Get grid measure", notes = "This service retrieves a grid measure from the database using the id")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = GridMeasure.class,reference = "#/definitions/GridMeasure") } )
+    @GET
+    @Path("/getGridMeasure/{id}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getGridMeasure(@ApiParam(name ="Authorization", value ="JWT Token", required =true)
+                                   @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt,
+                                   @ApiParam(name ="id", value ="id", required =true)
+                                   @PathParam("id") String id) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .getGridMeasureById(Integer.parseInt(id)));
+    }
+
+
+    @ApiOperation(value = "Get Current Reminders", notes = "This service retrieves a list of Gridmeasure-Ids")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = GridMeasure.class,reference = "#/definitions/GridMeasure") } )
+    @GET
+    @Path("/getCurrentReminders")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getCurrentReminders(@ApiParam(name ="Authorization", value ="JWT Token", required =true)
+                                        @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .getCurrentReminders(jwt));
+    }
+
+
+    @ApiOperation(value = "Upload a grid measure document", notes = "This service uploads and stores a document in the database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = Document.class,reference = "#/definitions/Document") } )
+    @POST
+    @Path("/uploadGridMeasureAttachments/{gridmeasuereId}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response uploadGridMeasureAttachments(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt,
+        @PathParam("gridmeasuereId") String gridmeasuereId, String document
+    ) {
+
+        Document documentObj = JsonGeneratorBase.getGson().fromJson(document, Document.class);
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+            .uploadDocument(documentObj, modusr, Integer.parseInt(gridmeasuereId)));
+    }
+
+    @ApiOperation(value = "Get Attachments List", notes = "This service gets all attachments for the given gridmeasure from the Database")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = Document.class, reference = "#/definitions/Document")})
+    @GET
+    @Path("/getGridMeasureAttachments/{gridmeasuereId}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getGridMeasureAttachments(@PathParam("gridmeasuereId") String id,
+        @ApiParam(name = "Authorization", value = "JWT Token", required = true) @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL,
+            modusr -> new GridMeasureBackendController().getGridMeasureAttachments(Integer.valueOf(id)));
+    }
+
+    @ApiOperation(value = "Download attachment", notes = "This service downloads the selected attachment for the given gridmeasure from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = ByteArray.class) } )
+    @GET
+    @Path("/downloadGridMeasureAttachment/{documentId}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response downloadGridMeasureAttachment(@PathParam("documentId") String id,
+        @ApiParam(name = "Authorization", value = "JWT Token", required = true) @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+
+        try {
+            assertAndRefreshToken(jwt, SecureType.NORMAL);
+            TblDocuments tblDocuments = new GridMeasureBackendController().downloadGridMeasureAttachment(Integer.parseInt(id));
+            String base64String = Base64.encodeBase64String(tblDocuments.getDocument());
+            GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+            Document document = mapper.mapToViewModel(Document.class, tblDocuments);
+            document.setData(base64String);
+
+            return Response.ok(JsonGeneratorBase.getGson().toJson(document)).build();
+
+        } catch (Exception e) {
+            return responseFromException(e);
+        }
+    }
+
+
+    @ApiOperation(value = "Delete attachment", notes = "This service deletes the selected attachment for the given gridmeasure from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = Response.class) } )
+    @DELETE
+    @Path("/deleteGridMeasureAttachment/{documentId}")
+    @Timed
+    public Response deleteGridMeasureAttachment(@PathParam("documentId") String id,
+        @ApiParam(name = "Authorization", value = "JWT Token", required = true) @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL,
+            modusr -> new GridMeasureBackendController().deleteDocument(modusr, Integer.parseInt(id)));
+    }
+
+
+    @ApiOperation(value = "Get historical grid measures status changes", notes = "This service gets all status changes for a grid measure from the database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = HGridMeasure.class,reference = "#/definitions/HGridMeasure") } )
+    @GET
+    @Path("/getHistoricalStatusChanges/{id}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getHistoricalStatusChanges(@ApiParam(name ="Authorization", value ="JWT Token", required =true)
+                                   @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt,
+                                   @ApiParam(name ="id", value ="id", required =true)
+                                   @PathParam("id") String id) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .getHistoricalStatusChangesById(Integer.parseInt(id)));
+    }
+
+    @ApiOperation(value = "AffectedResources", notes = "This service gets all possible Affected Resources from the Database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = String.class,reference = "#/definitions/GridMeasure.affectedResource") } )
+    @GET
+    @Path("/getAffectedResourcesDistinct")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getAffectedResources(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .getAffectedResourcesDistinct());
+    }
+
+    @ApiOperation(value = "GetMailAddressesFromGridmeasures", notes = "This service retrieves all mail-addresses from Gridmeasures in the database")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = String.class,reference = "#/definitions/GridMeasure.affectedResource") } )
+    @GET
+    @Path("/getMailAddressesFromGridmeasures")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getMailAddressesFromGridmeasures(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .getMailAddressesFromGridmeasures());
+    }
+
+
+    @ApiOperation(value = "Logout", notes = "This services kills the server session belonging to the the given session token.")
+    @GET
+    @Path("/logout")
+    @Produces("application/json")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK") } )
+    public Response logout(@ApiParam( name = "Authorization", value = "JWT Token", required = true)
+                           @HeaderParam(value = Globals.KEYCLOAK_AUTH_TAG) String token) {
+
+        try (AutoCloseable ignored = perform("logout()")) { // NOSONAR
+            TokenManager.getInstance().logout(token);
+            return ResponseBuilderWrapper.INSTANCE.buildOKResponse(PgmExceptionMapper.getGeneralOKJson());
+        } catch (Exception e) {
+            return responseFromException(e);
+        }
+    }
+
+    @ApiOperation(value = "Check Lock", notes = "This service checks if there is already a Lock for the given key and the given info within the JSON.")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = Lock.class, reference = "#/definitions/Lock") } )
+    @GET
+    @Path("/checkLock/{key}/{info}")
+    //@Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response checkLock(@PathParam("key") String key, @PathParam("info") String info, @ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .checkLock(Integer.parseInt(key), info));
+    }
+
+    @ApiOperation(value = "Create Lock", notes = "This service creates or updates a Lock for the given User and the given Gridmeasure-Id.")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = Lock.class, reference = "#/definitions/Lock") } )
+    @PUT
+    @Path("/createLock")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response createLock(@ApiParam(name ="Authorization", value ="JWT Token", required =true)@HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt,
+                               String lockString) {
+        Lock lock = JsonGeneratorBase.getGson().fromJson(lockString, Lock.class);
+        return invokeRunnable(jwt, SecureType.NORMAL, modusr -> new GridMeasureBackendController()
+                .createLock(modusr, lock.getKey(), lock.getInfo()));
+    }
+
+    @ApiOperation(value = "Delete Lock", notes = "This service deletes the lock for the given key and info. Use force="
+            +Globals.FORCE_DELETE_LOCK+" to enforce the deletion of the lock.")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK",  response = Response.class) } )
+    @DELETE
+    @Path("/deleteLock/{key}/{info}/{force}")
+    @Timed
+    public Response deleteLock(@PathParam("key") String key, @PathParam("info") String info,
+                               @PathParam("force") String force,
+                               @ApiParam(name = "Authorization", value = "JWT Token", required = true)
+                               @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        boolean isForce = force.equalsIgnoreCase(Globals.FORCE_DELETE_LOCK);
+        try {
+            if( isForce ) {
+                TokenManager.getInstance().checkAutLevel(jwt, SecureType.HIGH);
+            }
+        } catch (HttpStatusException e) {
+            responseFromException(e);
+        }
+
+
+        return invokeRunnable(jwt, SecureType.NORMAL,
+                modusr -> new GridMeasureBackendController().deleteLock(modusr, Integer.parseInt(key), info, isForce));
+    }
+
+    @ApiOperation(value = "Get Role Access Definition", notes = "This service gets a Json-file which defines access to GridMeasures for each role")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = JsonObject.class)})
+    @GET
+    @Path("/getRoleAccessDefinition")
+    //@Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response getRoleAccessDefinition(@ApiParam(name = "Authorization", value = "JWT Token", required = true)
+                                            @HeaderParam(Globals.KEYCLOAK_AUTH_TAG) String jwt) {
+        return invokeRunnable(jwt, SecureType.NORMAL,
+                modusr -> new GridMeasureBackendController().recalcAndGetRoleAccessDefinition());
+    }
+
+
+    @ApiOperation(value = "Grid configuration", notes = "This service modifies the backend grid configuration for test "+
+            "puposes. The method will not be available within a release build!")
+    @ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = BackendSettings.BpmnGridConfig.class,reference = "#/definitions/BackendSettings.BpmnGridConfig") } )
+    @GET
+    @Path("/setGridConfig")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Timed
+    public Response storeBackendConfig(@ApiParam(name = SKIP_FOR_APPROVAL, value = "Configuration switch", required = false) @QueryParam(SKIP_FOR_APPROVAL) Boolean isSkipForApproval,
+                                       @ApiParam(name = END_AFTER_APPROVED, value = "Configuration switch", required = false) @QueryParam(END_AFTER_APPROVED) Boolean isEndAfterApproved,
+                                       @ApiParam(name = SKIP_REQUESTING, value = "Configuration switch", required = false) @QueryParam(SKIP_REQUESTING) Boolean isSkipRequesting,
+                                       @ApiParam(name = END_AFTER_RELEASED, value = "Configuration switch", required = false) @QueryParam(END_AFTER_RELEASED) Boolean isEndAfterReleased,
+                                       @ApiParam(name = SKIP_IN_WORK, value = "Configuration switch", required = false) @QueryParam(SKIP_IN_WORK) Boolean isSkipInWork) {
+
+        if( !isDevelopMode() ) {
+            // Only allowed in DEVELOP-VERSION
+            throw new NotSupportedException();
+        }
+        return invokeRunnable(null, SecureType.NONE, modusr -> new GridMeasureBackendController()
+                .setGridConfig(isSkipForApproval, isEndAfterApproved, isSkipRequesting, isEndAfterReleased, isSkipInWork));
+    }
+
+    private Response responseFromException(Exception e) {
+        int errcode;
+        String retJson;
+
+        if (e instanceof HttpStatusException) {
+            LOGGER.error("Caught BackendException", e);
+            errcode = ((HttpStatusException) e).getHttpStatus();
+            retJson = PgmExceptionMapper.toJson((HttpStatusException) e);
+            return Response.status(errcode).entity(retJson).build();
+        } else {
+            LOGGER.error("Unexpected exception", e);
+            return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR)
+                    .entity(PgmExceptionMapper.getGeneralErrorJson()).build();
+        }
+    }
+
+}
diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..e39542e
--- /dev/null
+++ b/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
+    <persistence-unit name="planned-grid-measures-devserver" transaction-type="RESOURCE_LOCAL">
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+
+        <exclude-unlisted-classes>false</exclude-unlisted-classes>
+    </persistence-unit>
+</persistence>
diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt
new file mode 100644
index 0000000..2a421ca
--- /dev/null
+++ b/src/main/resources/banner.txt
@@ -0,0 +1,6 @@
+================================================================================
+
+                              PlannedGridMeasures
+
+================================================================================
+
diff --git a/src/main/resources/project.properties b/src/main/resources/project.properties
new file mode 100644
index 0000000..25e06ec
--- /dev/null
+++ b/src/main/resources/project.properties
@@ -0,0 +1 @@
+backend.version =${project.version}
\ No newline at end of file
diff --git a/src/main/resources/securityDefinitions.json b/src/main/resources/securityDefinitions.json
new file mode 100644
index 0000000..7183dfd
--- /dev/null
+++ b/src/main/resources/securityDefinitions.json
@@ -0,0 +1,16 @@
+{
+  "api_key": {
+    "type": "apiKey",
+    "name": "api_key",
+    "in": "header"
+  },
+  "Existing JWT token": {
+    "type": "oauth2",
+    "authorizationUrl": "http://swagger.io/api/oauth/dialog",
+    "flow": "implicit",
+    "scopes": {
+      "scope1": "scope description 1",
+      "scope2": "scope description 2"
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/PlannedGridMeasuresApplicationTest.java b/src/test/java/org/eclipse/openk/PlannedGridMeasuresApplicationTest.java
new file mode 100644
index 0000000..d8100ce
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/PlannedGridMeasuresApplicationTest.java
@@ -0,0 +1,94 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk;
+
+import static org.easymock.EasyMock.anyBoolean;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.powermock.api.easymock.PowerMock.replay;
+
+import com.codahale.metrics.health.HealthCheckRegistry;
+import io.dropwizard.jersey.setup.JerseyEnvironment;
+import io.dropwizard.jetty.setup.ServletEnvironment;
+import io.dropwizard.setup.Environment;
+import javax.servlet.FilterRegistration;
+import org.easymock.EasyMock;
+import org.eclipse.jetty.servlets.CrossOriginFilter;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+public class PlannedGridMeasuresApplicationTest {
+
+    @Test
+    public void testGetName() {
+        assertEquals( "PlannedGridMeasures", new PlannedGridMeasuresApplication().getName());
+    }
+
+    @Test
+    public void testRun() {
+
+        PlannedGridMeasuresConfiguration conf = createConfiguration();
+        PlannedGridMeasuresApplication mca = new PlannedGridMeasuresApplication();
+        mca.run(conf, createMockedEnvironment());
+
+    }
+
+    @Test
+    public void testRun2() throws Exception {
+        PlannedGridMeasuresApplication mca = new PlannedGridMeasuresApplication();
+        Whitebox.invokeMethod(mca, "configureCors", createMockedEnvironment() );
+    }
+
+    @Test
+    public void testInitialize() {
+        new PlannedGridMeasuresApplication().initialize(null);
+    }
+
+    private PlannedGridMeasuresConfiguration createConfiguration() {
+        PlannedGridMeasuresConfiguration c = new PlannedGridMeasuresConfiguration();
+        c.setDbConn(new PlannedGridMeasuresConfiguration.DBConnection());
+        return c;
+    }
+
+    private Environment createMockedEnvironment() {
+        FilterRegistration.Dynamic cors = EasyMock.createMock(FilterRegistration.Dynamic.class);
+        expect(cors.setInitParameter(anyString(), anyString())).andReturn( Boolean.TRUE ).anyTimes();
+        cors.addMappingForUrlPatterns(anyObject(), anyBoolean(), anyString());
+        expectLastCall();
+        replay( cors );
+
+        ServletEnvironment se = EasyMock.createMock(ServletEnvironment.class);
+        expect(se.addFilter(eq("CORS"), eq(CrossOriginFilter.class))).andReturn(cors).anyTimes();
+        replay(se);
+
+        JerseyEnvironment je = EasyMock.createMock(JerseyEnvironment.class);
+        je.register(anyObject());
+        expectLastCall();
+
+        HealthCheckRegistry hcr = EasyMock.createMock(HealthCheckRegistry.class);
+        hcr.register(anyString(), anyObject());
+        expectLastCall();
+
+        Environment environment = EasyMock.createMock( Environment.class );
+        expect( environment.servlets() ).andReturn(se).anyTimes();
+        expect( environment.jersey() ).andReturn(je).anyTimes();
+        expect( environment.healthChecks() ).andReturn(hcr).anyTimes();
+        replay( environment );
+        verify( environment );
+        return environment;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/TestUtils/BackendConfigTestHelper.java b/src/test/java/org/eclipse/openk/TestUtils/BackendConfigTestHelper.java
new file mode 100644
index 0000000..9857c30
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/TestUtils/BackendConfigTestHelper.java
@@ -0,0 +1,31 @@
+/*
+ * *****************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *      http://www.eclipse.org/legal/epl-v10.html
+ *
+ * *****************************************************************************
+ */
+
+package org.eclipse.openk.TestUtils;
+
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.api.BackendSettings;
+import org.eclipse.openk.api.BackendSettingsTest;
+import org.eclipse.openk.core.controller.BackendConfig;
+
+public class BackendConfigTestHelper {
+
+  public static void initDefaultBackendConfig(){
+    BackendConfig.resetBackendConfigUnitTests();
+    BackendSettings bs = BackendSettingsTest.getBackendSettings();
+    PlannedGridMeasuresConfiguration measuresConfiguration = new PlannedGridMeasuresConfiguration();
+    measuresConfiguration.setPortalBaseURL("portalBaseUrlMock");
+    BackendConfig.configure(measuresConfiguration, bs);
+  }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/api/BackendSettingsTest.java b/src/test/java/org/eclipse/openk/api/BackendSettingsTest.java
new file mode 100644
index 0000000..27ba9bf
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/BackendSettingsTest.java
@@ -0,0 +1,109 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.eclipse.openk.common.JsonGeneratorBase.getGson;
+import static org.junit.Assert.assertEquals;
+
+public class BackendSettingsTest {
+
+    @Test
+    public void testGetReminderPeriod()throws IOException {
+        BackendSettings backendSettings = new BackendSettings();
+        backendSettings.setReminderPeriod(48);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(backendSettings);
+
+        BackendSettings backendSettings2 = om.readValue(jsonString, BackendSettings.class);
+
+        assertEquals(backendSettings.getReminderPeriod(), backendSettings2.getReminderPeriod());
+    }
+
+    @Test
+    public void testIsSkipForApproval()throws IOException {
+        BackendSettings.BpmnGridConfig backendSettings = new BackendSettings.BpmnGridConfig();
+        backendSettings.setSkipForApproval(true);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(backendSettings);
+
+        BackendSettings.BpmnGridConfig backendSettings2 = om.readValue(jsonString, BackendSettings.BpmnGridConfig.class);
+
+        assertEquals(backendSettings.isSkipForApproval(), backendSettings2.isSkipForApproval());
+    }
+
+    @Test
+    public void testEndAfterAppoved()throws IOException {
+        BackendSettings.BpmnGridConfig backendSettings = new BackendSettings.BpmnGridConfig();
+        backendSettings.setEndAfterApproved(true);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(backendSettings);
+
+        BackendSettings.BpmnGridConfig backendSettings2 = om.readValue(jsonString, BackendSettings.BpmnGridConfig.class);
+
+        assertEquals(backendSettings.isEndAfterApproved(), backendSettings2.isEndAfterApproved());
+    }
+
+    @Test
+    public void testSkipRequesting()throws IOException {
+        BackendSettings.BpmnGridConfig backendSettings = new BackendSettings.BpmnGridConfig();
+        backendSettings.setSkipRequesting(true);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(backendSettings);
+
+        BackendSettings.BpmnGridConfig backendSettings2 = om.readValue(jsonString, BackendSettings.BpmnGridConfig.class);
+
+        assertEquals(backendSettings.isSkipRequesting(), backendSettings2.isSkipRequesting());
+    }
+
+    @Test
+    public void testEndAfterReleased()throws IOException {
+        BackendSettings.BpmnGridConfig backendSettings = new BackendSettings.BpmnGridConfig();
+        backendSettings.setEndAfterReleased(true);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(backendSettings);
+
+        BackendSettings.BpmnGridConfig backendSettings2 = om.readValue(jsonString, BackendSettings.BpmnGridConfig.class);
+
+        assertEquals(backendSettings.isEndAfterReleased(), backendSettings2.isEndAfterReleased());
+    }
+
+    @Test
+    public void testSkipInWork()throws IOException {
+        BackendSettings.BpmnGridConfig backendSettings = new BackendSettings.BpmnGridConfig();
+        backendSettings.setSkipInWork(true);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(backendSettings);
+
+        BackendSettings.BpmnGridConfig backendSettings2 = om.readValue(jsonString, BackendSettings.BpmnGridConfig.class);
+
+        assertEquals(backendSettings.isSkipInWork(), backendSettings2.isSkipInWork());
+    }
+
+    public static BackendSettings getBackendSettings() {
+        ResourceLoaderBase loaderBase = new ResourceLoaderBase();
+        String backendSettingsString = loaderBase.loadFromPath("./backendSettings.json");
+        return getGson().fromJson(backendSettingsString, BackendSettings.class);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/api/BranchLevelTest.java b/src/test/java/org/eclipse/openk/api/BranchLevelTest.java
new file mode 100644
index 0000000..973ce7d
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/BranchLevelTest.java
@@ -0,0 +1,73 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.junit.Test;
+
+public class BranchLevelTest {
+
+    @Test
+    public void testGetId()throws IOException {
+        BranchLevel branchLevel = new BranchLevel();
+        branchLevel.setId(7);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(branchLevel);
+
+        BranchLevel branchLevel2 = om.readValue(jsonString, BranchLevel.class);
+
+        assertEquals(branchLevel.getId(), branchLevel2.getId());
+    }
+
+    @Test
+    public void testGetName()throws IOException {
+        BranchLevel branchLevel = new BranchLevel();
+        branchLevel.setName("BranchLevelName");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(branchLevel);
+
+        BranchLevel branchLevel2 = om.readValue(jsonString, BranchLevel.class);
+
+        assertEquals(branchLevel.getName(), branchLevel2.getName());
+    }
+
+    @Test
+    public void testGetDescription()throws IOException {
+        BranchLevel branchLevel = new BranchLevel();
+        branchLevel.setDescription("Branch Level Description");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(branchLevel);
+
+        BranchLevel branchLevel2 = om.readValue(jsonString, BranchLevel.class);
+
+        assertEquals(branchLevel.getDescription(), branchLevel2.getDescription());
+    }
+
+    @Test
+    public void testGetBranchId()throws IOException {
+        BranchLevel branchLevel = new BranchLevel();
+        branchLevel.setBranchId(5);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(branchLevel);
+
+        BranchLevel branchLevel2 = om.readValue(jsonString, BranchLevel.class);
+
+        assertEquals(branchLevel.getBranchId(), branchLevel2.getBranchId());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/api/BranchTest.java b/src/test/java/org/eclipse/openk/api/BranchTest.java
new file mode 100644
index 0000000..2a3ab78
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/BranchTest.java
@@ -0,0 +1,73 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.junit.Test;
+
+public class BranchTest {
+
+    @Test
+    public void testGetId()throws IOException {
+        Branch branch = new Branch();
+        branch.setId(5);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(branch);
+
+        Branch branch2 = om.readValue(jsonString, Branch.class);
+
+        assertEquals(branch.getId(), branch2.getId());
+    }
+
+    @Test
+    public void testGetName()throws IOException {
+        Branch branch = new Branch();
+        branch.setName("Branchname");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(branch);
+
+        Branch branch2 = om.readValue(jsonString, Branch.class);
+
+        assertEquals(branch.getName(), branch2.getName());
+    }
+
+    @Test
+    public void testGetDescription()throws IOException {
+        Branch branch = new Branch();
+        branch.setDescription("Description");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(branch);
+
+        Branch branch2 = om.readValue(jsonString, Branch.class);
+
+        assertEquals(branch.getDescription(), branch2.getDescription());
+    }
+
+    @Test
+    public void testGetColorCode()throws IOException {
+        Branch branch = new Branch();
+        branch.setColorCode("ColorCode");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(branch);
+
+        Branch branch2 = om.readValue(jsonString, Branch.class);
+
+        assertEquals(branch.getColorCode(), branch2.getColorCode());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/api/CostCenterTest.java b/src/test/java/org/eclipse/openk/api/CostCenterTest.java
new file mode 100644
index 0000000..8c60d92
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/CostCenterTest.java
@@ -0,0 +1,60 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.junit.Test;
+
+public class CostCenterTest {
+
+    @Test
+    public void testGetId()throws IOException {
+        CostCenter costCenter = new CostCenter();
+        costCenter.setId(7);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(costCenter);
+
+        CostCenter costCenter2 = om.readValue(jsonString, CostCenter.class);
+
+        assertEquals(costCenter.getId(), costCenter2.getId());
+    }
+
+    @Test
+    public void testGetName()throws IOException {
+        CostCenter costCenter = new CostCenter();
+        costCenter.setName("CostCenterName");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(costCenter);
+
+        CostCenter costCenter2 = om.readValue(jsonString, CostCenter.class);
+
+        assertEquals(costCenter.getName(), costCenter2.getName());
+    }
+
+    @Test
+    public void testGetDescription()throws IOException {
+        CostCenter costCenter = new CostCenter();
+        costCenter.setDescription("Cost Center Description");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(costCenter);
+
+        CostCenter costCenter2 = om.readValue(jsonString, CostCenter.class);
+
+        assertEquals(costCenter.getDescription(), costCenter2.getDescription());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/api/FilterObjectTest.java b/src/test/java/org/eclipse/openk/api/FilterObjectTest.java
new file mode 100644
index 0000000..3a3e64f
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/FilterObjectTest.java
@@ -0,0 +1,48 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class FilterObjectTest {
+
+    @Test
+    public void testIsClosedStatusActive()throws IOException {
+        FilterObject fo = new FilterObject();
+        fo.setClosedStatusActive(true);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(fo);
+
+        FilterObject fo2 = om.readValue(jsonString, FilterObject.class);
+
+        assertEquals(fo.isClosedStatusActive(), fo2.isClosedStatusActive());
+    }
+
+    @Test
+    public void testIsCancelStatusActive()throws IOException {
+        FilterObject fo = new FilterObject();
+        fo.setCanceledStatusActive(true);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(fo);
+
+        FilterObject fo2 = om.readValue(jsonString, FilterObject.class);
+
+        assertEquals(fo.isCanceledStatusActive(), fo2.isCanceledStatusActive());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/api/GmStatusTest.java b/src/test/java/org/eclipse/openk/api/GmStatusTest.java
new file mode 100644
index 0000000..fe2d75e
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/GmStatusTest.java
@@ -0,0 +1,48 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.junit.Test;
+
+public class GmStatusTest {
+
+    @Test
+    public void testGetId()throws IOException {
+        GmStatus status = new GmStatus();
+        status.setId(2);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(status);
+
+        GmStatus status2 = om.readValue(jsonString, GmStatus.class);
+
+        assertEquals(status.getName(), status2.getName());
+    }
+
+    @Test
+    public void testGetName()throws IOException {
+        GmStatus status = new GmStatus();
+        status.setName("Statusname");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(status);
+
+        GmStatus status2 = om.readValue(jsonString, GmStatus.class);
+
+        assertEquals(status.getName(), status2.getName());
+    }
+
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/api/GridmeasureTest.java b/src/test/java/org/eclipse/openk/api/GridmeasureTest.java
new file mode 100644
index 0000000..1f757e7
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/GridmeasureTest.java
@@ -0,0 +1,432 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.util.Date;
+import org.junit.Test;
+
+public class GridmeasureTest {
+
+    @Test
+    public void testGetDescriptiveId()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setDescriptiveId("4");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getDescriptiveId(), gm2.getDescriptiveId());
+    }
+
+    @Test
+    public void testGetTitle()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setTitle("Test");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getTitle(), gm2.getTitle());
+    }
+
+    @Test
+    public void testGetAffected_resource()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setAffectedResource("Test");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getAffectedResource(), gm2.getAffectedResource());
+    }
+
+    @Test
+    public void testGetRemark()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setAffectedResource("Test");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getRemark(), gm2.getRemark());
+    }
+
+    @Test
+    public void testGetEmail_a()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setAffectedResource("Test");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getRemark(), gm2.getRemark());
+    }
+
+    @Test
+    public void testGetStatusId()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(3);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getStatusId(), gm2.getStatusId());
+    }
+
+    @Test
+    public void testGetSwitchingObject()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setSwitchingObject("Transformator");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getSwitchingObject(), gm2.getSwitchingObject());
+    }
+
+    @Test
+    public void testGetCostCenter()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setCostCenter("Centre di costa");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getCostCenter(), gm2.getCostCenter());
+    }
+
+    @Test
+    public void testGetResponsibleOnSiteName()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setResponsibleOnSiteName("Rudi Responsible");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getResponsibleOnSiteName(), gm2.getResponsibleOnSiteName());
+    }
+
+    @Test
+    public void testGetResponsibleOnSiteDepartment()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setResponsibleOnSiteDepartment("Department YY");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getResponsibleOnSiteDepartment(), gm2.getResponsibleOnSiteDepartment());
+    }
+
+    @Test
+    public void testGetApprovalBy()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setApprovalBy("Adam Approver");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getApprovalBy(), gm2.getApprovalBy());
+    }
+
+    @Test
+    public void testGetAreaOfSwitching()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setAreaOfSwitching("Southeast");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getAreaOfSwitching(), gm2.getAreaOfSwitching());
+    }
+
+    @Test
+    public void testGetAppointmentRepetition()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setAppointmentRepetition("daily");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getAppointmentRepetition(), gm2.getAppointmentRepetition());
+    }
+
+    @Test
+    public void testGetAppointmentStartdate()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        java.util.Date dateAppointmentStartdate = new Date(System.currentTimeMillis());
+        gm.setAppointmentStartdate(dateAppointmentStartdate);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getAppointmentStartdate(), gm2.getAppointmentStartdate());
+    }
+
+    @Test
+    public void testGetAppointmentNumberOf()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        gm.setAppointmentNumberOf(5);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getAppointmentNumberOf(), gm2.getAppointmentNumberOf());
+    }
+
+    @Test
+    public void testGetPlannedStarttimeFirstSequence()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        java.util.Date datePlannedStarttimeFirstSequence = new Date(System.currentTimeMillis());
+        gm.setPlannedStarttimeFirstSequence(datePlannedStarttimeFirstSequence);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getPlannedStarttimeFirstSequence(), gm2.getPlannedStarttimeFirstSequence());
+    }
+
+    @Test
+    public void testGetPlannedStarttimeFirstSinglemeasure()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        java.util.Date datePlannedStarttimeFirstSinglemeasure = new Date(System.currentTimeMillis());
+        gm.setPlannedStarttimeFirstSinglemeasure(datePlannedStarttimeFirstSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getPlannedStarttimeFirstSinglemeasure(), gm2.getPlannedStarttimeFirstSinglemeasure());
+    }
+
+    @Test
+    public void testGetPlannedEndtimeLastSinglemeasure()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        java.util.Date datePlannedEndtimeLastSinglemeasure = new Date(System.currentTimeMillis());
+        gm.setPlannedEndtimeLastSinglemeasure(datePlannedEndtimeLastSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getPlannedEndtimeLastSinglemeasure(), gm2.getPlannedEndtimeLastSinglemeasure());
+    }
+
+    @Test
+    public void testGetPlannedEndtimeGridmeasure()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        java.util.Date datePlannedEndtimeGridmeasure = new Date(System.currentTimeMillis());
+        gm.setPlannedEndtimeGridmeasure(datePlannedEndtimeGridmeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getPlannedEndtimeGridmeasure(), gm2.getPlannedEndtimeGridmeasure());
+    }
+
+    @Test
+    public void testGetStarttimeFirstSequence()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        java.util.Date dateStarttimeFirstSequence = new Date(System.currentTimeMillis());
+        gm.setStarttimeFirstSequence(dateStarttimeFirstSequence);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getStarttimeFirstSequence(), gm2.getStarttimeFirstSequence());
+    }
+
+
+    @Test
+    public void testGetStarttimeFirstSinglemeasure()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        java.util.Date dateStarttimeFirstSinglemeasure = new Date(System.currentTimeMillis());
+        gm.setStarttimeFirstSinglemeasure(dateStarttimeFirstSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getStarttimeFirstSinglemeasure(), gm2.getStarttimeFirstSinglemeasure());
+    }
+
+    @Test
+    public void testGetEndtimeLastSinglemeasure()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        java.util.Date dateEndtimeLastSinglemeasure = new Date(System.currentTimeMillis());
+        gm.setEndtimeLastSinglemeasure(dateEndtimeLastSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getEndtimeLastSinglemeasure(), gm2.getEndtimeLastSinglemeasure());
+    }
+
+    @Test
+    public void testGetEndtimeGridmeasure()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        java.util.Date dateEndtimeGridmeasure = new Date(System.currentTimeMillis());
+        gm.setEndtimeGridmeasure(dateEndtimeGridmeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getEndtimeGridmeasure(), gm2.getEndtimeGridmeasure());
+    }
+
+    @Test
+    public void testGetTimeOfReallocation()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        String dateTimeOfReallocation = "2018-04-19T08:00:00";
+        gm.setTimeOfReallocation(dateTimeOfReallocation);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getTimeOfReallocation(), gm2.getTimeOfReallocation());
+    }
+
+    @Test
+    public void testGetDescription()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        gm.setDescription("This is a description");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getDescription(), gm2.getDescription());
+    }
+
+
+    @Test
+    public void testGetBranch()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        gm.setBranchId(2);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getBranchId(), gm2.getBranchId());
+    }
+
+    @Test
+    public void testGetLevel()throws IOException {
+        GridMeasure gm = new GridMeasure();
+
+        gm.setBranchLevelId(3);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getBranchLevelId(), gm2.getBranchLevelId());
+    }
+
+    @Test
+    public void testGetCreate_user_department()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setAffectedResource("Test");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getCreateUserDepartment(), gm2.getCreateUserDepartment());
+    }
+
+    @Test
+    public void testGetModUserDepartment()throws IOException {
+        GridMeasure gm = new GridMeasure();
+        gm.setModUserDepartment("Department YY");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(gm);
+
+        GridMeasure gm2 = om.readValue(jsonString, GridMeasure.class);
+
+        assertEquals(gm.getModUserDepartment(), gm2.getModUserDepartment());
+    }
+
+}
+
+
+
+
+
+
diff --git a/src/test/java/org/eclipse/openk/api/HGridMeasureTest.java b/src/test/java/org/eclipse/openk/api/HGridMeasureTest.java
new file mode 100644
index 0000000..2a570a5
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/HGridMeasureTest.java
@@ -0,0 +1,444 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *  
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.Date;
+
+import static org.junit.Assert.assertEquals;
+
+public class HGridMeasureTest {
+
+    @Test
+    public void testGetHId()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setHId(4);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getDescriptiveId(), hgm2.getDescriptiveId());
+    }
+
+    @Test
+    public void testGetHAction()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setHAction(4);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getDescriptiveId(), hgm2.getDescriptiveId());
+    }
+
+    @Test
+    public void testGetHdate()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        Date hdate = new Date(System.currentTimeMillis());
+        hgm.setHDate(hdate);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getDescriptiveId(), hgm2.getDescriptiveId());
+    }
+
+    @Test
+    public void testGetHUser()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setHUser("user");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getDescriptiveId(), hgm2.getDescriptiveId());
+    }
+
+    @Test
+    public void testGetDescriptiveId()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setDescriptiveId("4");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getDescriptiveId(), hgm2.getDescriptiveId());
+    }
+
+    @Test
+    public void testGetTitle()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setTitle("Test");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getTitle(), hgm2.getTitle());
+    }
+
+    @Test
+    public void testGetAffected_resource()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setAffectedResource("Test");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getAffectedResource(), hgm2.getAffectedResource());
+    }
+
+    @Test
+    public void testGetRemark()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setAffectedResource("Test");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getRemark(), hgm2.getRemark());
+    }
+
+    @Test
+    public void testGetStatusId()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setStatusId(3);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getStatusId(), hgm2.getStatusId());
+    }
+
+    @Test
+    public void testGetSwitchingObject()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setSwitchingObject("Transformator");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getSwitchingObject(), hgm2.getSwitchingObject());
+    }
+
+    @Test
+    public void testGetCostCenter()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setCostCenter("Centre di costa");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getCostCenter(), hgm2.getCostCenter());
+    }
+
+    @Test
+    public void testGetResponsibleOnSiteName()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setResponsibleOnSiteName("Rudi Responsible");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getResponsibleOnSiteName(), hgm2.getResponsibleOnSiteName());
+    }
+
+    @Test
+    public void testGetResponsibleOnSiteDepartment()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setResponsibleOnSiteDepartment("Department YY");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getResponsibleOnSiteDepartment(), hgm2.getResponsibleOnSiteDepartment());
+    }
+
+    @Test
+    public void testGetApprovalBy()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setApprovalBy("Adam Approver");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getApprovalBy(), hgm2.getApprovalBy());
+    }
+
+    @Test
+    public void testGetAreaOfSwitching()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setAreaOfSwitching("Southeast");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getAreaOfSwitching(), hgm2.getAreaOfSwitching());
+    }
+
+    @Test
+    public void testGetAppointmentRepetition()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setAppointmentRepetition("daily");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getAppointmentRepetition(), hgm2.getAppointmentRepetition());
+    }
+
+    @Test
+    public void testGetAppointmentStartdate()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        Date dateAppointmentStartdate = new Date(System.currentTimeMillis());
+        hgm.setAppointmentStartdate(dateAppointmentStartdate);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getAppointmentStartdate(), hgm2.getAppointmentStartdate());
+    }
+
+    @Test
+    public void testGetAppointmentNumberOf()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        hgm.setAppointmentNumberOf(5);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getAppointmentNumberOf(), hgm2.getAppointmentNumberOf());
+    }
+
+    @Test
+    public void testGetPlannedStarttimeFirstSequence()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        Date datePlannedStarttimeFirstSequence = new Date(System.currentTimeMillis());
+        hgm.setPlannedStarttimeFirstSequence(datePlannedStarttimeFirstSequence);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getPlannedStarttimeFirstSequence(), hgm2.getPlannedStarttimeFirstSequence());
+    }
+
+    @Test
+    public void testGetPlannedStarttimeFirstSinglemeasure()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        Date datePlannedStarttimeFirstSinglemeasure = new Date(System.currentTimeMillis());
+        hgm.setPlannedStarttimeFirstSinglemeasure(datePlannedStarttimeFirstSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getPlannedStarttimeFirstSinglemeasure(), hgm2.getPlannedStarttimeFirstSinglemeasure());
+    }
+
+    @Test
+    public void testGetPlannedEndtimeLastSinglemeasure()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        Date datePlannedEndtimeLastSinglemeasure = new Date(System.currentTimeMillis());
+        hgm.setPlannedEndtimeLastSinglemeasure(datePlannedEndtimeLastSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getPlannedEndtimeLastSinglemeasure(), hgm2.getPlannedEndtimeLastSinglemeasure());
+    }
+
+    @Test
+    public void testGetStarttimeFirstSequence()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        Date dateStarttimeFirstSequence = new Date(System.currentTimeMillis());
+        hgm.setStarttimeFirstSequence(dateStarttimeFirstSequence);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getStarttimeFirstSequence(), hgm2.getStarttimeFirstSequence());
+    }
+
+
+    @Test
+    public void testGetStarttimeFirstSinglemeasure()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        Date dateStarttimeFirstSinglemeasure = new Date(System.currentTimeMillis());
+        hgm.setStarttimeFirstSinglemeasure(dateStarttimeFirstSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getStarttimeFirstSinglemeasure(), hgm2.getStarttimeFirstSinglemeasure());
+    }
+
+    @Test
+    public void testGetEndtimeLastSinglemeasure()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        Date dateEndtimeLastSinglemeasure = new Date(System.currentTimeMillis());
+        hgm.setEndtimeLastSinglemeasure(dateEndtimeLastSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getEndtimeLastSinglemeasure(), hgm2.getEndtimeLastSinglemeasure());
+    }
+    
+
+    @Test
+    public void testGetTimeOfReallocation()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        String dateTimeOfReallocation = "2018-04-19T08:00:00";
+        hgm.setTimeOfReallocation(dateTimeOfReallocation);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getTimeOfReallocation(), hgm2.getTimeOfReallocation());
+    }
+
+    @Test
+    public void testGetDescription()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        hgm.setDescription("This is a description");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getDescription(), hgm2.getDescription());
+    }
+
+
+    @Test
+    public void testGetBranch()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        hgm.setBranchId(2);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getBranchId(), hgm2.getBranchId());
+    }
+
+    @Test
+    public void testGetLevel()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+
+        hgm.setBranchLevelId(3);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getBranchLevelId(), hgm2.getBranchLevelId());
+    }
+
+    @Test
+    public void testGetCreate_user_department()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setAffectedResource("Test");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getCreateUserDepartment(), hgm2.getCreateUserDepartment());
+    }
+
+    @Test
+    public void testGetModUserDepartment()throws IOException {
+        HGridMeasure hgm = new HGridMeasure();
+        hgm.setModUserDepartment("Department YY");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(hgm);
+
+        HGridMeasure hgm2 = om.readValue(jsonString, HGridMeasure.class);
+
+        assertEquals(hgm.getModUserDepartment(), hgm2.getModUserDepartment());
+    }
+
+}
+
+
+
+
+
+
diff --git a/src/test/java/org/eclipse/openk/api/LockTest.java b/src/test/java/org/eclipse/openk/api/LockTest.java
new file mode 100644
index 0000000..4ae6676
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/LockTest.java
@@ -0,0 +1,76 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.junit.Test;
+
+public class LockTest {
+
+    @Test
+    public void testGetId()throws IOException {
+        Lock lock = new Lock();
+        lock.setId(3);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(lock);
+
+        Lock lock2 = om.readValue(jsonString, Lock.class);
+
+        assertEquals(lock.getId(), lock2.getId());
+    }
+
+    @Test
+    public void testGetKey()throws IOException {
+        Lock lock = new Lock();
+        lock.setKey(4);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(lock);
+
+        Lock lock2 = om.readValue(jsonString, Lock.class);
+
+        assertEquals(lock.getKey(), lock2.getKey());
+    }
+
+    @Test
+    public void testGetUsername()throws IOException {
+        Lock lock = new Lock();
+        lock.setUsername("Tom Tester");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(lock);
+
+        Lock lock2 = om.readValue(jsonString, Lock.class);
+
+        assertEquals(lock.getUsername(), lock2.getUsername());
+    }
+
+    @Test
+    public void testGetInfo()throws IOException {
+        Lock lock = new Lock();
+        lock.setInfo("locked");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(lock);
+
+        Lock lock2 = om.readValue(jsonString, Lock.class);
+
+        assertEquals(lock.getUsername(), lock2.getUsername());
+    }
+
+
+}
+
diff --git a/src/test/java/org/eclipse/openk/api/RoleAccessDefinitionApiTest.java b/src/test/java/org/eclipse/openk/api/RoleAccessDefinitionApiTest.java
new file mode 100644
index 0000000..fe9f425
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/RoleAccessDefinitionApiTest.java
@@ -0,0 +1,154 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class RoleAccessDefinitionApiTest {
+
+    @Test
+    public void testEditRoleGetName()throws IOException {
+        RoleAccessDefinitionApi.EditRole ra = new RoleAccessDefinitionApi.EditRole ();
+        ra.setName("name");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(ra);
+
+        RoleAccessDefinitionApi.EditRole ra2 = om.readValue(jsonString, RoleAccessDefinitionApi.EditRole.class);
+
+        assertEquals(ra.getName(), ra2.getName());
+    }
+
+    @Test
+    public void testEditRoleGridMeasureStatusIds()throws IOException {
+        RoleAccessDefinitionApi.EditRole ra = new RoleAccessDefinitionApi.EditRole ();
+        int[] intArray = {1,2};
+        ra.setGridMeasureStatusIds(intArray);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(ra);
+
+        RoleAccessDefinitionApi.EditRole ra2 = om.readValue(jsonString, RoleAccessDefinitionApi.EditRole.class);
+
+        assertEquals(ra.getGridMeasureStatusIds().length, ra2.getGridMeasureStatusIds().length);
+    }
+
+    ///////
+
+    @Test
+    public void testControlGridMeasureStatusId()throws IOException {
+        RoleAccessDefinitionApi.Control ra = new RoleAccessDefinitionApi.Control ();
+        ra.setGridMeasureStatusId(1);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(ra);
+
+        RoleAccessDefinitionApi.Control ra2 = om.readValue(jsonString, RoleAccessDefinitionApi.Control.class);
+
+        assertEquals(ra.getGridMeasureStatusId(), ra2.getGridMeasureStatusId());
+    }
+
+    @Test
+    public void testControlActiveButtons()throws IOException {
+        RoleAccessDefinitionApi.Control ra = new RoleAccessDefinitionApi.Control ();
+        String[] btnArray = {"cancel", "save"};
+        ra.setActiveButtons(btnArray);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(ra);
+
+        RoleAccessDefinitionApi.Control ra2 = om.readValue(jsonString, RoleAccessDefinitionApi.Control.class);
+
+        assertEquals(ra.getActiveButtons().length, ra2.getActiveButtons().length);
+    }
+
+    @Test
+    public void testControlInactiveFields()throws IOException {
+        RoleAccessDefinitionApi.Control ra = new RoleAccessDefinitionApi.Control ();
+        String[] fieldsArray = {"id", "user"};
+        ra.setInactiveFields(fieldsArray);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(ra);
+
+        RoleAccessDefinitionApi.Control ra2 = om.readValue(jsonString, RoleAccessDefinitionApi.Control.class);
+
+        assertEquals(ra.getInactiveFields().length, ra2.getInactiveFields().length);
+    }
+
+    @Test
+    public void testGetEditRoles()throws IOException {
+        RoleAccessDefinitionApi ra = new RoleAccessDefinitionApi ();
+        RoleAccessDefinitionApi.EditRole[] editRolesArray = {new RoleAccessDefinitionApi.EditRole()};
+        ra.setEditRoles(editRolesArray);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(ra);
+
+        RoleAccessDefinitionApi ra2 = om.readValue(jsonString, RoleAccessDefinitionApi.class);
+
+        assertEquals(ra.getEditRoles().length, ra2.getEditRoles().length);
+    }
+
+    @Test
+    public void testGetControls()throws IOException {
+        RoleAccessDefinitionApi ra = new RoleAccessDefinitionApi ();
+        RoleAccessDefinitionApi.Control[] controlsArray = {new RoleAccessDefinitionApi.Control()};
+        ra.setControls(controlsArray);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(ra);
+
+        RoleAccessDefinitionApi ra2 = om.readValue(jsonString, RoleAccessDefinitionApi.class);
+
+        assertEquals(ra.getControls().length, ra2.getControls().length);
+    }
+
+
+    @Test
+    public void testGetStornoSection()throws IOException {
+        RoleAccessDefinitionApi ra = new RoleAccessDefinitionApi ();
+        RoleAccessDefinitionApi.StornoSection stornoSections = new RoleAccessDefinitionApi.StornoSection();
+        String[] stornoRoles = {"a role", "a super role"};
+        stornoSections.setStornoRoles(stornoRoles);
+        ra.setStornoSection(stornoSections);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(ra);
+
+        RoleAccessDefinitionApi ra2 = om.readValue(jsonString, RoleAccessDefinitionApi.class);
+
+        assertEquals(ra.getStornoSection().getStornoRoles().length, ra2.getStornoSection().getStornoRoles().length);
+    }
+
+    @Test
+    public void testGetDuplicateSection()throws IOException {
+        RoleAccessDefinitionApi ra = new RoleAccessDefinitionApi ();
+        RoleAccessDefinitionApi.DuplicateSection duplicateSection = new RoleAccessDefinitionApi.DuplicateSection();
+        String[] duplicateRoles = {"a role", "a super role"};
+        duplicateSection.setDuplicateRoles(duplicateRoles);
+        ra.setDuplicateSection(duplicateSection);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(ra);
+
+        RoleAccessDefinitionApi ra2 = om.readValue(jsonString, RoleAccessDefinitionApi.class);
+
+        assertEquals(ra.getDuplicateSection().getDuplicateRoles().length, ra2.getDuplicateSection().getDuplicateRoles().length);
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/api/SingleGridmeasureTest.java b/src/test/java/org/eclipse/openk/api/SingleGridmeasureTest.java
new file mode 100644
index 0000000..7f147f1
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/SingleGridmeasureTest.java
@@ -0,0 +1,125 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.util.Date;
+import org.junit.Test;
+
+public class SingleGridmeasureTest {
+
+    @Test
+    public void testGetSortorder() throws IOException {
+        SingleGridmeasure sgm = new SingleGridmeasure();
+        sgm.setSortorder(4);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(sgm);
+
+        SingleGridmeasure sgm2 = om.readValue(jsonString, SingleGridmeasure.class);
+
+        assertEquals(sgm.getSortorder(), sgm2.getSortorder());
+    }
+
+    @Test
+    public void testTitle() throws IOException {
+        SingleGridmeasure sgm = new SingleGridmeasure();
+        sgm.setTitle("Testtitle");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(sgm);
+
+        SingleGridmeasure sgm2 = om.readValue(jsonString, SingleGridmeasure.class);
+
+        assertEquals(sgm.getTitle(), sgm2.getTitle());
+    }
+
+    @Test
+    public void testSwitchingObject() throws IOException {
+        SingleGridmeasure sgm = new SingleGridmeasure();
+        sgm.setSwitchingObject("Switching Object");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(sgm);
+
+        SingleGridmeasure sgm2 = om.readValue(jsonString, SingleGridmeasure.class);
+
+        assertEquals(sgm.getSwitchingObject(), sgm2.getSwitchingObject());
+    }
+
+    @Test
+    public void testPowerSystemResource() throws IOException {
+        PowerSystemResource psr = new PowerSystemResource();
+        psr.setCimId("4711");
+        psr.setCimName("CIM");
+        psr.setCimDescription("CIMDesc");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(psr);
+
+        PowerSystemResource psr2 = om.readValue(jsonString, PowerSystemResource.class);
+
+        assertEquals(psr.getCimId(), psr2.getCimId());
+        assertEquals(psr.getCimName(), psr2.getCimName());
+        assertEquals(psr.getCimDescription(), psr2.getCimDescription());
+    }
+
+    @Test
+    public void testPlannedStarttimeSinglemeasure() throws IOException {
+        SingleGridmeasure sgm = new SingleGridmeasure();
+
+        java.util.Date plannedStarttimeSinglemeasure = new Date(System.currentTimeMillis());
+        sgm.setPlannedStarttimeSinglemeasure(plannedStarttimeSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(sgm);
+
+        SingleGridmeasure sgm2 = om.readValue(jsonString, SingleGridmeasure.class);
+
+        assertEquals(sgm.getPlannedStarttimeSinglemeasure(), sgm2.getPlannedStarttimeSinglemeasure());
+    }
+
+    @Test
+    public void testPlannedEndtimeSinglemeasure() throws IOException {
+        SingleGridmeasure sgm = new SingleGridmeasure();
+
+        java.util.Date plannedEndtimeSinglemeasure = new Date(System.currentTimeMillis());
+        sgm.setPlannedEndtimeSinglemeasure(plannedEndtimeSinglemeasure);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(sgm);
+
+        SingleGridmeasure sgm2 = om.readValue(jsonString, SingleGridmeasure.class);
+
+        assertEquals(sgm.getPlannedEndtimeSinglemeasure(), sgm2.getPlannedEndtimeSinglemeasure());
+    }
+
+    @Test
+    public void testDescription() throws IOException {
+        SingleGridmeasure sgm = new SingleGridmeasure();
+        sgm.setDescription("Description");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(sgm);
+
+        SingleGridmeasure sgm2 = om.readValue(jsonString, SingleGridmeasure.class);
+
+        assertEquals(sgm.getDescription(), sgm2.getDescription());
+    }
+
+}
+
+
+
diff --git a/src/test/java/org/eclipse/openk/api/StepsTest.java b/src/test/java/org/eclipse/openk/api/StepsTest.java
new file mode 100644
index 0000000..ab054f9
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/StepsTest.java
@@ -0,0 +1,91 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *  
+ * ***************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class StepsTest {
+
+    @Test
+    public void testGetSortorder() throws IOException {
+        Steps stp = new Steps();
+        stp.setSortorder(4);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(stp);
+
+        Steps stp2 = om.readValue(jsonString, Steps.class);
+
+        assertEquals(stp.getSortorder(), stp2.getSortorder());
+    }
+
+    @Test
+    public void testTargetState() throws IOException {
+        Steps stp = new Steps();
+        stp.setTargetState("testtarget");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(stp);
+
+        Steps stp2 = om.readValue(jsonString, Steps.class);
+
+        assertEquals(stp.getTargetState(), stp2.getTargetState());
+    }
+
+    @Test
+    public void testSwitchingObject() throws IOException {
+        Steps stp = new Steps();
+        stp.setSwitchingObject("Switching Object");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(stp);
+
+        Steps stp2 = om.readValue(jsonString, Steps.class);
+
+        assertEquals(stp.getSwitchingObject(), stp2.getSwitchingObject());
+    }
+
+    @Test
+    public void testId() throws IOException {
+        Steps stp = new Steps();
+        stp.setId(2);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(stp);
+
+        Steps stp2 = om.readValue(jsonString, Steps.class);
+
+        assertEquals(stp.getId(), stp2.getId());
+    }
+
+    @Test
+    public void testSingleGridmeasureId() throws IOException {
+        Steps stp = new Steps();
+        stp.setSingleGridmeasureId(6);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(stp);
+
+        Steps stp2 = om.readValue(jsonString, Steps.class);
+
+        assertEquals(stp.getSingleGridmeasureId(), stp2.getSingleGridmeasureId());
+    }
+
+}
+
+
+
diff --git a/src/test/java/org/eclipse/openk/api/UserDepartmentTest.java b/src/test/java/org/eclipse/openk/api/UserDepartmentTest.java
new file mode 100644
index 0000000..902aaf7
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/UserDepartmentTest.java
@@ -0,0 +1,48 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.junit.Test;
+
+public class UserDepartmentTest {
+
+    @Test
+    public void testGetId()throws IOException {
+        UserDepartment userDepartment = new UserDepartment();
+        userDepartment.setId(78);
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(userDepartment);
+
+        UserDepartment userDepartment2 = om.readValue(jsonString, UserDepartment.class);
+
+        assertEquals(userDepartment.getId(), userDepartment2.getId());
+    }
+
+    @Test
+    public void testGetName()throws IOException {
+        UserDepartment userDepartment = new UserDepartment();
+        userDepartment.setName("UserDepartmentName");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(userDepartment);
+
+        UserDepartment userDepartment2 = om.readValue(jsonString, UserDepartment.class);
+
+        assertEquals(userDepartment.getName(), userDepartment2.getName());
+    }
+
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/api/UserSettingsTest.java b/src/test/java/org/eclipse/openk/api/UserSettingsTest.java
new file mode 100644
index 0000000..4984fd5
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/UserSettingsTest.java
@@ -0,0 +1,68 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.junit.Test;
+
+public class UserSettingsTest {
+    @Test
+    public void testGetUserame()throws IOException {
+        UserSettings userSettings = new UserSettings();
+        userSettings.setUsername("Username");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(userSettings);
+
+        UserSettings userSettings2 = om.readValue(jsonString, UserSettings.class);
+
+        assertEquals(userSettings.getUsername(), userSettings2.getUsername());
+    }
+
+    @Test
+    public void testGetSettingType()throws IOException {
+        UserSettings userSettings = new UserSettings();
+        userSettings.setSettingType("SettingType");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(userSettings);
+
+        UserSettings userSettings2 = om.readValue(jsonString, UserSettings.class);
+
+        assertEquals(userSettings.getSettingType(), userSettings2.getSettingType());
+    }
+
+    @Test
+    public void testGetValue()throws IOException {
+        UserSettings userSettings = new UserSettings();
+        userSettings.setValue("{\"menu\": {\n" +
+                "  \"id\": \"file\",\n" +
+                "  \"value\": \"File\",\n" +
+                "  \"popup\": {\n" +
+                "    \"menuitem\": [\n" +
+                "      {\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},\n" +
+                "      {\"value\": \"Open\", \"onclick\": \"OpenDoc()\"},\n" +
+                "      {\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}\n" +
+                "    ]\n" +
+                "  }\n" +
+                "}}");
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(userSettings);
+
+        UserSettings userSettings2 = om.readValue(jsonString, UserSettings.class);
+
+        assertEquals(userSettings.getValue(), userSettings2.getValue());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/api/VersionInfoTest.java b/src/test/java/org/eclipse/openk/api/VersionInfoTest.java
new file mode 100644
index 0000000..2971544
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/VersionInfoTest.java
@@ -0,0 +1,34 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.api;
+
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.junit.Test;
+
+public class VersionInfoTest {
+
+    @Test
+    public void testGetVersionInfo() throws IOException {
+        VersionInfo vi = new VersionInfo();
+        vi.setBackendVersion("123");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(vi);
+
+        VersionInfo vi2 = om.readValue(jsonString, VersionInfo.class);
+
+        assertEquals(vi.getBackendVersion(), vi2.getBackendVersion());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/api/mail/EmailTemplatePathsTest.java b/src/test/java/org/eclipse/openk/api/mail/EmailTemplatePathsTest.java
new file mode 100644
index 0000000..f79485f
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/api/mail/EmailTemplatePathsTest.java
@@ -0,0 +1,179 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.api.mail;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class EmailTemplatePathsTest {
+
+    @Test
+    public void testGetAppliedEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setAppliedEmailTemplate("Applied Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getAppliedEmailTemplate(), template2.getAppliedEmailTemplate());
+    }
+
+    @Test
+    public void testGetForapprovalEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setForapprovalEmailTemplate("For Approval Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getForapprovalEmailTemplate(), template2.getForapprovalEmailTemplate());
+    }
+
+    @Test
+    public void testGetApprovedEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setApprovedEmailTemplate("Approved Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getApprovedEmailTemplate(), template2.getApprovedEmailTemplate());
+    }
+
+    @Test
+    public void testGetRequestedEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setRequestedEmailTemplate("Requested Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getRequestedEmailTemplate(), template2.getRequestedEmailTemplate());
+    }
+
+    @Test
+    public void testGetReleasedEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setReleasedEmailTemplate("Released Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getReleasedEmailTemplate(), template2.getReleasedEmailTemplate());
+    }
+
+    @Test
+    public void testGetActiveEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setActiveEmailTemplate("Active Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getActiveEmailTemplate(), template2.getActiveEmailTemplate());
+    }
+
+    @Test
+    public void testGetInworkEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setInworkEmailTemplate("In work Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getInworkEmailTemplate(), template2.getInworkEmailTemplate());
+    }
+
+    @Test
+    public void testGetWorkfinishedEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setWorkfinishedEmailTemplate("Work finished Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getWorkfinishedEmailTemplate(), template2.getWorkfinishedEmailTemplate());
+    }
+
+    @Test
+    public void testGetFinishedEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setFinishedEmailTemplate("Finished Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getFinishedEmailTemplate(), template2.getFinishedEmailTemplate());
+    }
+
+    @Test
+    public void testGetClosedEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setClosedEmailTemplate("Closed Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getClosedEmailTemplate(), template2.getClosedEmailTemplate());
+    }
+
+    @Test
+    public void testGetCancelledEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setCancelledEmailTemplate("Canceled Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getCancelledEmailTemplate(), template2.getCancelledEmailTemplate());
+    }
+
+    @Test
+    public void testGetRejectedEmailTemplate()throws IOException {
+        EmailTemplatePaths template = new EmailTemplatePaths();
+        template.setRejectedEmailTemplate("Rejected Template Text");
+
+        ObjectMapper om = new ObjectMapper();
+        String jsonString = om.writeValueAsString(template);
+
+        EmailTemplatePaths template2 = om.readValue(jsonString, EmailTemplatePaths.class);
+
+        assertEquals(template.getRejectedEmailTemplate(), template2.getRejectedEmailTemplate());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/auth2/model/JwtAccountTest.java b/src/test/java/org/eclipse/openk/auth2/model/JwtAccountTest.java
new file mode 100644
index 0000000..d8630ba
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/auth2/model/JwtAccountTest.java
@@ -0,0 +1,42 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.auth2.model;
+
+import static junit.framework.TestCase.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+
+public class JwtAccountTest {
+
+    List<String> rolesList = new ArrayList<String>();
+
+    @Before
+    public void createList() {
+
+        rolesList.add("role1");
+        rolesList.add("role2");
+        rolesList.add("role3");
+    }
+
+
+    @Test
+    public void testGettersAndSetters() {
+
+        JwtAccount jwtAccount = new JwtAccount();
+        jwtAccount.setRoles(rolesList);
+        assertEquals(rolesList, jwtAccount.getRoles());
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/auth2/model/JwtHeaderTest.java b/src/test/java/org/eclipse/openk/auth2/model/JwtHeaderTest.java
new file mode 100644
index 0000000..fe164b0
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/auth2/model/JwtHeaderTest.java
@@ -0,0 +1,34 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.auth2.model;
+
+import static junit.framework.TestCase.assertEquals;
+
+import org.junit.Test;
+
+public class JwtHeaderTest {
+
+    @Test
+    public void testGettersAndSetters(){
+
+        JwtHeader jwtHeader = new JwtHeader();
+
+        jwtHeader.setAlg("algTest");
+        assertEquals("algTest", jwtHeader.getAlg());
+
+        jwtHeader.setTyp("typTest");
+        assertEquals("typTest", jwtHeader.getTyp());
+
+        jwtHeader.setKid("kidTest");
+        assertEquals("kidTest", jwtHeader.getKid());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/auth2/model/JwtPayloadTest.java b/src/test/java/org/eclipse/openk/auth2/model/JwtPayloadTest.java
new file mode 100644
index 0000000..6150a22
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/auth2/model/JwtPayloadTest.java
@@ -0,0 +1,91 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.auth2.model;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
+
+public class JwtPayloadTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        JwtPayload jwtPayload = new JwtPayload();
+
+        jwtPayload.setJti("jtiTest");
+        assertEquals("jtiTest", jwtPayload.getJti());
+
+        jwtPayload.setExp(8);
+        assertEquals(8, jwtPayload.getExp());
+
+        jwtPayload.setNbf(9);
+        assertEquals(9, jwtPayload.getNbf());
+
+        jwtPayload.setIat(10);
+        assertEquals(10, jwtPayload.getIat());
+
+        jwtPayload.setiss("issTest");
+        assertEquals("issTest", jwtPayload.getiss());
+
+        jwtPayload.setaud("audTest");
+        assertEquals("audTest", jwtPayload.getaud());
+
+        jwtPayload.setsub("subTest");
+        assertEquals("subTest", jwtPayload.getsub());
+
+        jwtPayload.settyp("typTest");
+        assertEquals("typTest", jwtPayload.gettyp());
+
+        jwtPayload.setAzp("azpTest");
+        assertEquals("azpTest", jwtPayload.getAzp());
+
+        jwtPayload.setNonce("nonceTest");
+        assertEquals("nonceTest", jwtPayload.getNonce());
+
+        jwtPayload.setAuthTime(12);
+        assertEquals((Integer)12, jwtPayload.getAuthTime());
+
+        jwtPayload.setSessionState("sessionStateTest");
+        assertEquals("sessionStateTest", jwtPayload.getSessionState());
+
+        jwtPayload.setAcr("acrTest");
+        assertEquals("acrTest", jwtPayload.getAcr());
+
+        List aoList = new ArrayList<String>();
+        jwtPayload.setAllowedOrigins(aoList);
+        assertEquals(aoList, jwtPayload.getAllowedOrigins());
+
+        JwtRealmAccess jwtRealmAccess = new JwtRealmAccess();
+        jwtPayload.setRealmAccess(jwtRealmAccess);
+        assertEquals(jwtRealmAccess, jwtPayload.getRealmAccess());
+
+        JwtResourceAccess jwtResourceAccess = new JwtResourceAccess();
+        jwtPayload.setResourceAccess(jwtResourceAccess);
+        assertEquals(jwtResourceAccess, jwtPayload.getResourceAccess());
+
+        jwtPayload.setName("name");
+        assertEquals("name", jwtPayload.getName());
+
+        jwtPayload.setPreferredUsername("preferred_username");
+        assertEquals("preferred_username", jwtPayload.getPreferredUsername());
+
+        jwtPayload.setGivenName("given_name");
+        assertEquals("given_name", jwtPayload.getGivenName());
+
+        jwtPayload.setFamilyName("family_name");
+        assertEquals("family_name", jwtPayload.getFamilyName());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/auth2/model/JwtRealmAccessTest.java b/src/test/java/org/eclipse/openk/auth2/model/JwtRealmAccessTest.java
new file mode 100644
index 0000000..291fa2f
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/auth2/model/JwtRealmAccessTest.java
@@ -0,0 +1,43 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.auth2.model;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+
+public class JwtRealmAccessTest {
+
+    List<String> rolesList = new ArrayList<String>();
+
+    @Before
+    public void createList() {
+
+        rolesList.add("role1");
+        rolesList.add("role2");
+        rolesList.add("role3");
+    }
+
+    @Test
+    public void testGettersAndSetters() {
+
+        JwtRealmAccess jwtRealmAccess = new JwtRealmAccess();
+        jwtRealmAccess.setRoles(rolesList);
+
+        assertEquals(rolesList, jwtRealmAccess.getRoles());
+        assertTrue(jwtRealmAccess.isInRole("role2"));
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/auth2/model/JwtResourceAccessTest.java b/src/test/java/org/eclipse/openk/auth2/model/JwtResourceAccessTest.java
new file mode 100644
index 0000000..4f59585
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/auth2/model/JwtResourceAccessTest.java
@@ -0,0 +1,41 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.auth2.model;
+
+import static junit.framework.TestCase.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
+
+public class JwtResourceAccessTest {
+
+    private JwtAccount account;
+
+    @Test
+    public void testGettersAndSetters() {
+
+      JwtResourceAccess resAcc = new JwtResourceAccess();
+      JwtAccount acc = new JwtAccount();
+
+      List rolesList = new ArrayList<String>();
+      rolesList.add("role4");
+      rolesList.add("role5");
+      rolesList.add("role6");
+
+      acc.setRoles(rolesList);
+      resAcc.setAccount(acc);
+
+      assertEquals(resAcc.getAccount(), acc);
+      assertEquals(resAcc.getAccount().getRoles(), rolesList);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/auth2/model/JwtTokenTest.java b/src/test/java/org/eclipse/openk/auth2/model/JwtTokenTest.java
new file mode 100644
index 0000000..ba9ef71
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/auth2/model/JwtTokenTest.java
@@ -0,0 +1,46 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.auth2.model;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class JwtTokenTest {
+
+    @Test
+    public void testGettersAndSetters(){
+
+        JwtToken jwtToken = new JwtToken();
+
+        jwtToken.setAccessToken("AccessToken");
+        assertEquals("AccessToken", jwtToken.getAccessToken());
+
+        jwtToken.setRefreshToken("RefreshToken");
+        assertEquals("RefreshToken", jwtToken.getRefreshToken());
+
+        jwtToken.setTokenType("TokenType");
+        assertEquals("TokenType", jwtToken.getTokenType());
+
+        jwtToken.setSessionState("SessionState");
+        assertEquals("SessionState", jwtToken.getSessionState());
+
+        jwtToken.setExpiresIn(13);
+        assertEquals((Integer)13, jwtToken.getExpiresIn());
+
+        jwtToken.setRefreshExpiresIn(14);
+        assertEquals((Integer)14, jwtToken.getRefreshExpiresIn());
+
+        jwtToken.setNotBeforePolicy(15);
+        assertEquals((Integer)15, jwtToken.getNotBeforePolicy());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/auth2/model/KeyCloakUserAccessTest.java b/src/test/java/org/eclipse/openk/auth2/model/KeyCloakUserAccessTest.java
new file mode 100644
index 0000000..9eade0b
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/auth2/model/KeyCloakUserAccessTest.java
@@ -0,0 +1,48 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.auth2.model;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class KeyCloakUserAccessTest {
+
+    private boolean manageGroupMembership;
+    private boolean view;
+    private boolean mapRoles;
+    private boolean impersonate;
+    private boolean manage;
+
+    @Test
+    public void testGettersAndSetters(){
+
+        KeyCloakUserAccess kcUserAccess = new KeyCloakUserAccess();
+
+        kcUserAccess.setManageGroupMembership(false);
+        assertEquals(false, kcUserAccess.getManageGroupMembership());
+
+        kcUserAccess.setView(false);
+        assertEquals(false, kcUserAccess.getView());
+
+        kcUserAccess.setMapRoles(false);
+        assertEquals(false, kcUserAccess.getMapRoles());
+
+        kcUserAccess.setImpersonate(false);
+        assertEquals(false, kcUserAccess.getImpersonate());
+
+        kcUserAccess.setManage(false);
+        assertEquals(false, kcUserAccess.getManage());
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/auth2/model/KeyCloakUserTest.java b/src/test/java/org/eclipse/openk/auth2/model/KeyCloakUserTest.java
new file mode 100644
index 0000000..3dee860
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/auth2/model/KeyCloakUserTest.java
@@ -0,0 +1,69 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.auth2.model;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
+
+public class KeyCloakUserTest {
+
+    @Test
+    public void testGettersAndSetters(){
+
+        KeyCloakUser kcUser = new KeyCloakUser();
+
+        kcUser.setId("7");
+        assertEquals("7", kcUser.getId());
+
+        kcUser.setCreatedTimestamp(9);
+        assertEquals(9, kcUser.getCreatedTimestamp());
+
+        kcUser.setUsername("testUsername");
+        assertEquals("testUsername", kcUser.getUsername());
+
+        kcUser.setEnabled(true);
+        assertEquals(true, kcUser.getEnabled());
+
+        kcUser.setTotp(true);
+        assertEquals(true, kcUser.getTotp());
+
+        kcUser.setEmailVerified(true);
+        assertEquals(true, kcUser.getEmailVerified());
+
+        kcUser.setFirstName("firstName");
+        assertEquals("firstName", kcUser.getFirstName());
+
+        kcUser.setLastName("lastName");
+        assertEquals("lastName", kcUser.getLastName());
+
+        List rolesList = new ArrayList<String>();
+        kcUser.setRealmRoles(rolesList);
+        assertEquals(rolesList, kcUser.getRealmRoles());
+
+        List dctList = new ArrayList<String>();
+        kcUser.setDisableableCredentialTypes(dctList);
+        assertEquals(dctList, kcUser.getDisableableCredentialTypes());
+
+        List raList = new ArrayList<String>();
+        kcUser.setRequiredActions(raList);
+        assertEquals(raList, kcUser.getRequiredActions());
+
+        KeyCloakUserAccess kcuAccess = new KeyCloakUserAccess();
+        kcUser.setAccess(kcuAccess);
+        assertEquals(kcuAccess, kcUser.getAccess());
+
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/auth2/util/JwtHelperTest.java b/src/test/java/org/eclipse/openk/auth2/util/JwtHelperTest.java
new file mode 100644
index 0000000..15e0358
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/auth2/util/JwtHelperTest.java
@@ -0,0 +1,69 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.auth2.util;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.openk.auth2.model.JwtPayload;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Test;
+
+public class JwtHelperTest {
+
+    JwtPayload pl;
+
+    @Test
+    public void testGetJwtPayload_Base64URL() {
+        String base64urlToken = "eyJqdGkiOiI3NDVmOTc4Zi00OTYwLTRlO" +
+                "WYtYmFiMS1jNjdkZjMzODEwYjQiLCJleH" +
+                "AiOjE1MTYwMTAxNDksIm5iZiI6MCwiaWF" +
+                "0IjoxNTE2MDA5ODQ5LCJpc3MiOiJodHRw" +
+                "Oi8vbG9jYWxob3N0OjgwOTAvYXV0aC9yZ" +
+                "WFsbXMvTVZWTmV0emUiLCJhdWQiOiJlbG" +
+                "9nYm9vay1iYWNrZW5kIiwic3ViIjoiNTk" +
+                "5ZWY3NzMtNjRmYS00MzM2LWIwNDktMmEz" +
+                "Njc4NTEzZTU4IiwidHlwIjoiQmVhcmVyI" +
+                "iwiYXpwIjoiZWxvZ2Jvb2stYmFja2VuZC" +
+                "IsImF1dGhfdGltZSI6MCwic2Vzc2lvbl9" +
+                "zdGF0ZSI6ImE2OGE4MzNkLTRiNTItNDgw" +
+                "My05MDU4LTRkNjJhNmI3NzI3MCIsImFjc" +
+                "iI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOl" +
+                "siKiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9" +
+                "sZXMiOlsiZWxvZ2Jvb2stYWNjZXNzIiwi" +
+                "ZWxvZ2Jvb2stbm9ybWFsdXNlciIsInVtY" +
+                "V9hdXRob3JpemF0aW9uIl19LCJyZXNvdX" +
+                "JjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJ" +
+                "yb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIs" +
+                "Im1hbmFnZS1hY2NvdW50LWxpbmtzIiwid" +
+                "mlldy1wcm9maWxlIl19fSwicm9sZXMiOi" +
+                "JbdW1hX2F1dGhvcml6YXRpb24sIGVsb2d" +
+                "ib29rLWFjY2VzcywgZWxvZ2Jvb2stbm9y" +
+                "bWFsdXNlciwgb2ZmbGluZV9hY2Nlc3NdI" +
+                "iwibmFtZSI6IlV3ZSByb8OfIiwicHJlZm" +
+                "VycmVkX3VzZXJuYW1lIjoib3Blbmt0ZXN" +
+                "0IiwiZ2l2ZW5fbmFtZSI6IlV3ZSIsImZh" +
+                "bWlseV9uYW1lIjoicm_DnyJ9";
+        base64urlToken = "AA." + base64urlToken + ".CC";
+        // this payload contains a char with is valid in Base64URL but NOT in Base64.
+        try {
+            pl = JwtHelper.getJwtPayload(base64urlToken);
+        }
+        catch (HttpStatusException sEx){
+            pl = null;
+        }
+
+            assertNotNull( pl ); }
+
+    public void testGetJwtPayload_notOk(){
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/common/GsonUTCDateAdapterTest.java b/src/test/java/org/eclipse/openk/common/GsonUTCDateAdapterTest.java
new file mode 100644
index 0000000..9dc9b72
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/common/GsonUTCDateAdapterTest.java
@@ -0,0 +1,40 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.common;
+
+import com.google.gson.JsonSerializationContext;
+import java.lang.reflect.Type;
+import java.util.Date;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class GsonUTCDateAdapterTest {
+    Date myDate;
+    Type type;
+    JsonSerializationContext jsonSerializationContext;
+
+    @Before
+
+
+    @Test
+    public void testSerialize(){
+//        GsonUTCDateAdapter dateAdapter = new GsonUTCDateAdapter();
+//        JsonElement jsonElement = dateAdapter.serialize(myDate,type,jsonSerializationContext);
+//        assertNotNull(jsonElement);
+    }
+    @Test
+    public void testDeserialize(){
+
+    }
+
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/common/mapper/GridMeasureMapperTest.java b/src/test/java/org/eclipse/openk/common/mapper/GridMeasureMapperTest.java
new file mode 100644
index 0000000..b232aaa
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/common/mapper/GridMeasureMapperTest.java
@@ -0,0 +1,289 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.common.mapper;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.PowerSystemResource;
+import org.eclipse.openk.api.SingleGridmeasure;
+import org.eclipse.openk.db.model.TblGridMeasure;
+import org.eclipse.openk.db.model.TblSingleGridmeasure;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class GridMeasureMapperTest {
+
+    TblGridMeasure mGm = new TblGridMeasure();
+    GridMeasure vmGm = new GridMeasure();
+    TblSingleGridmeasure mSGm = new TblSingleGridmeasure();
+    SingleGridmeasure vmSGm = new SingleGridmeasure();
+
+    java.time.LocalDateTime ldtAppointmenStartdate;
+    java.sql.Timestamp tsAppointmenStartdate;
+
+    java.time.LocalDateTime ldtPlannedStarttimeFirstSequence;
+    java.sql.Timestamp tsPlannedStarttimeFirstSequence;
+
+    java.time.LocalDateTime ldtPlannedStarttimeFirstSinglemeasure;
+    java.sql.Timestamp tsPlannedStarttimeFirstSinglemeasure;
+
+    java.time.LocalDateTime ldtPlannedEndtimeLastSinglemeasure;
+    java.sql.Timestamp tsPlannedEndtimeLastSinglemeasure;
+
+    java.time.LocalDateTime ldtPlannedEndtimeGridmeasure;
+    java.sql.Timestamp tsPlannedEndtimeGridmeasure;
+
+    java.time.LocalDateTime ldtStarttimeFirstSequence;
+    java.sql.Timestamp tsStarttimeFirstSequence;
+
+    java.time.LocalDateTime ldtStarttimeFirstSinglemeasure;
+    java.sql.Timestamp tsStarttimeFirstSinglemeasure;
+
+    java.time.LocalDateTime ldtEndtimeLastSinglemeasure;
+    java.sql.Timestamp tsEndtimeLastSinglemeasure;
+
+    java.time.LocalDateTime ldtEndtimeGridmeasure;
+    java.sql.Timestamp tsEndtimeGridmeasure;
+
+    java.time.LocalDateTime ldtTimeOfReallocation;
+    String tsTimeOfReallocation;
+
+    java.time.LocalDateTime ldtPlannedEndtimeSinglemeasure;
+    java.sql.Timestamp tsPlannedEndtimeSinglemeasure;
+
+    java.time.LocalDateTime ldtPlannedStarttimeSinglemeasure;
+    java.sql.Timestamp tsPlannedStarttimeSinglemeasure;
+
+    @Before
+    public void setDateTimeValues() {
+        ldtAppointmenStartdate = java.time.LocalDateTime.parse("2018-04-10T08:00:00");
+        tsAppointmenStartdate = java.sql.Timestamp.valueOf(ldtAppointmenStartdate);
+
+        ldtPlannedStarttimeFirstSequence = java.time.LocalDateTime.parse("2018-04-11T08:00:00");
+        tsPlannedStarttimeFirstSequence = java.sql.Timestamp.valueOf(ldtPlannedStarttimeFirstSequence);
+
+        ldtPlannedStarttimeFirstSinglemeasure = java.time.LocalDateTime.parse("2018-04-12T08:00:00");
+        tsPlannedStarttimeFirstSinglemeasure = java.sql.Timestamp.valueOf(ldtPlannedStarttimeFirstSinglemeasure);
+
+        ldtPlannedEndtimeLastSinglemeasure = java.time.LocalDateTime.parse("2018-04-13T08:00:00");
+        tsPlannedEndtimeLastSinglemeasure = java.sql.Timestamp.valueOf(ldtPlannedEndtimeLastSinglemeasure);
+
+        ldtPlannedEndtimeGridmeasure = java.time.LocalDateTime.parse("2018-04-14T08:00:00");
+        tsPlannedEndtimeGridmeasure = java.sql.Timestamp.valueOf(ldtPlannedEndtimeGridmeasure);
+
+        ldtStarttimeFirstSequence = java.time.LocalDateTime.parse("2018-04-15T08:00:00");
+        tsStarttimeFirstSequence = java.sql.Timestamp.valueOf(ldtStarttimeFirstSequence);
+
+        ldtStarttimeFirstSinglemeasure = java.time.LocalDateTime.parse("2018-04-16T08:00:00");
+        tsStarttimeFirstSinglemeasure = java.sql.Timestamp.valueOf(ldtStarttimeFirstSinglemeasure);
+
+        ldtEndtimeLastSinglemeasure = java.time.LocalDateTime.parse("2018-04-17T08:00:00");
+        tsEndtimeLastSinglemeasure = java.sql.Timestamp.valueOf(ldtEndtimeLastSinglemeasure);
+
+        ldtEndtimeGridmeasure = java.time.LocalDateTime.parse("2018-04-18T08:00:00");
+        tsEndtimeGridmeasure = java.sql.Timestamp.valueOf(ldtEndtimeGridmeasure);
+
+        ldtTimeOfReallocation = java.time.LocalDateTime.parse("2018-04-19T08:00:00");
+        tsTimeOfReallocation = "2018-04-19T08:00:00";
+
+        ldtEndtimeGridmeasure = java.time.LocalDateTime.parse("2018-04-18T08:00:00");
+        tsEndtimeGridmeasure = java.sql.Timestamp.valueOf(ldtEndtimeGridmeasure);
+
+        ldtPlannedEndtimeSinglemeasure = java.time.LocalDateTime.parse("2018-04-18T08:00:00");
+        tsPlannedEndtimeSinglemeasure = java.sql.Timestamp.valueOf(ldtEndtimeGridmeasure);
+
+        ldtPlannedStarttimeSinglemeasure = java.time.LocalDateTime.parse("2018-04-18T08:00:00");
+        tsPlannedStarttimeSinglemeasure = java.sql.Timestamp.valueOf(ldtEndtimeGridmeasure);
+    }
+
+    @Before
+    public void defineModel() {
+        mGm.setId(4);
+        mGm.setIdDescriptive("20");
+        mGm.setTitle("Title");
+        mGm.setAffectedResource("Affected Resource");
+        mGm.setRemark("Remark");
+        mGm.setSwitchingObject("Transformator");
+        mGm.setCostCenter("centre di costa brava");
+        mGm.setResponsibleOnSiteName("Robin Responsible");
+        mGm.setResponsibleOnSiteDepartment("Department ABC");
+        mGm.setApprovalBy("Armin Approver");
+        mGm.setAreaOfSwitching("Northeast");
+        mGm.setAppointmentRepetition("monthly");
+        mGm.setAppointmentStartdate(tsAppointmenStartdate);
+        mGm.setAppointmentNumberOf(6);
+        mGm.setPlannedStarttimeFirstSequence(tsPlannedStarttimeFirstSequence);
+        mGm.setPlannedStarttimeFirstSinglemeasure(tsPlannedStarttimeFirstSinglemeasure);
+        mGm.setPlannedEndtimeLastSinglemeasure(tsPlannedEndtimeLastSinglemeasure);
+        mGm.setPlannedEndtimeGridmeasure(tsPlannedEndtimeGridmeasure);
+        mGm.setStarttimeFirstSequence(tsStarttimeFirstSequence);
+        mGm.setStarttimeFirstSinglemeasure(tsStarttimeFirstSinglemeasure);
+        mGm.setEndtimeLastSinglemeasure(tsEndtimeLastSinglemeasure);
+        mGm.setEndtimeGridmeasure(tsEndtimeGridmeasure);
+        mGm.setTimeOfReallocation(tsTimeOfReallocation);
+        mGm.setDescription("This is a description");
+        mGm.setFkRefBranch(2);
+        mGm.setFkRefBranchLevel(3);
+        mGm.setCreateUser("Create User");
+        mGm.setCreateUserDepartment("Create User Department");
+        mGm.setFkRefGmStatus(2);
+
+        mSGm.setId(1);
+        mSGm.setDescription("description");
+        mSGm.setFkTblGridmeasure(4);
+        mSGm.setSortorder(1);
+        mSGm.setSwitchingObject("transformator");
+        mSGm.setTitle("title");
+        mSGm.setCimDescription("description");
+        mSGm.setCimId("2");
+        mSGm.setCimName("tool");
+        mSGm.setCreateUser("otto");
+        mSGm.setModUser("hugo");
+        mSGm.setPlannedEndtimeSinglemeasure(tsPlannedEndtimeSinglemeasure);
+        mSGm.setPlannedStarttimeSinglemeasure(tsPlannedStarttimeSinglemeasure);
+    }
+
+    @Before
+    public void defineViewModel() {
+        vmGm.setId(4);
+        vmGm.setDescriptiveId("20");
+        vmGm.setTitle("Title");
+        vmGm.setAffectedResource("Affected Resource");
+        vmGm.setRemark("Remark");
+        vmGm.setSwitchingObject("Transformator");
+        vmGm.setCostCenter("centre di costa brava");
+        vmGm.setResponsibleOnSiteName("Robin Responsible");
+        vmGm.setResponsibleOnSiteDepartment("Department ABC");
+        vmGm.setApprovalBy("Armin Approver");
+        vmGm.setAreaOfSwitching("Northeast");
+        vmGm.setAppointmentRepetition("monthly");
+        vmGm.setAppointmentStartdate(tsAppointmenStartdate);
+        vmGm.setAppointmentNumberOf(6);
+        vmGm.setPlannedStarttimeFirstSequence(tsPlannedStarttimeFirstSequence);
+        vmGm.setPlannedStarttimeFirstSinglemeasure(tsPlannedStarttimeFirstSinglemeasure);
+        vmGm.setPlannedEndtimeLastSinglemeasure(tsPlannedEndtimeLastSinglemeasure);
+        vmGm.setPlannedEndtimeGridmeasure(tsPlannedEndtimeGridmeasure);
+        vmGm.setStarttimeFirstSequence(tsStarttimeFirstSequence);
+        vmGm.setStarttimeFirstSinglemeasure(tsStarttimeFirstSinglemeasure);
+        vmGm.setEndtimeLastSinglemeasure(tsEndtimeLastSinglemeasure);
+        vmGm.setEndtimeGridmeasure(tsEndtimeGridmeasure);
+        vmGm.setTimeOfReallocation(tsTimeOfReallocation);
+        vmGm.setDescription("This is a description");
+        vmGm.setBranchId(2);
+        vmGm.setBranchLevelId(3);
+        vmGm.setCreateUser("Create User");
+        vmGm.setCreateUserDepartment("Create User Department");
+        vmGm.setStatusId(2);
+
+        vmSGm.setId(1);
+        vmSGm.setDescription("description");
+        vmSGm.setSortorder(1);
+        vmSGm.setSwitchingObject("transformator");
+        vmSGm.setTitle("title");
+        vmSGm.setPlannedEndtimeSinglemeasure(tsPlannedEndtimeSinglemeasure);
+        vmSGm.setPlannedStarttimeSinglemeasure(tsPlannedStarttimeSinglemeasure);
+        PowerSystemResource pr = new PowerSystemResource();
+        pr.setCimId("2");
+        pr.setCimDescription("description");
+        pr.setCimName("tool");
+        vmSGm.setPowerSystemResource(pr);
+    }
+
+    @Test
+    public void testMapFromVModel()throws IOException {
+
+        GridMeasureMapper mapper = new GridMeasureMapper();
+        TblGridMeasure testmodel =  mapper.mapFromVModel(vmGm);
+
+        assertEquals(mGm.getId(), testmodel.getId());
+        assertEquals(mGm.getIdDescriptive(), testmodel.getIdDescriptive());
+        assertEquals(mGm.getTitle(), testmodel.getTitle());
+        assertEquals(mGm.getAffectedResource(), testmodel.getAffectedResource());
+        assertEquals(mGm.getRemark(), testmodel.getRemark());
+        assertEquals(mGm.getSwitchingObject(), testmodel.getSwitchingObject());
+        assertEquals(mGm.getCostCenter(), testmodel.getCostCenter());
+        assertEquals(mGm.getResponsibleOnSiteName(), testmodel.getResponsibleOnSiteName());
+        assertEquals(mGm.getResponsibleOnSiteDepartment(), testmodel.getResponsibleOnSiteDepartment());
+        assertEquals(mGm.getApprovalBy(), testmodel.getApprovalBy());
+        assertEquals(mGm.getAreaOfSwitching(), testmodel.getAreaOfSwitching());
+        assertEquals(mGm.getAppointmentRepetition(), testmodel.getAppointmentRepetition());
+        assertEquals(mGm.getAppointmentStartdate(), testmodel.getAppointmentStartdate());
+        assertEquals(mGm.getAppointmentNumberOf(), testmodel.getAppointmentNumberOf());
+        assertEquals(mGm.getPlannedStarttimeFirstSequence(), testmodel.getPlannedStarttimeFirstSequence());
+        assertEquals(mGm.getPlannedStarttimeFirstSinglemeasure(), testmodel.getPlannedStarttimeFirstSinglemeasure());
+        assertEquals(mGm.getPlannedEndtimeLastSinglemeasure(), testmodel.getPlannedEndtimeLastSinglemeasure());
+        assertEquals(mGm.getPlannedEndtimeGridmeasure(), testmodel.getPlannedEndtimeGridmeasure());
+        assertEquals(mGm.getStarttimeFirstSequence(), testmodel.getStarttimeFirstSequence());
+        assertEquals(mGm.getStarttimeFirstSinglemeasure(), testmodel.getStarttimeFirstSinglemeasure());
+        assertEquals(mGm.getEndtimeLastSinglemeasure(), testmodel.getEndtimeLastSinglemeasure());
+        assertEquals(mGm.getEndtimeGridmeasure(), testmodel.getEndtimeGridmeasure());
+        assertEquals(mGm.getTimeOfReallocation(), testmodel.getTimeOfReallocation());
+        assertEquals(mGm.getDescription(), testmodel.getDescription());
+        assertEquals(mGm.getFkRefBranch(), testmodel.getFkRefBranch());
+        assertEquals(mGm.getFkRefBranchLevel(), testmodel.getFkRefBranchLevel());
+        assertEquals(mGm.getCreateUser(), testmodel.getCreateUser());
+        assertEquals(mGm.getCreateUserDepartment(), testmodel.getCreateUserDepartment());
+
+    }
+
+    @Test
+    public void testMapFromModel()throws IOException{
+
+        GridMeasureMapper mapper = new GridMeasureMapper();
+        GridMeasure testVmodel =  mapper.mapToVModel(mGm);
+
+        assertEquals(vmGm.getId(), testVmodel.getId());
+        assertEquals(vmGm.getDescriptiveId(), testVmodel.getDescriptiveId());
+        assertEquals(vmGm.getTitle(), testVmodel.getTitle());
+        assertEquals(vmGm.getAffectedResource(), testVmodel.getAffectedResource());
+        assertEquals(vmGm.getRemark(), testVmodel.getRemark());
+        assertEquals(vmGm.getSwitchingObject(), testVmodel.getSwitchingObject());
+        assertEquals(vmGm.getCostCenter(), testVmodel.getCostCenter());
+        assertEquals(vmGm.getResponsibleOnSiteName(), testVmodel.getResponsibleOnSiteName());
+        assertEquals(vmGm.getResponsibleOnSiteDepartment(), testVmodel.getResponsibleOnSiteDepartment());
+        assertEquals(vmGm.getApprovalBy(), testVmodel.getApprovalBy());
+        assertEquals(vmGm.getAreaOfSwitching(), testVmodel.getAreaOfSwitching());
+        assertEquals(vmGm.getAppointmentRepetition(), testVmodel.getAppointmentRepetition());
+        assertEquals(vmGm.getAppointmentStartdate(), testVmodel.getAppointmentStartdate());
+        assertEquals(vmGm.getAppointmentNumberOf(), testVmodel.getAppointmentNumberOf());
+        assertEquals(vmGm.getPlannedStarttimeFirstSequence(), testVmodel.getPlannedStarttimeFirstSequence());
+        assertEquals(vmGm.getPlannedStarttimeFirstSinglemeasure(), testVmodel.getPlannedStarttimeFirstSinglemeasure());
+        assertEquals(vmGm.getPlannedEndtimeLastSinglemeasure(), testVmodel.getPlannedEndtimeLastSinglemeasure());
+        assertEquals(vmGm.getPlannedEndtimeGridmeasure(), testVmodel.getPlannedEndtimeGridmeasure());
+        assertEquals(vmGm.getStarttimeFirstSequence(), testVmodel.getStarttimeFirstSequence());
+        assertEquals(vmGm.getStarttimeFirstSinglemeasure(), testVmodel.getStarttimeFirstSinglemeasure());
+        assertEquals(vmGm.getEndtimeLastSinglemeasure(), testVmodel.getEndtimeLastSinglemeasure());
+        assertEquals(vmGm.getEndtimeGridmeasure(), testVmodel.getEndtimeGridmeasure());
+        assertEquals(vmGm.getTimeOfReallocation(), testVmodel.getTimeOfReallocation());
+        assertEquals(vmGm.getDescription(), testVmodel.getDescription());
+        assertEquals(vmGm.getBranchId(), testVmodel.getBranchId());
+        assertEquals(vmGm.getBranchLevelId(), testVmodel.getBranchLevelId());
+        assertEquals(vmGm.getCreateUser(), testVmodel.getCreateUser());
+        assertEquals(vmGm.getCreateUserDepartment(), testVmodel.getCreateUserDepartment());
+    }
+
+    @Test
+    public void testAdjustPowerSystemResourceMapFromVModel()throws IOException {
+
+        GridMeasureMapper mapper = new GridMeasureMapper();
+        mapper.adjustPowerSystemResourceMapFromViewModel(vmSGm, mSGm);
+
+        assertEquals(mSGm.getCimId(), vmSGm.getPowerSystemResource().getCimId());
+        assertEquals(mSGm.getCimDescription(), vmSGm.getPowerSystemResource().getCimDescription());
+        assertEquals(mSGm.getCimName(), vmSGm.getPowerSystemResource().getCimName());
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/common/mapper/generic/GenericApiToDBMapperTest.java b/src/test/java/org/eclipse/openk/common/mapper/generic/GenericApiToDBMapperTest.java
new file mode 100644
index 0000000..5e83ade
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/common/mapper/generic/GenericApiToDBMapperTest.java
@@ -0,0 +1,353 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.common.mapper.generic;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNotSame;
+
+import java.sql.Date;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelClass;
+import org.eclipse.openk.common.mapper.generic.annotations.MapDbModelField;
+import org.junit.Test;
+
+class TestPojoDb {
+    private int integerField;
+    private String stringField;
+    private Date dateField;
+    private boolean bField;
+    private byte byField;
+    private char charField;
+    private double doField;
+    private float floField;
+    private long loField;
+    private short shorField;
+
+    private String independedField;
+
+    public TestPojoDb() {
+
+    }
+
+    public int getIntegerField() {
+        return integerField;
+    }
+
+    public void setIntegerField(int integerField) {
+        this.integerField = integerField;
+    }
+
+    public String getStringField() {
+        return stringField;
+    }
+
+    public void setStringField(String stringField) {
+        this.stringField = stringField;
+    }
+
+    public Date getDateField() {
+        return dateField;
+    }
+
+    public void setDateField(Date dateField) {
+        this.dateField = dateField;
+    }
+
+    public boolean isbField() {
+        return bField;
+    }
+
+    public void setbField(boolean bField) {
+        this.bField = bField;
+    }
+
+    public byte getByField() {
+        return byField;
+    }
+
+    public void setByField(byte byField) {
+        this.byField = byField;
+    }
+
+    public char getCharField() {
+        return charField;
+    }
+
+    public void setCharField(char charField) {
+        this.charField = charField;
+    }
+
+    public double getDoField() {
+        return doField;
+    }
+
+    public void setDoField(double doField) {
+        this.doField = doField;
+    }
+
+    public float getFloField() {
+        return floField;
+    }
+
+    public void setFloField(float floField) {
+        this.floField = floField;
+    }
+
+    public long getLoField() {
+        return loField;
+    }
+
+    public void setLoField(long loField) {
+        this.loField = loField;
+    }
+
+    public short getShorField() {
+        return shorField;
+    }
+
+    public void setShorField(short shorField) {
+        this.shorField = shorField;
+    }
+
+    public String getIndependedField() {
+        return independedField;
+    }
+
+    public void setIndependedField(String independedField) {
+        this.independedField = independedField;
+    }
+}
+
+class TestClassWithoutAnnotation {
+    private int i;
+}
+
+@MapDbModelClass(classType = GenericApiToDbMapper.class)
+class TestClassWithWrongAnnotation {
+    private float foo;
+}
+
+
+
+@MapDbModelClass(classType = TestPojoDb.class)
+class TestPojoVMWithoutConstructor {
+    private TestPojoVMWithoutConstructor() {
+    }
+}
+
+
+@MapDbModelClass(classType = TestPojoDb.class)
+class TestPojoVM {
+    public TestPojoVM() {}
+
+    @MapDbModelField( fieldName = "integerField")
+    private int intField;
+
+    @MapDbModelField( fieldName = "stringField")
+    private String strField;
+
+    @MapDbModelField
+    private Date dateField;
+
+    @MapDbModelField
+    private boolean bField;
+
+    @MapDbModelField
+    private byte byField;
+
+    @MapDbModelField
+    private char charField;
+
+    @MapDbModelField
+    private double doField;
+
+    @MapDbModelField
+    private float floField;
+
+    @MapDbModelField
+    private long loField;
+
+    @MapDbModelField
+    private short shorField;
+
+    private String independedField;
+
+    public int getIntField() {
+        return intField;
+    }
+
+    public void setIntegerField(int integerField) {
+        this.intField = integerField;
+    }
+
+    public Date getDateField() {
+        return dateField;
+    }
+
+    public void setDateField(Date dateField) {
+        this.dateField = dateField;
+    }
+
+    public void setIntField(int intField) {
+        this.intField = intField;
+    }
+
+    public String getStrField() {
+        return strField;
+    }
+
+    public void setStrField(String strField) {
+        this.strField = strField;
+    }
+
+    public boolean isbField() {
+        return bField;
+    }
+
+    public void setbField(boolean bField) {
+        this.bField = bField;
+    }
+
+    public byte getByField() {
+        return byField;
+    }
+
+    public void setByField(byte byField) {
+        this.byField = byField;
+    }
+
+    public char getCharField() {
+        return charField;
+    }
+
+    public void setCharField(char charField) {
+        this.charField = charField;
+    }
+
+    public double getDoField() {
+        return doField;
+    }
+
+    public void setDoField(double doField) {
+        this.doField = doField;
+    }
+
+    public float getFloField() {
+        return floField;
+    }
+
+    public void setFloField(float floField) {
+        this.floField = floField;
+    }
+
+    public long getLoField() {
+        return loField;
+    }
+
+    public void setLoField(long loField) {
+        this.loField = loField;
+    }
+
+    public short getShorField() {
+        return shorField;
+    }
+
+    public void setShorField(short shorField) {
+        this.shorField = shorField;
+    }
+
+    public String getIndependedField() {
+        return independedField;
+    }
+
+    public void setIndependedField(String independedField) {
+        this.independedField = independedField;
+    }
+}
+
+
+public class GenericApiToDBMapperTest {
+
+    private TestPojoDb fillDBPojo() {
+        TestPojoDb p = new TestPojoDb();
+        p.setDateField(new java.sql.Date(System.currentTimeMillis()));
+        p.setIntegerField(666);
+        p.setStringField("Der Testat");
+        p.setbField(true);
+        p.setByField((byte)255);
+        p.setCharField('f');
+        p.setDoField(1.2f);
+        p.setFloField(1.3f);
+        p.setLoField(1024L);
+        p.setShorField((short)640);
+
+        p.setIndependedField("DBOwn");
+
+        return p;
+    }
+
+    @Test
+    public void testMapper() throws Exception {
+        TestPojoDb db = fillDBPojo();
+        db.setIndependedField("Independence");
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+
+        TestPojoVM vmpojo = mapper.mapToViewModel(TestPojoVM.class, db);
+
+        assertEquals( db.getIntegerField(), vmpojo.getIntField());
+        assertEquals( db.getStringField(), vmpojo.getStrField());
+        assertEquals( db.isbField(), vmpojo.isbField());
+        assertEquals( db.getByField(), vmpojo.getByField());
+        assertEquals( db.getCharField(), vmpojo.getCharField());
+        assertEquals( db.getDoField(), vmpojo.getDoField());
+        assertEquals( db.getFloField(), vmpojo.getFloField());
+        assertEquals( db.getLoField(), vmpojo.getLoField());
+        assertEquals( db.getShorField(), vmpojo.getShorField());
+
+        TestPojoDb dbpojo = mapper.mapFromViewModel(TestPojoDb.class, vmpojo);
+
+        assertEquals( db.getIntegerField(), dbpojo.getIntegerField());
+        assertEquals( db.getStringField(), dbpojo.getStringField());
+        assertEquals( db.isbField(), dbpojo.isbField());
+        assertEquals( db.getByField(), dbpojo.getByField());
+        assertEquals( db.getCharField(), dbpojo.getCharField());
+        assertEquals( db.getDoField(), dbpojo.getDoField());
+        assertEquals( db.getFloField(), dbpojo.getFloField());
+        assertEquals( db.getLoField(), dbpojo.getLoField());
+        assertEquals( db.getShorField(), dbpojo.getShorField());
+
+        assertNotSame( db.getIndependedField(), dbpojo.getIndependedField());
+
+    }
+
+    @Test( expected = Exception.class )
+    public void testMapperWithMissingClassAnno() throws Exception {
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        TestClassWithoutAnnotation testObj = new TestClassWithoutAnnotation();
+        TestPojoDb dbpojo = mapper.mapFromViewModel(TestPojoDb.class, testObj);
+    }
+
+    @Test( expected = Exception.class )
+    public void testMapperWithWrongClassAnno() throws Exception {
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        TestClassWithWrongAnnotation testObj = new TestClassWithWrongAnnotation();
+        TestPojoDb dbpojo = mapper.mapToViewModel(TestPojoDb.class, testObj);
+    }
+
+
+    @Test( expected = Exception.class )
+    public void testMapperWithNoConstrClass() throws Exception {
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        TestPojoDb dbpojo = new TestPojoDb();
+
+        TestPojoVMWithoutConstructor target = mapper.mapToViewModel(TestPojoVMWithoutConstructor.class, dbpojo);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/common/util/ResourceLoaderBaseTest.java b/src/test/java/org/eclipse/openk/common/util/ResourceLoaderBaseTest.java
new file mode 100644
index 0000000..da883f5
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/common/util/ResourceLoaderBaseTest.java
@@ -0,0 +1,37 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.common.util;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+
+public class ResourceLoaderBaseTest {
+
+    @Test
+    public void testLoadStringFromResourceNotFound() {
+        ResourceLoaderBase rlb = new ResourceLoaderBase();
+        String retString = rlb.loadStringFromResource("testNoExisting.txt");
+
+        assertNull(retString);
+    }
+
+    @Test
+    public void testLoadStringFromResource() {
+        ResourceLoaderBase rlb = new ResourceLoaderBase();
+        String retString = rlb.loadStringFromResource("testCase.txt");
+
+        assertNotNull(retString);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/BaseTaskImpl.java b/src/test/java/org/eclipse/openk/core/bpmn/base/BaseTaskImpl.java
new file mode 100644
index 0000000..78c7838
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/BaseTaskImpl.java
@@ -0,0 +1,41 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+
+import org.eclipse.openk.core.bpmn.base.tasks.BaseTask;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public class BaseTaskImpl extends BaseTask<TestProcessSubject> {
+    public boolean leaveStepCalled = false;
+    public boolean enterStepCalled = false;
+
+    public BaseTaskImpl( String description ) {
+        super(description);
+    }
+
+    @Override
+    protected void onLeaveStep(TestProcessSubject model) throws ProcessException {
+        this.leaveStepCalled = true;
+    }
+
+    @Override
+    protected void onEnterStep(TestProcessSubject model) throws ProcessException {
+        this.enterStepCalled = true;
+    }
+
+    @Override
+    protected void onRecover(TestProcessSubject model) throws ProcessException, HttpStatusException {
+        this.leaveStep(model);
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/DecisionTaskImpl.java b/src/test/java/org/eclipse/openk/core/bpmn/base/DecisionTaskImpl.java
new file mode 100644
index 0000000..bd62fd7
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/DecisionTaskImpl.java
@@ -0,0 +1,46 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+
+public class DecisionTaskImpl extends DecisionTask<TestProcessSubject> {
+
+    public DecisionTaskImpl(String description) {
+        super(description);
+    }
+
+    @Override
+    public OutputPort decide(TestProcessSubject model) throws ProcessException {
+        if( model.yes ) {
+            return OutputPort.YES;
+        }
+        if( model.no ) {
+            return OutputPort.NO;
+        }
+
+        switch( model.decision ) {
+            case 1:
+                return OutputPort.PORT1;
+            case 2:
+                return OutputPort.PORT2;
+            case 3:
+                return OutputPort.PORT3;
+            case 4:
+                return OutputPort.PORT4;
+            case 5:
+                return OutputPort.PORT5;
+            default:
+                throw new ProcessException("Unknown Port");
+        }
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/ProcessExceptionTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/ProcessExceptionTest.java
new file mode 100644
index 0000000..f1a98c3
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/ProcessExceptionTest.java
@@ -0,0 +1,27 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+import static junit.framework.TestCase.assertEquals;
+
+import org.junit.Test;
+
+public class ProcessExceptionTest {
+    @Test
+    public void testExceptionCreationForCoverage() {
+        new ProcessException("testOnly");
+        Exception innerException = new ProcessException("inner Exception");
+        Exception exc = new ProcessException("with Exception", innerException);
+        assertEquals( exc.getCause(), innerException);
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/ProcessGridImpl.java b/src/test/java/org/eclipse/openk/core/bpmn/base/ProcessGridImpl.java
new file mode 100644
index 0000000..9516bec
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/ProcessGridImpl.java
@@ -0,0 +1,30 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+import org.eclipse.openk.core.bpmn.base.tasks.EndPointTask;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public class ProcessGridImpl extends ProcessGrid {
+    public ProcessGridImpl() throws ProcessException, HttpStatusException {
+        ProcessTask startTask = register(ProcessStateImpl.UITASK, new UserInteractionTaskImpl("UITASK"));
+        ProcessTask serviceTask = register(ProcessStateImpl.SERVICE, new ServiceTaskImpl("SERVICETASK"));
+        ProcessTask endpoint = register(ProcessStateImpl.ENDPOINT, new EndPointTask("ENDPOINT CHARLY"));
+
+        startTask.connectOutputTo(serviceTask);
+        serviceTask.connectOutputTo(endpoint);
+    }
+
+    public ProcessTask getService() throws ProcessException {
+        return resolve( ProcessStateImpl.SERVICE);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/ProcessStateImpl.java b/src/test/java/org/eclipse/openk/core/bpmn/base/ProcessStateImpl.java
new file mode 100644
index 0000000..e416ef6
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/ProcessStateImpl.java
@@ -0,0 +1,18 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+public enum ProcessStateImpl implements ProcessState {
+    UITASK, SERVICE, ENDPOINT, UNREACHABLE;
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/ServiceTaskImpl.java b/src/test/java/org/eclipse/openk/core/bpmn/base/ServiceTaskImpl.java
new file mode 100644
index 0000000..d8551d7
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/ServiceTaskImpl.java
@@ -0,0 +1,35 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+import org.eclipse.openk.core.bpmn.base.tasks.ServiceTask;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public class ServiceTaskImpl extends ServiceTask<TestProcessSubject> {
+    public boolean leaveStepCalled = false;
+    public boolean enterStepCalled = false;
+
+    public ServiceTaskImpl(String description ) {
+        super(description);
+    }
+
+    @Override
+    protected void onLeaveStep(TestProcessSubject model) throws ProcessException {
+        this.leaveStepCalled = true;
+    }
+
+    @Override
+    public void enterStep(ProcessSubject model ) throws ProcessException, HttpStatusException {
+        super.enterStep(model);
+        this.enterStepCalled = true;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/TestProcessSubject.java b/src/test/java/org/eclipse/openk/core/bpmn/base/TestProcessSubject.java
new file mode 100644
index 0000000..4a5141c
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/TestProcessSubject.java
@@ -0,0 +1,25 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+public class TestProcessSubject implements ProcessSubject {
+    public int id;
+    public int decision;
+    public String text;
+    public boolean yes;
+    public boolean no;
+    public boolean saved = false;
+
+    public void save() {
+        saved = true;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/UserInteractionTaskImpl.java b/src/test/java/org/eclipse/openk/core/bpmn/base/UserInteractionTaskImpl.java
new file mode 100644
index 0000000..3175d56
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/UserInteractionTaskImpl.java
@@ -0,0 +1,41 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base;
+
+
+import org.eclipse.openk.core.bpmn.base.tasks.UserInteractionTask;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+
+public class UserInteractionTaskImpl extends UserInteractionTask<TestProcessSubject> {
+    public boolean leaveStepCalled = false;
+    public boolean enterStepCalled = false;
+
+    public UserInteractionTaskImpl(String description ) {
+        super(description);
+    }
+
+    @Override
+    protected void onLeaveStep(TestProcessSubject model) throws ProcessException {
+        this.leaveStepCalled = true;
+    }
+
+    @Override
+    protected void onEnterStep(TestProcessSubject model) throws ProcessException {
+        // implement empty
+    }
+
+    @Override
+    public void enterStep(ProcessSubject model ) throws ProcessException, HttpStatusException {
+        super.enterStep(model);
+        this.enterStepCalled = true;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/BaseTaskTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/BaseTaskTest.java
new file mode 100644
index 0000000..4e65167
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/BaseTaskTest.java
@@ -0,0 +1,58 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.openk.core.bpmn.base.BaseTaskImpl;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.TestProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Test;
+
+public class BaseTaskTest {
+    private static final String DESC = "TestTask";
+
+
+    @Test
+    public void testBaseTask_NotConnected() throws ProcessException, HttpStatusException {
+        BaseTaskImpl testtask1 = new BaseTaskImpl(DESC);
+
+        TestProcessSubject subject = new TestProcessSubject();
+
+        assertEquals(DESC, testtask1.getDescription());
+
+        testtask1.enterStep(subject);
+        assertTrue(testtask1.enterStepCalled);
+
+        testtask1.leaveStep(subject);
+        // fireOnconnectedOutput -> does nothing
+
+    }
+
+    @Test
+    public void testBaseTask_Connected() throws ProcessException, HttpStatusException {
+        BaseTaskImpl testtask1 = new BaseTaskImpl(DESC);
+        BaseTaskImpl testtask2 = new BaseTaskImpl(DESC);
+
+        TestProcessSubject subject = new TestProcessSubject();
+
+        testtask1.connectOutputTo(testtask2);
+        testtask1.leaveStep(subject);
+        assertTrue(testtask2.enterStepCalled);
+
+
+
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideAnotherSinglemeasureTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideAnotherSinglemeasureTest.java
new file mode 100644
index 0000000..17937b2
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideAnotherSinglemeasureTest.java
@@ -0,0 +1,66 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import static junit.framework.TestCase.assertEquals;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.DecideAnotherSinglemeasure;
+import org.junit.Test;
+import org.junit.Ignore;
+import org.powermock.reflect.Whitebox;
+
+public class DecideAnotherSinglemeasureTest {
+
+    @Test
+    public void decideMethodIfEqualsToInWorkTest() throws ProcessException {
+        DecideAnotherSinglemeasure das = new DecideAnotherSinglemeasure();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.IN_WORK.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = das.decide(pps);
+            assertEquals(DecisionTask.OutputPort.NO, r);
+        }
+
+    }
+
+//    @Test
+//    @Ignore
+//    public void decideMethodIfNotEqualsToInWorkTest() throws ProcessException {
+//        DecideAnotherSinglemeasure das = new DecideAnotherSinglemeasure();
+//        PlgmProcessSubject pps = null;
+//        try {
+//            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        GridMeasure gm = new GridMeasure();
+//        gm.setStatusId(PlgmProcessState.NEW.getStatusValue());
+//        if (pps != null){
+//            pps.setGridMeasure(gm);
+//            DecisionTask.OutputPort r = das.decide(pps);
+//            assertEquals(DecisionTask.OutputPort.YES, r);
+//        }
+//    }
+
+}
+
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureAppliedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureAppliedTest.java
new file mode 100644
index 0000000..cd3994f
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureAppliedTest.java
@@ -0,0 +1,103 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.DecideMeasureApplied;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class DecideMeasureAppliedTest {
+
+    @Test
+    public void decideMethodIfEqualsToAppliedIdTest() throws ProcessException {
+        DecideMeasureApplied dma = new DecideMeasureApplied();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.APPLIED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dma.decide(pps);
+            assertEquals(DecisionTask.OutputPort.PORT1, r);
+        }
+
+    }
+
+    @Test
+    public void decideMethodIfEqualsToNewTest() throws ProcessException {
+        DecideMeasureApplied dma = new DecideMeasureApplied();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.NEW.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dma.decide(pps);
+            assertEquals(DecisionTask.OutputPort.PORT2, r);
+        }
+
+    }
+
+
+    @Test
+    public void decideMethodIfNotEqualsToAppliedIdTest() throws ProcessException {
+        DecideMeasureApplied dma = new DecideMeasureApplied();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.CANCELED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dma.decide(pps);
+            assertEquals(DecisionTask.OutputPort.PORT3, r);
+        }
+
+    }
+
+    @Test(expected = ProcessException.class)
+    public void decideMethodIfNotEqualsToRightStatusIdTest() throws ProcessException {
+        DecideMeasureApplied dma = new DecideMeasureApplied();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.CLOSED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            dma.decide(pps);
+        }
+
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureApprovedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureApprovedTest.java
new file mode 100644
index 0000000..1d7e2c5
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureApprovedTest.java
@@ -0,0 +1,103 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.DecideMeasureApproved;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class DecideMeasureApprovedTest {
+
+    @Test
+    public void decideMethodIfEqualsToApprovedIdTest() throws ProcessException {
+        DecideMeasureApproved dma = new DecideMeasureApproved();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.APPROVED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dma.decide(pps);
+            assertEquals(DecisionTask.OutputPort.PORT1, r);
+        }
+
+    }
+
+    @Test
+    public void decideMethodIfEqualsToCanceledTest() throws ProcessException {
+        DecideMeasureApproved dma = new DecideMeasureApproved();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.CANCELED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dma.decide(pps);
+            assertEquals(DecisionTask.OutputPort.PORT2, r);
+        }
+
+    }
+
+    @Test
+    public void decideMethodIfEqualsToRejectedTest() throws ProcessException {
+        DecideMeasureApproved dma = new DecideMeasureApproved();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.REJECTED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dma.decide(pps);
+            assertEquals(DecisionTask.OutputPort.PORT3, r);
+        }
+
+    }
+
+
+    @Test( expected = ProcessException.class)
+    public void decideMethodIfNotEqualsToApprovedIdTest() throws ProcessException {
+        DecideMeasureApproved dma = new DecideMeasureApproved();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.NEW.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dma.decide(pps);
+        }
+
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureNotNeededOrRequestedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureNotNeededOrRequestedTest.java
new file mode 100644
index 0000000..8e36278
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureNotNeededOrRequestedTest.java
@@ -0,0 +1,84 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.DecideMeasureNotNeededOrRequested;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class DecideMeasureNotNeededOrRequestedTest {
+
+    @Test
+    public void decideMethodIfEqualsToRequestedTest() throws ProcessException {
+        DecideMeasureNotNeededOrRequested dmr = new DecideMeasureNotNeededOrRequested();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.REQUESTED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dmr.decide(pps);
+            assertEquals(DecisionTask.OutputPort.NO, r);
+        }
+
+    }
+
+    @Test
+    public void decideMethodIfEqualsToCanceledTest() throws ProcessException {
+        DecideMeasureNotNeededOrRequested dmr = new DecideMeasureNotNeededOrRequested();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.CANCELED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dmr.decide(pps);
+            assertEquals(DecisionTask.OutputPort.YES, r);
+        }
+    }
+
+
+    @Test( expected = ProcessException.class)
+    public void decideMethodIfNotEqualsToRequestedIdTest() throws ProcessException {
+        DecideMeasureNotNeededOrRequested dma = new DecideMeasureNotNeededOrRequested();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.NEW.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dma.decide(pps);
+        }
+
+    }
+
+}
+
+
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasurePossibleTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasurePossibleTest.java
new file mode 100644
index 0000000..42d8b93
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasurePossibleTest.java
@@ -0,0 +1,82 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.DecideMeasurePossible;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import static junit.framework.TestCase.assertEquals;
+
+
+public class DecideMeasurePossibleTest {
+
+    @Test
+    public void decideMethodStateForApprovalTest() throws ProcessException {
+        DecideMeasurePossible dmp = new DecideMeasurePossible();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId( PlgmProcessState.FOR_APPROVAL.getStatusValue() );
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dmp.decide(pps);
+            assertEquals(DecisionTask.OutputPort.YES, r);
+        }
+
+    }
+
+    @Test
+    public void decideMethodStateCanceledTest() throws ProcessException {
+        DecideMeasurePossible dmp = new DecideMeasurePossible();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId( PlgmProcessState.CANCELED.getStatusValue() );
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dmp.decide(pps);
+            assertEquals(DecisionTask.OutputPort.NO, r);
+        }
+
+    }
+
+    @Test
+    public void decideMethodStateInvalidTest() throws ProcessException {
+        DecideMeasurePossible dmp = new DecideMeasurePossible();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId( PlgmProcessState.NEW.getStatusValue() );
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dmp.decide(pps);
+            assertEquals(DecisionTask.OutputPort.YES, r);
+        }
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureReleasedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureReleasedTest.java
new file mode 100644
index 0000000..614d6f0
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureReleasedTest.java
@@ -0,0 +1,101 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.DecideMeasureReleased;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class DecideMeasureReleasedTest {
+
+    @Test
+    public void decideMethodIfEqualsToReleasedTest() throws ProcessException {
+        DecideMeasureReleased dmr = new DecideMeasureReleased();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.RELEASED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dmr.decide(pps);
+            assertEquals(DecisionTask.OutputPort.PORT1, r);
+        }
+
+    }
+
+    @Test
+    public void decideMethodIfEqualsToRejectedTest() throws ProcessException {
+        DecideMeasureReleased dmr = new DecideMeasureReleased();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.REJECTED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dmr.decide(pps);
+            assertEquals(DecisionTask.OutputPort.PORT2, r);
+        }
+    }
+
+    @Test
+    public void decideMethodIfEqualsToCancelledTest() throws ProcessException {
+        DecideMeasureReleased dmr = new DecideMeasureReleased();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.CANCELED.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dmr.decide(pps);
+            assertEquals(DecisionTask.OutputPort.PORT3, r);
+        }
+    }
+
+    @Test( expected = ProcessException.class)
+    public void decideMethodIfNotEqualsToReleasedIdTest() throws ProcessException {
+        DecideMeasureReleased dma = new DecideMeasureReleased();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.NEW.getStatusValue());
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dma.decide(pps);
+        }
+
+    }
+
+}
+
+
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureSavedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureSavedTest.java
new file mode 100644
index 0000000..a94e614
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecideMeasureSavedTest.java
@@ -0,0 +1,61 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import static junit.framework.TestCase.assertEquals;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.DecideMeasureSaved;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+public class DecideMeasureSavedTest {
+
+    @Test
+    public void decideMethodNotNullIdTest() {
+        DecideMeasureSaved dms = new DecideMeasureSaved();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setId(4);
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dms.decide(pps);
+            assertEquals(DecisionTask.OutputPort.YES, r);
+        }
+
+    }
+
+    @Test
+    public void decideMethodNullIdTest() {
+        DecideMeasureSaved dms = new DecideMeasureSaved();
+        PlgmProcessSubject pps = null;
+        try {
+            pps = Whitebox.invokeConstructor(PlgmProcessSubject.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        GridMeasure gm = new GridMeasure();
+        gm.setId(null);
+        if (pps != null){
+            pps.setGridMeasure(gm);
+            DecisionTask.OutputPort r = dms.decide(pps);
+            assertEquals(DecisionTask.OutputPort.NO, r);
+        }
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecisionTaskTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecisionTaskTest.java
new file mode 100644
index 0000000..f19f8b7
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/DecisionTaskTest.java
@@ -0,0 +1,127 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import static org.eclipse.openk.core.bpmn.base.tasks.DecisionTask.OutputPort.NO;
+import static org.eclipse.openk.core.bpmn.base.tasks.DecisionTask.OutputPort.PORT1;
+import static org.eclipse.openk.core.bpmn.base.tasks.DecisionTask.OutputPort.PORT2;
+import static org.eclipse.openk.core.bpmn.base.tasks.DecisionTask.OutputPort.PORT3;
+import static org.eclipse.openk.core.bpmn.base.tasks.DecisionTask.OutputPort.PORT4;
+import static org.eclipse.openk.core.bpmn.base.tasks.DecisionTask.OutputPort.PORT5;
+import static org.eclipse.openk.core.bpmn.base.tasks.DecisionTask.OutputPort.YES;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.openk.core.bpmn.base.BaseTaskImpl;
+import org.eclipse.openk.core.bpmn.base.DecisionTaskImpl;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.TestProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+
+public class DecisionTaskTest {
+    DecisionTaskImpl decTask;
+    BaseTaskImpl taskYes;
+    BaseTaskImpl taskNo;
+    BaseTaskImpl[] taskPort = new BaseTaskImpl[5];
+
+    private void setup() {
+        final String dec = "DECISION1";
+        decTask = new DecisionTaskImpl(dec);
+        taskYes = new BaseTaskImpl("YES");
+        taskNo = new BaseTaskImpl("NO");
+        taskPort[0] = new BaseTaskImpl("Port1");
+        taskPort[1] = new BaseTaskImpl("Port2");
+        taskPort[2] = new BaseTaskImpl("Port3");
+        taskPort[3]= new BaseTaskImpl("Port4");
+        taskPort[4] = new BaseTaskImpl("Port5");
+
+        decTask.connectOutputTo(YES, taskYes);
+        decTask.connectOutputTo(NO, taskNo);
+        decTask.connectOutputTo(PORT1, taskPort[0]);
+        decTask.connectOutputTo(PORT2, taskPort[1]);
+        decTask.connectOutputTo(PORT3, taskPort[2]);
+        decTask.connectOutputTo(PORT4, taskPort[3]);
+        decTask.connectOutputTo(PORT5, taskPort[4]);
+
+    }
+
+    @Test
+    public void testPort_yes() throws ProcessException, HttpStatusException {
+        setup();
+
+        // test true port
+        TestProcessSubject subject = new TestProcessSubject();
+        subject.yes = true;
+        decTask.enterStep(subject);
+        assertTrue( taskYes.enterStepCalled );
+        assertFalse( taskNo.enterStepCalled );
+    }
+
+    @Test
+    public void testPort_no() throws ProcessException, HttpStatusException {
+        setup();
+
+        // test true port
+        TestProcessSubject subject = new TestProcessSubject();
+        subject.no = true;
+        decTask.enterStep(subject);
+        assertTrue( taskNo.enterStepCalled );
+        assertFalse( taskYes.enterStepCalled );
+    }
+
+    public void testPort_portnumber( int port ) throws ProcessException, HttpStatusException {
+        setup();
+
+        TestProcessSubject subject = new TestProcessSubject();
+        subject.decision = port;
+        decTask.enterStep(subject);
+    }
+
+    @Test
+    public void testPort_allports() throws ProcessException, HttpStatusException {
+        for( int i=0; i<5; i++) {
+            testPort_portnumber(i+1);
+            assertTrue(taskPort[i].enterStepCalled);
+
+            for( int j=0; j<5; j++) {
+                if( j != i ) {
+                    assertFalse(taskPort[j].enterStepCalled);
+                }
+            }
+        }
+    }
+
+    @Test( expected = ProcessException.class )
+    public void testPort_invalid() throws ProcessException, HttpStatusException {
+        testPort_portnumber(999); // should throw exception
+    }
+
+    @Test( expected = ProcessException.class)
+    public void test_onLeave_Exception() throws Exception {
+        setup();
+        TestProcessSubject subject = new TestProcessSubject();
+        Whitebox.invokeMethod(decTask, "onLeaveStep", subject);
+        // should raise exception
+    }
+
+    @Test( expected = ProcessException.class)
+    public void test_outputUnconnected() throws ProcessException, HttpStatusException {
+        TestProcessSubject subject = new TestProcessSubject();
+        subject.yes = true;
+        DecisionTaskImpl desc = new DecisionTaskImpl("unconnected Task");
+        desc.enterStep(subject);
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/EndpointTaskTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/EndpointTaskTest.java
new file mode 100644
index 0000000..c13cbab
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/EndpointTaskTest.java
@@ -0,0 +1,40 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.TestProcessSubject;
+import org.junit.Test;
+
+public class EndpointTaskTest {
+    @Test
+    public void testEndpoint_enterStep() throws ProcessException {
+        TestProcessSubject subject = new TestProcessSubject();
+        EndPointTask ep = new EndPointTask("Endpoint");
+        ep.enterStep(subject);
+    }
+
+    @Test( expected = ProcessException.class)
+    public void testEndpoint_connectTo() throws ProcessException {
+        TestProcessSubject subject = new TestProcessSubject();
+        EndPointTask ep = new EndPointTask("Endpoint");
+        ep.connectOutputTo(null);
+    }
+
+    @Test ( expected = ProcessException.class)
+    public void testEndpoint_leaveStep() throws ProcessException {
+        TestProcessSubject subject = new TestProcessSubject();
+        EndPointTask ep = new EndPointTask("Endpoint");
+        ep.leaveStep(subject);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/ServiceTaskTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/ServiceTaskTest.java
new file mode 100644
index 0000000..f3b4f4b
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/ServiceTaskTest.java
@@ -0,0 +1,60 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.openk.core.bpmn.base.BaseTaskImpl;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ServiceTaskImpl;
+import org.eclipse.openk.core.bpmn.base.TestProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Test;
+
+
+public class ServiceTaskTest {
+
+    @Test
+    public void testServiceTask() throws ProcessException, HttpStatusException {
+        ServiceTaskImpl service = new ServiceTaskImpl("MyService");
+        BaseTaskImpl basetask = new BaseTaskImpl("Endpoint");
+        TestProcessSubject subject = new TestProcessSubject();
+
+        service.connectOutputTo(basetask);
+
+        service.enterStep(subject);
+
+        assertTrue( service.enterStepCalled );
+        assertTrue( service.leaveStepCalled );
+        assertTrue( basetask.enterStepCalled);
+    }
+
+    @Test
+    public void testOnEnterStep() throws ProcessException, HttpStatusException {
+        ServiceTaskImpl service = new ServiceTaskImpl("MyService");
+        //BaseTaskImpl basetask = new BaseTaskImpl("Endpoint");
+        TestProcessSubject subject = new TestProcessSubject();
+
+        service.onEnterStep(subject);
+    }
+
+    @Test
+    public void testOnRecover() throws ProcessException, HttpStatusException {
+        ServiceTaskImpl service = new ServiceTaskImpl("MyService");
+        TestProcessSubject subject = new TestProcessSubject();
+
+        service.onRecover(subject);
+
+        assertTrue( service.enterStepCalled);
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/UserInteractionTaskTest.java b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/UserInteractionTaskTest.java
new file mode 100644
index 0000000..a8f9c0a
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/base/tasks/UserInteractionTaskTest.java
@@ -0,0 +1,37 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.base.tasks;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.TestProcessSubject;
+import org.eclipse.openk.core.bpmn.base.UserInteractionTaskImpl;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Test;
+
+public class UserInteractionTaskTest {
+    @Test
+    public void testUserinteractionTask() throws ProcessException, HttpStatusException {
+        UserInteractionTaskImpl task=new UserInteractionTaskImpl("UI Task");
+        TestProcessSubject subject = new TestProcessSubject();
+        task.enterStep( subject );
+        assertTrue(task.enterStepCalled);
+        assertFalse(task.leaveStepCalled);
+
+        task.leaveStep( subject );
+        assertTrue(task.leaveStepCalled);
+
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmProcessSubjectTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmProcessSubjectTest.java
new file mode 100644
index 0000000..cb6c61b
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/PlgmProcessSubjectTest.java
@@ -0,0 +1,37 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure;
+
+import static junit.framework.TestCase.assertEquals;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.junit.Test;
+
+
+public class PlgmProcessSubjectTest {
+
+    @Test
+    public void testAll() {
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(45);
+
+        PlgmProcessSubject sub = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        assertEquals( 45, sub.getGridMeasure().getStatusId().intValue() );
+        GridMeasure gm2 = new GridMeasure();
+        gm2.setStatusId(67);
+        sub.setGridMeasure(gm2);
+        sub.setChangeUser("Meyster");
+
+        assertEquals( 67, sub.getGridMeasure().getStatusId().intValue());
+        assertEquals( "Meyster", sub.getChangeUser());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ConfigDecisionTaskTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ConfigDecisionTaskTest.java
new file mode 100644
index 0000000..0f591c9
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ConfigDecisionTaskTest.java
@@ -0,0 +1,51 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+
+public class ConfigDecisionTaskTest {
+
+
+    @Before
+    public void initSettings() {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+    }
+
+    @Test
+    public void testDecide() throws ProcessException {
+        ConfigDecisionTask cdt = new ConfigDecisionTask("skipForApproval");
+
+        BackendConfig.getInstance().getBackendSettings().getBpmnGridConfig().setSkipForApproval(true);
+        assertEquals( DecisionTask.OutputPort.YES, cdt.decide(null));
+
+        BackendConfig.getInstance().getBackendSettings().getBpmnGridConfig().setSkipForApproval(false);
+        assertEquals( DecisionTask.OutputPort.NO, cdt.decide(null));
+    }
+
+    @Test( expected = ProcessException.class )
+    public void testDecideException() throws ProcessException {
+        ConfigDecisionTask cdt = new ConfigDecisionTask("unknownField");
+        BackendConfig.getInstance().getBackendSettings().getBpmnGridConfig().setSkipForApproval(true);
+
+        cdt.decide(null);
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureForApprovalTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureForApprovalTest.java
new file mode 100644
index 0000000..5fc16c6
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureForApprovalTest.java
@@ -0,0 +1,61 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.easymock.EasyMock;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertNotNull;
+import static org.easymock.EasyMock.*;
+
+public class MeasureForApprovalTest {
+
+    @Test
+    public void MeasureForApprovalTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        MeasureForApproval  ma = new MeasureForApproval();
+
+        assertNotNull(ma);
+    }
+
+    @Test
+    public void onLeaveStepTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        MeasureForApproval ma  = EasyMock.createMock( MeasureForApproval.class );
+        ma.onLeaveStep(subject);
+        expectLastCall().andVoid().anyTimes();
+
+        EasyMock.replay(ma);
+        EasyMock.verify(ma);
+    }
+
+    @Test
+    public void onEnterStepTest() throws Exception {
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        MeasureForApproval ma  = EasyMock.createMock( MeasureForApproval.class );
+        ma.onEnterStep(subject);
+        expectLastCall().andVoid().anyTimes();
+
+        EasyMock.replay(ma);
+        EasyMock.verify(ma);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureNewTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureNewTest.java
new file mode 100644
index 0000000..92f1ab1
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/MeasureNewTest.java
@@ -0,0 +1,46 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import static junit.framework.TestCase.assertNotNull;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+public class MeasureNewTest {
+
+
+    @Test
+    public void prepareStorageTestNullFkRefStatus() throws Exception {
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(null);
+        MeasureNew mn  = new MeasureNew();
+        PlgmProcessSubject subj = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        Whitebox.invokeMethod(mn, "prepareStorage", gm);
+        assertNotNull(gm.getStatusId());
+
+        new MeasureNew().onEnterStep( subj );
+    }
+
+    @Test
+    public void prepareStorageTestNotNullFkRefStatus() throws Exception {
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(3);
+        MeasureNew mn  = new MeasureNew();
+        Whitebox.invokeMethod(mn, "prepareStorage", gm);
+        assertNotNull(gm.getStatusId());
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureAppliedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureAppliedTest.java
new file mode 100644
index 0000000..bdc8392
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureAppliedTest.java
@@ -0,0 +1,120 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailmanagerTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureAppliedTest {
+    private static GreenMail mailServer;
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+    @Before
+    public void prepareTests() throws Exception {
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+        setTestTemplateEmail("emailConfigurationTest/emailTemplates/appliedEmailTemplateTest.txt");
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+    }
+
+    @After
+    public void afterTest() {
+        mailServer.stop();
+    }
+
+    @Test
+    public void serviceMeasureAppliedTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureApplied  ma = new ServiceMeasureApplied();
+
+        assertNotNull(ma);
+    }
+
+    //@Ignore
+    @Test
+    public void serviceMeasureAppliedTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.APPLIED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureApplied  ma = new ServiceMeasureApplied();
+
+        ma.onLeaveStep(subject);
+    }
+
+    @Test (expected = ProcessException.class)
+    public void serviceMeasureAppliedTestOnLeaveStepExceptionIfMailServerNotStarted() throws Exception{
+        mailServer.stop();
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.APPLIED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureApplied  ma = new ServiceMeasureApplied();
+
+        ma.onLeaveStep(subject);
+    }
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setAppliedEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+
+    private PlannedGridMeasuresConfiguration.EmailConfiguration createEmailConfiguration() throws IOException {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emailConfiguration.setPort(EmailmanagerTest.port()+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureApprovedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureApprovedTest.java
new file mode 100644
index 0000000..ab782c5
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureApprovedTest.java
@@ -0,0 +1,99 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailmanagerTest;
+import org.junit.*;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureApprovedTest {
+    private static GreenMail mailServer;
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+    @Before
+    public void prepareTests() throws Exception {
+        // BackendConfig.configure("portalBaseUrlMock", null);
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+        setTestTemplateEmail("emailConfigurationTest/emailTemplates/approvedEmailTemplateTest.txt");
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+    }
+
+    @After
+    public void afterTest() {
+        mailServer.stop();
+    }
+
+    @Test
+    public void serviceMeasureApprovedTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureApproved  ma = new ServiceMeasureApproved();
+
+        assertNotNull(ma);
+    }
+
+    //@Ignore
+    @Test
+    public void serviceMeasureApprovedTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.APPROVED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureApproved  ma = new ServiceMeasureApproved();
+
+        ma.onLeaveStep(subject);
+    }
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setApprovedEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+
+    private PlannedGridMeasuresConfiguration.EmailConfiguration createEmailConfiguration() throws IOException {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emailConfiguration.setPort(EmailmanagerTest.port()+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureCanceledTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureCanceledTest.java
new file mode 100644
index 0000000..eb363f6
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureCanceledTest.java
@@ -0,0 +1,118 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailmanagerTest;
+import org.junit.*;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureCanceledTest {
+    private static GreenMail mailServer;
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+    @Before
+    public void prepareTests() throws Exception {
+        // BackendConfig.configure("portalBaseUrlMock", null);
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+        setTestTemplateEmail("emailConfigurationTest/emailTemplates/canceledEmailTemplateTest.txt");
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+    }
+
+    @After
+    public void afterTest() {
+        mailServer.stop();
+    }
+
+    @Test
+    public void serviceMeasureCanceledTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureCanceled  mc = new ServiceMeasureCanceled();
+
+        assertNotNull(mc);
+    }
+
+    @Test
+    public void serviceMeasureCanceledTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.CANCELED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureCanceled  mc = new ServiceMeasureCanceled();
+
+        mc.onLeaveStep(subject);
+    }
+
+    @Test (expected = ProcessException.class)
+    public void serviceMeasureCanceledTestOnLeaveStepExceptionIfMailServerNotStarted() throws Exception{
+        mailServer.stop();
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.CANCELED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureCanceled mc = new ServiceMeasureCanceled();
+
+        mc.onLeaveStep(subject);
+    }
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setCancelledEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+
+    private PlannedGridMeasuresConfiguration.EmailConfiguration createEmailConfiguration() throws IOException {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emailConfiguration.setPort(EmailmanagerTest.port()+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+}
+
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureClosedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureClosedTest.java
new file mode 100644
index 0000000..bb34134
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureClosedTest.java
@@ -0,0 +1,122 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailmanagerTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureClosedTest {
+
+    private static GreenMail mailServer;
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+
+    @Before
+    public void prepareTests() throws Exception {
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+        setTestTemplateEmail("emailConfigurationTest/emailTemplates/closedEmailTemplateTest.txt");
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+
+    }
+
+    @After
+    public void afterTest() {
+        mailServer.stop();
+    }
+
+    @Test
+    public void serviceMeasureClosedTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureClosed  ma = new ServiceMeasureClosed();
+
+        assertNotNull(ma);
+    }
+
+    @Test
+    public void serviceMeasureClosedTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.CLOSED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureClosed  ma = new ServiceMeasureClosed();
+
+        ma.onLeaveStep(subject);
+    }
+
+    @Test (expected = ProcessException.class)
+    public void serviceMeasureClosedTestOnLeaveStepExceptionIfMailServerNotStarted() throws Exception{
+        mailServer.stop();
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.CLOSED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureClosed  ma = new ServiceMeasureClosed();
+
+        ma.onLeaveStep(subject);
+    }
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setClosedEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+
+    private PlannedGridMeasuresConfiguration.EmailConfiguration createEmailConfiguration() throws IOException {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emailConfiguration.setPort(EmailmanagerTest.port()+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureFinishedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureFinishedTest.java
new file mode 100644
index 0000000..3fddc57
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureFinishedTest.java
@@ -0,0 +1,45 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureFinishedTest {
+
+    @Test
+    public void serviceMeasureFinishedTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureFinished  ma = new ServiceMeasureFinished();
+
+        assertNotNull(ma);
+    }
+
+    @Test
+    public void serviceMeasureFinishedTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureFinished  ma = new ServiceMeasureFinished();
+
+        ma.onLeaveStep(subject);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureForApprovalTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureForApprovalTest.java
new file mode 100644
index 0000000..9b50e7a
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureForApprovalTest.java
@@ -0,0 +1,45 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureForApprovalTest {
+
+    @Test
+    public void serviceMeasureForApprovalTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureForApproval  ma = new ServiceMeasureForApproval();
+
+        assertNotNull(ma);
+    }
+
+    @Test
+    public void serviceMeasureForApprovalTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureForApproval  ma = new ServiceMeasureForApproval();
+
+        ma.onLeaveStep(subject);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRejectedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRejectedTest.java
new file mode 100644
index 0000000..d0b8587
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRejectedTest.java
@@ -0,0 +1,45 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureRejectedTest {
+
+    @Test
+    public void serviceMeasureRejectedTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureRejected  ma = new ServiceMeasureRejected();
+
+        assertNotNull(ma);
+    }
+
+    @Test
+    public void serviceMeasureRejectedTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureRejected  ma = new ServiceMeasureRejected();
+
+        ma.onLeaveStep(subject);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureReleasedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureReleasedTest.java
new file mode 100644
index 0000000..619b38b
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureReleasedTest.java
@@ -0,0 +1,122 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailmanagerTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureReleasedTest {
+
+    private static GreenMail mailServer;
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+    @Before
+    public void prepareTests() throws Exception {
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+        setTestTemplateEmail("emailConfigurationTest/emailTemplates/releasedEmailTemplateTest.txt");
+
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+
+    }
+    @After
+    public void afterTest() {
+        mailServer.stop();
+    }
+
+    @Test
+    public void serviceMeasureReleasedTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureReleased  ma = new ServiceMeasureReleased();
+
+        assertNotNull(ma);
+    }
+
+    @Test
+    public void serviceMeasureReleasedTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.APPLIED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+
+        ServiceMeasureReleased  ma = new ServiceMeasureReleased();
+
+        ma.onLeaveStep(subject);
+    }
+
+    @Test (expected = ProcessException.class)
+    public void serviceMeasureReleasedTestOnLeaveStepExceptionIfMailServerNotStarted() throws Exception{
+        mailServer.stop();
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.RELEASED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureReleased  ma = new ServiceMeasureReleased();
+
+        ma.onLeaveStep(subject);
+    }
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setReleasedEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+
+    private PlannedGridMeasuresConfiguration.EmailConfiguration createEmailConfiguration() throws IOException {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emailConfiguration.setPort(EmailmanagerTest.port()+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRequestedTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRequestedTest.java
new file mode 100644
index 0000000..196bf52
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureRequestedTest.java
@@ -0,0 +1,120 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailmanagerTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureRequestedTest {
+
+    private static GreenMail mailServer;
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+    @Before
+    public void prepareTests() throws Exception {
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+        setTestTemplateEmail("emailConfigurationTest/emailTemplates/requestedEmailTemplateTest.txt");
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+
+    }
+    @After
+    public void afterTest() {
+        mailServer.stop();
+    }
+    @Test
+    public void serviceMeasureRequestedTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureRequested  ma = new ServiceMeasureRequested();
+
+        assertNotNull(ma);
+    }
+
+    @Test
+    public void serviceMeasureRequestedTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.APPLIED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+
+        ServiceMeasureRequested  ma = new ServiceMeasureRequested();
+
+        ma.onLeaveStep(subject);
+    }
+
+    @Test (expected = ProcessException.class)
+    public void serviceMeasureRequestedTestOnLeaveStepExceptionIfMailServerNotStarted() throws Exception{
+        mailServer.stop();
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.RELEASED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureRequested  ma = new ServiceMeasureRequested();
+
+        ma.onLeaveStep(subject);
+    }
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setRequestedEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+
+    private PlannedGridMeasuresConfiguration.EmailConfiguration createEmailConfiguration() throws IOException {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emailConfiguration.setPort(EmailmanagerTest.port()+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureSendMailTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureSendMailTest.java
new file mode 100644
index 0000000..29ea832
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/ServiceMeasureSendMailTest.java
@@ -0,0 +1,122 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailmanagerTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class ServiceMeasureSendMailTest {
+    private static GreenMail mailServer;
+    String templatePath = "emailConfigurationTest/emailTemplates/closedEmailTemplateTest.txt";
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+    @Before
+    public void prepareTests() throws Exception {
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+
+        setTestTemplateEmail(templatePath);
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+
+    }
+
+    @After
+    public void afterTest() {
+        mailServer.stop();
+    }
+
+    @Test
+    public void serviceMeasureSendMailTest() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+
+        ServiceMeasureSendMail  ma = new ServiceMeasureSendMail(templatePath);
+
+        assertNotNull(ma);
+    }
+
+    @Test
+    public void serviceMeasureSendMailTestOnLeaveStep() throws Exception{
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.CLOSED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureSendMail  ma = new ServiceMeasureSendMail(templatePath);
+
+        ma.onLeaveStep(subject);
+    }
+
+    @Test (expected = ProcessException.class)
+    public void serviceMeasureSendMailTestOnLeaveStepExceptionIfMailServerNotStarted() throws Exception{
+        mailServer.stop();
+        GridMeasure gm = new GridMeasure();
+        gm.setId(3);
+        gm.setTitle("Yo Title");
+        gm.setStatusId(PlgmProcessState.CLOSED.getStatusValue());
+        java.time.LocalDateTime ldtdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp date = java.sql.Timestamp.valueOf(ldtdate);
+        gm.setPlannedStarttimeFirstSinglemeasure(date);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        subject.setGridMeasure(gm);
+
+        ServiceMeasureSendMail  ma = new ServiceMeasureSendMail("emailConfigurationTest/emailTemplates/closedEmailTemplateTest.txt");
+
+        ma.onLeaveStep(subject);
+    }
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setClosedEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+
+    private PlannedGridMeasuresConfiguration.EmailConfiguration createEmailConfiguration() throws IOException {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emailConfiguration.setPort(EmailmanagerTest.port()+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/StoreStatusServiceTaskTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/StoreStatusServiceTaskTest.java
new file mode 100644
index 0000000..f5abb06
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/StoreStatusServiceTaskTest.java
@@ -0,0 +1,34 @@
+
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNotNull;
+
+public class StoreStatusServiceTaskTest {
+
+    @Test
+    public void storeStatusServiceTaskTest() throws Exception{
+        PlgmProcessState st = Whitebox.invokeMethod(PlgmProcessState.class, PlgmProcessState.FOR_APPROVAL.getStatusValue());
+
+        StoreStatusServiceTask  ma = new StoreStatusServiceTask(st);
+        assertNotNull(ma);
+        assertEquals(st.getStatusValue(), PlgmProcessState.FOR_APPROVAL.getStatusValue());
+        assertEquals(st.name(), "FOR_APPROVAL");
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/UIStoreMeasureTaskTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/UIStoreMeasureTaskTest.java
new file mode 100644
index 0000000..c759acc
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/UIStoreMeasureTaskTest.java
@@ -0,0 +1,106 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks;
+
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.easymock.EasyMock;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.tasks.util.GridMeasureStorageHelper;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Before;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+public class UIStoreMeasureTaskTest {
+
+    private GridMeasureStorageHelper gmsh;
+
+    @Before
+    public void prepare() throws ProcessException, HttpStatusException {
+        gmsh = EasyMock.createMock(GridMeasureStorageHelper.class);
+        gmsh.storeMeasureFromViewModel(anyObject());
+        expectLastCall().andVoid().anyTimes();
+        replay( gmsh );
+        verify( gmsh );
+    }
+
+    @Test
+    public void testStayInTask() throws Exception {
+        UIStoreMeasureTask testTask = new UIStoreMeasureTask("desc", true) {
+
+            @Override
+            protected GridMeasureStorageHelper createGridMeasureStorageHelper() {
+                return gmsh;
+            }
+        };
+
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.APPLIED.getStatusValue());
+
+        PlgmProcessSubject sub = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        sub.setStateInDb(PlgmProcessState.APPLIED);
+
+
+        testTask.onEnterStep(sub);
+        testTask.onLeaveStep(sub);
+        Whitebox.invokeMethod(testTask, "onStayInTask", sub );
+        assertTrue(Whitebox.invokeMethod(testTask, "isStayInThisTask", sub ));
+
+        sub.setStateInDb(PlgmProcessState.FOR_APPROVAL);
+        assertFalse(Whitebox.invokeMethod(testTask, "isStayInThisTask", sub ));
+    }
+
+    @Test
+    public void testLeaveTask() throws Exception {
+        UIStoreMeasureTask testTask = new UIStoreMeasureTask("desc", false) {
+
+            @Override
+            protected GridMeasureStorageHelper createGridMeasureStorageHelper() {
+                return gmsh;
+            }
+        };
+
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(PlgmProcessState.APPLIED.getStatusValue());
+
+        PlgmProcessSubject sub = PlgmProcessSubject.fromGridMeasure(gm, "fd");
+        sub.setStateInDb(PlgmProcessState.APPLIED);
+
+
+        testTask.onEnterStep(sub);
+        testTask.onLeaveStep(sub);
+        assertFalse(Whitebox.invokeMethod(testTask, "isStayInThisTask", sub ));
+
+        sub.setStateInDb(PlgmProcessState.FOR_APPROVAL);
+        assertFalse(Whitebox.invokeMethod(testTask, "isStayInThisTask", sub ));
+    }
+
+    @Test
+    public void testCreateHelper() throws Exception {
+        UIStoreMeasureTask testTask = new UIStoreMeasureTask("desc", false);
+        assertEquals( Whitebox.invokeMethod( testTask, "createGridMeasureStorageHelper").getClass(),
+                GridMeasureStorageHelper.class);
+
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/util/GridMeasureStorageHelperTest.java b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/util/GridMeasureStorageHelperTest.java
new file mode 100644
index 0000000..08fa21d
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/gridmeasure/tasks/util/GridMeasureStorageHelperTest.java
@@ -0,0 +1,482 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.gridmeasure.tasks.util;
+
+import org.easymock.EasyMock;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.SingleGridmeasure;
+import org.eclipse.openk.api.Steps;
+import org.eclipse.openk.common.mapper.GridMeasureMapper;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.db.dao.AutoCloseEntityManager;
+import org.eclipse.openk.db.dao.TblGridMeasureDao;
+import org.eclipse.openk.db.dao.TblIdCounterDao;
+import org.eclipse.openk.db.dao.TblSingleGridmeasureDao;
+import org.eclipse.openk.db.dao.TblStepsDao;
+import org.eclipse.openk.db.model.TblGridMeasure;
+import org.eclipse.openk.db.model.TblIdCounter;
+import org.eclipse.openk.db.model.TblSingleGridmeasure;
+import org.eclipse.openk.db.model.TblSteps;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.powermock.api.easymock.PowerMock;
+import org.powermock.reflect.Whitebox;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import java.util.ArrayList;
+import java.util.List;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertTrue;
+import static org.easymock.EasyMock.anyInt;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+
+public class GridMeasureStorageHelperTest {
+    class TestableStorageHelper extends GridMeasureStorageHelper {
+        public TblGridMeasureDao dao;
+        public TblSingleGridmeasureDao sgDao;
+        public TblStepsDao stpDao;
+        public TblIdCounterDao idCounterDao;
+        public EntityManager em;
+
+        private TestableStorageHelper() {
+            super();
+        }
+
+
+        @Override
+        protected EntityManager createEntityManager() {
+            if (em != null) {
+                return em;
+            } else {
+                return super.createEntityManager();
+            }
+        }
+
+        @Override
+        protected TblGridMeasureDao createTblGridMeasureDao(EntityManager em) {
+            if (dao != null) {
+                return dao;
+            } else {
+                return super.createTblGridMeasureDao(em);
+            }
+        }
+
+        @Override
+        protected TblSingleGridmeasureDao createTblSingleGridmeasureDao(EntityManager em) {
+            if (sgDao != null) {
+                return sgDao;
+            } else {
+                return super.createTblSingleGridmeasureDao(em);
+            }
+        }
+
+        @Override
+        protected TblStepsDao createTblStepsDao(EntityManager em) {
+            if (stpDao != null) {
+                return stpDao;
+            } else {
+                return super.createTblStepsDao(em);
+            }
+        }
+
+        @Override
+        protected TblIdCounterDao createTblIdCounterDao(EntityManager em) {
+            if (idCounterDao != null) {
+                return idCounterDao;
+            } else {
+                return super.createTblIdCounterDao(em);
+            }
+        }
+    }
+
+    private EntityManager createEM() {
+        EntityTransaction et = EasyMock.createMock(EntityTransaction.class);
+        et.begin();
+        expectLastCall().andVoid().anyTimes();
+        et.commit();
+        expectLastCall().andVoid().anyTimes();
+        et.rollback();
+        expectLastCall().andVoid().anyTimes();
+
+        EasyMock.replay(et);
+        EasyMock.verify(et);
+
+        EntityManager em = EasyMock.createMock(EntityManager.class);
+        expect(em.getTransaction()).andReturn(et).anyTimes();
+
+        expect(em.isOpen()).andReturn(false).anyTimes();
+
+
+        em.close();
+        expectLastCall().andVoid().anyTimes();
+
+        EasyMock.replay(em);
+        EasyMock.verify(em);
+
+        return em;
+    }
+
+    @Test
+    public void testGetTblGridMeasureDao() throws Exception {
+        TestableStorageHelper task = new TestableStorageHelper();
+        assertTrue(Whitebox.invokeMethod(task, "createTblGridMeasureDao", (EntityManager)null) instanceof TblGridMeasureDao);
+
+        assertEquals( GridMeasureStorageHelper.class, GridMeasureStorageHelper.getHelper().getClass());
+    }
+
+    @Test
+    public void testStoreMeasureInsert() throws Exception {
+        EntityManager em = createEM();
+        TblGridMeasure tblGridMeasure = new TblGridMeasure();
+        TblGridMeasureDao mockedTblGridMeasureDao = EasyMock.createMock( TblGridMeasureDao.class );
+        expect( mockedTblGridMeasureDao.findByIdInTx(anyObject(), anyInt())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedTblGridMeasureDao.storeInTx(anyObject())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedTblGridMeasureDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedTblGridMeasureDao);
+        EasyMock.verify(mockedTblGridMeasureDao);
+
+        TestableStorageHelper task = new TestableStorageHelper();
+        task.idCounterDao = createTblIdCounterDaoMock(em, null);
+        TblGridMeasure ret = Whitebox.invokeMethod(task, "storeMeasureImpl", tblGridMeasure,
+                "fd", mockedTblGridMeasureDao, em);
+
+    }
+
+    @Test
+    public void testGetNextDescriptiveId_existingCounter() throws Exception {
+        EntityManager em = createEM();
+
+        TblIdCounter counter = new TblIdCounter();
+        counter.setId(1);
+        counter.setCounter(3);
+        counter.setModifiedDate("2018-08-20T16:00:00");
+
+        TblGridMeasure tblGridMeasure = new TblGridMeasure();
+        TblGridMeasureDao mockedTblGridMeasureDao = EasyMock.createMock( TblGridMeasureDao.class );
+        expect( mockedTblGridMeasureDao.findByIdInTx(anyObject(), anyInt())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedTblGridMeasureDao.storeInTx(anyObject())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedTblGridMeasureDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedTblGridMeasureDao);
+        EasyMock.verify(mockedTblGridMeasureDao);
+
+        TestableStorageHelper task = new TestableStorageHelper();
+        task.idCounterDao = createTblIdCounterDaoMock(em, counter);
+        Whitebox.invokeMethod(task, "getNextDescriptiveId", em, tblGridMeasure);
+    }
+
+    private TblIdCounterDao createTblIdCounterDaoMock(EntityManager em, TblIdCounter tblIdCounter) throws Exception {
+        TblIdCounterDao mockedTblIdCounterDao = EasyMock.createMock( TblIdCounterDao.class );
+        expect( mockedTblIdCounterDao.storeInTx(anyObject())).andReturn(new TblIdCounter()).anyTimes();
+        expect( mockedTblIdCounterDao.getIdCounterForCounterType(anyObject())).andReturn(tblIdCounter).anyTimes();
+        EasyMock.replay(mockedTblIdCounterDao);
+        EasyMock.verify(mockedTblIdCounterDao);
+        return mockedTblIdCounterDao;
+    }
+
+    @Test
+    public void testStoreMeasureNullCreateDate() throws Exception {
+        EntityManager em = createEM();
+        TblGridMeasure tblGridMeasure = new TblGridMeasure();
+        tblGridMeasure.setCreateDate(null);
+
+        TblGridMeasureDao mockedDao = EasyMock.createMock( TblGridMeasureDao.class );
+        expect( mockedDao.findByIdInTx(anyObject(), anyInt())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.storeInTx(anyObject())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedDao);
+        EasyMock.verify(mockedDao);
+
+        TestableStorageHelper task = new TestableStorageHelper();
+        task.idCounterDao = createTblIdCounterDaoMock(em, null);
+        TblGridMeasure ret = Whitebox.invokeMethod(task, "storeMeasureImpl", tblGridMeasure,
+                "fd", mockedDao, em);
+
+    }
+
+    @Test
+    public void testStoreMeasureUpdate() throws Exception {
+        EntityManager em = createEM();
+        TblGridMeasure tblGridMeasure = new TblGridMeasure();
+        TblGridMeasureDao mockedDao = EasyMock.createMock( TblGridMeasureDao.class );
+        expect( mockedDao.findByIdInTx(anyObject(), anyInt())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.storeInTx(anyObject())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedDao);
+        EasyMock.verify(mockedDao);
+
+        GridMeasure gmViewModel = new GridMeasure();
+        gmViewModel.setId(66);
+        GridMeasureMapper gmMapper = new GridMeasureMapper();
+        TestableStorageHelper task = new TestableStorageHelper();
+        Whitebox.invokeMethod(task, "storeMeasureImpl", gmMapper.mapFromVModel(gmViewModel),
+                "fd", mockedDao, em);
+    }
+
+    @Test( expected = ProcessException.class )
+    public void testStoreMeasureUpdate_Fail() throws Exception {
+        EntityManager em = createEM();
+        TblGridMeasure tblGridMeasure = new TblGridMeasure();
+        TblGridMeasureDao mockedDao = EasyMock.createMock( TblGridMeasureDao.class );
+        expect( mockedDao.findByIdInTx(anyObject(), anyInt())).andReturn(null).anyTimes();
+        expect( mockedDao.storeInTx(anyObject())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedDao);
+        EasyMock.verify(mockedDao);
+
+        GridMeasure gmViewModel = new GridMeasure();
+        gmViewModel.setId(66);
+        GridMeasureMapper gmMapper = new GridMeasureMapper();
+        TestableStorageHelper task = new TestableStorageHelper();
+        Whitebox.invokeMethod(task, "storeMeasureImpl", gmMapper.mapFromVModel(gmViewModel),
+                "fd", mockedDao, em);
+
+    }
+
+    @Test(expected = ProcessException.class)
+    public void testStoreMeasureUpdate_StoreException() throws Exception {
+        EntityManager em = createEM();
+        TblGridMeasure tblGridMeasure = new TblGridMeasure();
+        TblGridMeasureDao mockedDao = EasyMock.createMock( TblGridMeasureDao.class );
+        expect( mockedDao.findByIdInTx(anyObject(), anyInt())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.storeInTx(anyObject())).andThrow(new Exception("mockedException")).anyTimes();
+        expect( mockedDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedDao);
+        EasyMock.verify(mockedDao);
+
+        GridMeasure gmViewModel = new GridMeasure();
+        gmViewModel.setId(66);
+        GridMeasureMapper gmMapper = new GridMeasureMapper();
+        TestableStorageHelper task = new TestableStorageHelper();
+        Whitebox.invokeMethod(task, "storeMeasureImpl", gmMapper.mapFromVModel(gmViewModel),
+                "fd", mockedDao, em);
+    }
+
+    private TestableStorageHelper prepareStoreMeasureFromViewModel() throws Exception{
+        EntityManager em = createEM();
+
+        TblGridMeasureDao mockedDao = EasyMock.createMock( TblGridMeasureDao.class );
+        TblGridMeasure tblGridMeasure = new TblGridMeasure();
+
+        expect( mockedDao.findByIdInTx(anyObject(), anyInt())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.storeInTx(anyObject())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedDao);
+        EasyMock.verify(mockedDao);
+
+        // single grid measure
+        TblSingleGridmeasure tblSingleGridmeasure = new TblSingleGridmeasure();
+        tblSingleGridmeasure.setSortorder(1);
+        TblSingleGridmeasureDao mockedSGmDao = EasyMock.createMock( TblSingleGridmeasureDao.class );
+        expect( mockedSGmDao.findByIdInTx(anyObject(), anyInt())).andReturn(tblSingleGridmeasure).anyTimes();
+        expect( mockedSGmDao.storeInTx(anyObject())).andReturn(tblSingleGridmeasure).anyTimes();
+        //expect( mockedSGmDao.removeInTx(anyObject(), anyInt()));
+
+        mockedSGmDao.removeInTx(anyObject(), anyInt());
+        expectLastCall().andVoid().anyTimes();
+
+        expect( mockedSGmDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedSGmDao);
+        EasyMock.verify(mockedSGmDao);
+
+        // step
+        TblSteps tblSteps = new TblSteps();
+        tblSteps.setSortorder(1);
+        TblStepsDao mockedStpDao = EasyMock.createMock( TblStepsDao.class );
+        expect( mockedStpDao.findByIdInTx(anyObject(), anyInt())).andReturn(tblSteps).anyTimes();
+        expect( mockedStpDao.storeInTx(anyObject())).andReturn(tblSteps).anyTimes();
+
+        mockedStpDao.removeInTx(anyObject(), anyInt());
+        expectLastCall().andVoid().anyTimes();
+
+        expect( mockedStpDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedStpDao);
+        EasyMock.verify(mockedStpDao);
+
+        TestableStorageHelper task = new TestableStorageHelper();
+
+        task.em = em;
+        task.dao = mockedDao;
+        task.sgDao = mockedSGmDao;
+        task.stpDao = mockedStpDao;
+
+        return task;
+
+    }
+
+    @Test
+    public void testStoreMeasureFromViewModel_noSingleGridmeasure() throws Exception {
+
+        TestableStorageHelper task = prepareStoreMeasureFromViewModel();
+
+        GridMeasure gmViewModel = new GridMeasure();
+        List<SingleGridmeasure> sGmList = new ArrayList<SingleGridmeasure>();
+        gmViewModel.setListSingleGridmeasures(sGmList);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gmViewModel, "fd");
+
+        EntityManager em = createEM();
+        task.idCounterDao = createTblIdCounterDaoMock(em, null);
+
+        Whitebox.invokeMethod(task, "storeMeasureFromViewModel", subject);
+
+    }
+
+    @Test
+    public void testStoreMeasureFromViewModel_newSingleGridmeasure() throws Exception {
+
+        TestableStorageHelper task = prepareStoreMeasureFromViewModel();
+
+        GridMeasure gmViewModel = new GridMeasure();
+        List<SingleGridmeasure> sGmList = new ArrayList<SingleGridmeasure>();
+        sGmList.add(new SingleGridmeasure());
+        gmViewModel.setListSingleGridmeasures(sGmList);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gmViewModel, "fd");
+
+        EntityManager em = createEM();
+        task.idCounterDao = createTblIdCounterDaoMock(em, null);
+
+        Whitebox.invokeMethod(task, "storeMeasureFromViewModel", subject);
+
+    }
+
+    @Test
+    public void testStoreMeasureFromViewModel_withSingleGridmeasure_and_steps() throws Exception {
+
+        TestableStorageHelper task = prepareStoreMeasureFromViewModel();
+
+        GridMeasure gmViewModel = new GridMeasure();
+
+        SingleGridmeasure sGmViewModel = new SingleGridmeasure();
+        sGmViewModel.setId(5);
+        List<SingleGridmeasure> sGmList = new ArrayList<SingleGridmeasure>();
+        sGmList.add(sGmViewModel);
+        gmViewModel.setListSingleGridmeasures(sGmList);
+
+        Steps step = new Steps();
+        step.setId(1);
+        step.setSingleGridmeasureId(5);
+        List<Steps> listSteps = new ArrayList<Steps>();
+        listSteps.add(step);
+        sGmViewModel.setListSteps(listSteps);
+
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gmViewModel, "xx");
+
+        EntityManager em = createEM();
+        task.idCounterDao = createTblIdCounterDaoMock(em, null);
+
+        Whitebox.invokeMethod(task, "storeMeasureFromViewModel", subject);
+    }
+
+    @Test
+    public void testStoreMeasureFromViewModel_deleteSingleGridmeasure() throws Exception {
+
+        TestableStorageHelper task = prepareStoreMeasureFromViewModel();
+        List<SingleGridmeasure> sGmList = new ArrayList<SingleGridmeasure>();
+
+        GridMeasure gmViewModel = new GridMeasure();
+        SingleGridmeasure sGmViewModel1 = new SingleGridmeasure();
+        sGmViewModel1.setId(4);
+        sGmViewModel1.setSortorder(1);
+        sGmViewModel1.setDelete(false);
+        sGmList.add(sGmViewModel1);
+
+        SingleGridmeasure sGmViewModel2 = new SingleGridmeasure();
+        sGmViewModel2.setId(5);
+        sGmViewModel2.setSortorder(2);
+        sGmViewModel2.setDelete(true);
+        sGmList.add(sGmViewModel2);
+
+        gmViewModel.setListSingleGridmeasures(sGmList);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gmViewModel, "xx");
+
+        EntityManager em = createEM();
+        task.idCounterDao = createTblIdCounterDaoMock(em, null);
+
+        Whitebox.invokeMethod(task, "storeMeasureFromViewModel", subject);
+    }
+
+    @Test
+    public void testStoreMeasureFromViewModel_deleteStep() throws Exception {
+
+        TestableStorageHelper task = prepareStoreMeasureFromViewModel();
+        List<Steps> stpList = new ArrayList<Steps>();
+
+        GridMeasure gmViewModel = new GridMeasure();
+
+        List<SingleGridmeasure> sGmList = new ArrayList<SingleGridmeasure>();
+        SingleGridmeasure sGmViewModel1 = new SingleGridmeasure();
+        sGmViewModel1.setId(4);
+        sGmViewModel1.setSortorder(1);
+        sGmViewModel1.setDelete(false);
+        sGmList.add(sGmViewModel1);
+
+        Steps stpViewModel1 = new Steps();
+        stpViewModel1.setId(4);
+        stpViewModel1.setSortorder(1);
+        stpViewModel1.setDelete(false);
+        stpList.add(stpViewModel1);
+
+        Steps stpViewModel2 = new Steps();
+        stpViewModel2.setId(5);
+        stpViewModel2.setSortorder(2);
+        stpViewModel2.setDelete(true);
+        stpList.add(stpViewModel2);
+
+        sGmViewModel1.setListSteps(stpList);
+
+        gmViewModel.setListSingleGridmeasures(sGmList);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gmViewModel, "xx");
+
+        EntityManager em = createEM();
+        task.idCounterDao = createTblIdCounterDaoMock(em, null);
+
+        Whitebox.invokeMethod(task, "storeMeasureFromViewModel", subject);
+    }
+
+    @Test
+    public void testSetMeasureStatusAndStore() throws Exception {
+        EntityManager em = createEM();
+        TblGridMeasure tblGridMeasure = new TblGridMeasure();
+        TblGridMeasureDao mockedDao = EasyMock.createMock( TblGridMeasureDao.class );
+        expect( mockedDao.findByIdInTx(anyObject(), anyInt())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.storeInTx(anyObject())).andReturn(tblGridMeasure).anyTimes();
+        expect( mockedDao.getEM()).andReturn(em).anyTimes();
+
+        EasyMock.replay(mockedDao);
+        EasyMock.verify(mockedDao);
+
+        GridMeasure gmViewModel = new GridMeasure();
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(gmViewModel, "fd");
+        GridMeasureMapper gmMapper = new GridMeasureMapper();
+        TestableStorageHelper task = new TestableStorageHelper();
+        task.em = em;
+        task.dao = mockedDao;
+        task.idCounterDao = createTblIdCounterDaoMock(em, null);
+
+        Whitebox.invokeMethod(task, "setMeasureStatusAndStore", 66, "fd",
+                PlgmProcessState.APPLIED);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/plgm/PlgmProcessStateTest.java b/src/test/java/org/eclipse/openk/core/bpmn/plgm/PlgmProcessStateTest.java
new file mode 100644
index 0000000..f32a4e4
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/plgm/PlgmProcessStateTest.java
@@ -0,0 +1,39 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.plgm;
+
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class PlgmProcessStateTest {
+    @Test
+    public void testAll() {
+        assertEquals(PlgmProcessState.NEW, PlgmProcessState.fromValue(0) );
+        assertEquals(PlgmProcessState.APPLIED, PlgmProcessState.fromValue(1) );
+        assertEquals(PlgmProcessState.CANCELED, PlgmProcessState.fromValue(2) );
+        assertEquals(PlgmProcessState.FOR_APPROVAL, PlgmProcessState.fromValue(3) );
+        assertEquals(PlgmProcessState.APPROVED, PlgmProcessState.fromValue(4) );
+        assertEquals(PlgmProcessState.REQUESTED, PlgmProcessState.fromValue(5) );
+        assertEquals(PlgmProcessState.RELEASED, PlgmProcessState.fromValue(6) );
+        assertEquals(PlgmProcessState.ACTIVE, PlgmProcessState.fromValue(7) );
+        assertEquals(PlgmProcessState.IN_WORK, PlgmProcessState.fromValue(8) );
+        assertEquals(PlgmProcessState.WORK_FINISHED, PlgmProcessState.fromValue(9) );
+        assertEquals(PlgmProcessState.FINISHED, PlgmProcessState.fromValue(10) );
+        assertEquals(PlgmProcessState.CLOSED, PlgmProcessState.fromValue(11) );
+        assertEquals(PlgmProcessState.UNDEFINED_, PlgmProcessState.fromValue(-1) );
+
+        assertEquals(PlgmProcessState.UNDEFINED_.getStatusValue(), -1);
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/plgm/PlgmProcessSubjectTest.java b/src/test/java/org/eclipse/openk/core/bpmn/plgm/PlgmProcessSubjectTest.java
new file mode 100644
index 0000000..1ed212d
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/plgm/PlgmProcessSubjectTest.java
@@ -0,0 +1,31 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.bpmn.plgm;
+
+import static junit.framework.TestCase.assertEquals;
+
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.junit.Test;
+
+public class PlgmProcessSubjectTest {
+    @Test (expected = RuntimeException.class )
+    public void testConstructor()  {
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(666);
+        PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(null, "moduser");
+        assertEquals(new Integer(666), subject.getGridMeasure().getStatusId()  );
+        assertEquals("moduser", subject.getChangeUser());
+
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/bpmn/plgm/ProcessGridTest.java b/src/test/java/org/eclipse/openk/core/bpmn/plgm/ProcessGridTest.java
new file mode 100644
index 0000000..174e3f9
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/bpmn/plgm/ProcessGridTest.java
@@ -0,0 +1,52 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.bpmn.plgm;
+
+import static junit.framework.TestCase.assertTrue;
+
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessGridImpl;
+import org.eclipse.openk.core.bpmn.base.ProcessStateImpl;
+import org.eclipse.openk.core.bpmn.base.ServiceTaskImpl;
+import org.eclipse.openk.core.bpmn.base.TestProcessSubject;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmGrid;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Test;
+
+public class ProcessGridTest {
+    @Test
+    public void testProcessGrid() throws ProcessException, HttpStatusException {
+        ProcessGridImpl theGrid = new ProcessGridImpl();
+        TestProcessSubject subject = new TestProcessSubject();
+        theGrid.recover(subject).start(() -> ProcessStateImpl.UITASK);
+        ServiceTaskImpl serviceTask = (ServiceTaskImpl)theGrid.getService();
+        assertTrue(serviceTask.leaveStepCalled);
+    }
+
+    @Test (expected = ProcessException.class)
+    public void testProcessGrid_unreachable() throws ProcessException, HttpStatusException {
+        ProcessGridImpl theGrid = new ProcessGridImpl();
+        TestProcessSubject subject = new TestProcessSubject();
+        theGrid.recover(subject).start(()-> ProcessStateImpl.UNREACHABLE);
+    }
+
+    @Test (expected = RuntimeException.class)
+    public void testErrorInInit() {
+        PlgmGrid pg = new PlgmGrid() {
+            protected void init() throws ProcessException {
+                throw new ProcessException("");
+            }
+        };
+
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/communication/RestServiceWrapperTest.java b/src/test/java/org/eclipse/openk/core/communication/RestServiceWrapperTest.java
new file mode 100644
index 0000000..61377e7
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/communication/RestServiceWrapperTest.java
@@ -0,0 +1,38 @@
+/**
+******************************************************************************
+* Copyright © 2017-2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.communication;
+
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Before;
+import org.junit.Test;
+
+public class RestServiceWrapperTest {
+
+    private RestServiceWrapper restServiceWrapper;
+    private boolean useHttps = true;
+
+    @Before
+    public void init() {
+        this.restServiceWrapper = new RestServiceWrapper("testURL", useHttps);
+    }
+
+    @Test(expected = HttpStatusException.class)
+    public void testPerformGetRequest() throws HttpStatusException {
+        restServiceWrapper.performGetRequest("testParam", "testToken");
+    }
+
+    @Test(expected = HttpStatusException.class)
+    public void testPerformPostRequest() throws Exception {
+        restServiceWrapper.performPostRequest("testParam", "testToken", "testData");
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/controller/BaseWebServiceTest.java b/src/test/java/org/eclipse/openk/core/controller/BaseWebServiceTest.java
new file mode 100644
index 0000000..ab2a8fd
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/controller/BaseWebServiceTest.java
@@ -0,0 +1,86 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.controller;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import javax.ws.rs.core.Response;
+import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.resources.PlannedGridMeasuresResource;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+public class BaseWebServiceTest {
+	private String payloadNormalUser = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJodVl0eVByUEVLQ1phY3FfMW5sOGZscENETnFHdmZEZHctYUxGQXNoWHZVIn0.eyJqdGkiOiIwZGUyNTMyYi1mNTBkLTQxZTUtODQwYy1iNzZkOTYyZGM3MDYiLCJleHAiOjE1MjE2NDA0MTIsIm5iZiI6MCwiaWF0IjoxNTIxNjQwMTEyLCJpc3MiOiJodHRwOi8vZW50amF2YTAwMjo4MDgwL2F1dGgvcmVhbG1zL2Vsb2dib29rIiwiYXVkIjoiZWxvZ2Jvb2stYmFja2VuZCIsInN1YiI6ImMyZTlkN2FlLTJiZmEtNDU3OC1iMDllLWY1ZGM1ZjA5YTg3OSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVsb2dib29rLWJhY2tlbmQiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiJkOTE1MjY2MS03NTJlLTRiNmMtOWRiNi0wYjFmYzY3YTc4ZTciLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImVsb2dib29rLWFjY2VzcyIsImVsb2dib29rLW5vcm1hbHVzZXIiLCJ1bWFfYXV0aG9yaXphdGlvbiIsInBsYW5uZWQtcG9saWNpZXMtbm9ybWFsdXNlciJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInJvbGVzIjoiW3BsYW5uZWQtcG9saWNpZXMtbm9ybWFsdXNlciwgb2ZmbGluZV9hY2Nlc3MsIHVtYV9hdXRob3JpemF0aW9uLCBlbG9nYm9vay1hY2Nlc3MsIGVsb2dib29rLW5vcm1hbHVzZXJdIiwibmFtZSI6Ik90dG8gTm9ybWFsdmVyYnJhdWNoZXIiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJvdHRvIiwiZ2l2ZW5fbmFtZSI6Ik90dG8iLCJmYW1pbHlfbmFtZSI6Ik5vcm1hbHZlcmJyYXVjaGVyIn0.F-CcNatXaE0W4PhBNaSGUwddE_S05HqL6QuJLOWQo_n0_LdWGRw8iyF6RIbK8y06kH3gb79c6t1U0njWqE68pL9FQfP2t-_en-XlCwKzBdDXtq8e8xHyZ00P5zlE80du0A74qzh2g0HrE9fCgEaawk2_M6JxNFrToiwl6PGRS9RNRD_xgKVXn0XqG-I_qRKA-GdBTcLPjPD9bn4fAdlf3HWdVPUNclRI2ttUykFmpmRTAHKwI3cZOBrIMn4dasMn9k1xPP5IAGtCcgs6TF0YlnWvZgIhdT_5O4rmMtzZXjeuYsjpNnqz0LGA0GT6up90PZrTJF8rHtWU50wVgJSH9g";
+	private static final org.apache.log4j.Logger EMPTYLOGGER = org.apache.log4j.Logger
+			.getLogger(BaseWebServiceTest.class.getName());
+
+	private BaseWebService createBaseWebService() {
+		return new BaseWebService(EMPTYLOGGER) {
+			@Override
+			protected void assertAndRefreshToken(String token, SecureType secureType) throws HttpStatusException {
+
+			}
+
+			@Override
+			protected String getUserFromToken(String token) {
+				return null;
+			}
+		};
+	}
+
+	private BaseWebService.ModifyingInvokable createInvokable( Object o, Exception e2Return ) {
+		return (chuser) -> {
+            if( e2Return == null ) {
+                return o;
+            }
+            else {
+                throw e2Return;
+            }
+        };
+	}
+
+	@Test
+	public void testInvokeRunnableOK() {
+		Response r = createBaseWebService().invokeRunnable(null, BaseWebService.SecureType.NONE, createInvokable("Test Ok", null));
+		assertEquals(HttpStatus.OK_200, r.getStatus());
+	}
+
+	@Test
+	public void testInvokeRunnableNotNoneSecuretype() throws HttpStatusException {
+		Response r = createBaseWebService().invokeRunnable(payloadNormalUser, BaseWebService.SecureType.NORMAL, createInvokable("Test Ok", null));
+		assertNotEquals("", new PlannedGridMeasuresResource().getUserFromToken(payloadNormalUser));
+	}
+
+	@Test
+	public void testInvokeRunnable_GeneralException() {
+		Response r = createBaseWebService().invokeRunnable(null, BaseWebService.SecureType.NONE, createInvokable( null,
+				new Exception("hallodri")));
+		assertEquals(HttpStatus.INTERNAL_SERVER_ERROR_500, r.getStatus());
+	}
+
+	@Test
+	public void testGetVersionString() throws Exception, IOException {
+		BaseWebService bws = createBaseWebService();
+		String version = (String) Whitebox.invokeMethod(bws, "getVersionString");
+		assertNotNull(version);
+		assertNotEquals(version, "");
+	}
+
+
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/controller/EmailmanagerTest.java b/src/test/java/org/eclipse/openk/core/controller/EmailmanagerTest.java
new file mode 100644
index 0000000..6f441f4
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/controller/EmailmanagerTest.java
@@ -0,0 +1,188 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.GreenMailUtil;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.apache.commons.lang3.time.DateUtils;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration.EmailConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.util.Date;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertTrue;
+
+
+public class EmailmanagerTest {
+    private static GreenMail mailServer;
+    private static int emailTestPort;
+
+    /**
+     * Allocate free port.
+     * @return Found port.
+     * @throws IOException In case of error.
+     */
+    public static int port() throws IOException {
+        if (emailTestPort == 0){
+            try (ServerSocket socket = new ServerSocket(0)) {
+                emailTestPort = socket.getLocalPort();
+                return emailTestPort;
+            }
+        }
+        return emailTestPort;
+    }
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+    @Before
+    public void prepareTests() throws Exception {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        // mock email-configuration
+        EmailConfiguration emailConfiguration = createEmailConfiguration();
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+
+
+        setTestTemplateEmail("emailConfigurationTest/emailTemplates/appliedEmailTemplateTest.txt");
+        mailServer.start();
+
+    }
+    @After
+    public void afterTest() {
+        mailServer.stop();
+    }
+
+    private EmailConfiguration createEmailConfiguration() {
+        EmailConfiguration emailConfiguration = new EmailConfiguration();
+        emailConfiguration.setPort(emailTestPort+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+
+
+    @Test
+    public void testSendMail_ok() throws Exception {
+
+        Date date = DateUtils.parseDate("01.01.2018 18:00:00", "dd.MM.yyyy HH:mm:ss");
+        GridMeasure gridMeasure = new GridMeasure();
+        String gridMeasureTitle = "TestTitle";
+        gridMeasure.setTitle(gridMeasureTitle);
+        gridMeasure.setPlannedStarttimeFirstSinglemeasure(date);
+
+        PlgmProcessSubject plgmProcessSubject = PlgmProcessSubject.fromGridMeasure(gridMeasure, "testChangeUser");
+
+
+        EmailManager emailManager = new PgmEmail(plgmProcessSubject, BackendConfig.getInstance().getEmailTemplatePaths().getAppliedEmailTemplate(), false);
+        emailManager.sendEmail();
+        String subject = emailManager.subject;
+        Message[] messages = mailServer.getReceivedMessages();
+
+        assertEquals(messages.length, 4);
+        assertEquals(subject, messages[0].getSubject());
+        assertTrue(messages[0].getSubject().contains(gridMeasureTitle));
+        assertTrue(messages[0].getSubject().contains(gridMeasureTitle));
+        assertTrue(GreenMailUtil.getBody(messages[0]).trim().contains("TEST"));
+    }
+
+    @Test
+    public void testSendMail_withRecipientsFromGM_ok() throws Exception {
+
+        Date date = DateUtils.parseDate("01.01.2018 18:00:00", "dd.MM.yyyy HH:mm:ss");
+        GridMeasure gridMeasure = new GridMeasure();
+        String gridMeasureTitle = "testSendMail_withRecipientsFromGM";
+        gridMeasure.setTitle(gridMeasureTitle);
+        gridMeasure.setPlannedStarttimeFirstSinglemeasure(date);
+        gridMeasure.setEmailAddresses("UnitTestMailingListRecipient@test.de; UnitTest2MailingListRecipient@test.de");
+
+        PlgmProcessSubject plgmProcessSubject = PlgmProcessSubject.fromGridMeasure(gridMeasure, "testChangeUser");
+
+
+        EmailManager emailManager = new PgmEmail(plgmProcessSubject, BackendConfig.getInstance().getEmailTemplatePaths().getAppliedEmailTemplate(), true);
+        emailManager.sendEmail();
+        String subject = emailManager.subject;
+        Message[] messages = mailServer.getReceivedMessages();
+
+        assertEquals(messages.length, 6);
+        assertEquals(subject, messages[0].getSubject());
+        assertTrue(messages[0].getSubject().contains(gridMeasureTitle));
+        assertTrue(messages[0].getSubject().contains(gridMeasureTitle));
+        assertTrue(GreenMailUtil.getBody(messages[0]).trim().contains("TEST"));
+    }
+
+
+
+    @Test (expected = MessagingException.class)
+    public void testSendMail_nok() throws Exception {
+
+        mailServer.stop();
+        Date date = DateUtils.parseDate("01.01.2018 18:00:00", "dd.MM.yyyy HH:mm:ss");
+        GridMeasure gridMeasure = new GridMeasure();
+        String gridMeasureTitle = "TestTitle";
+        gridMeasure.setTitle(gridMeasureTitle);
+        gridMeasure.setPlannedStarttimeFirstSinglemeasure(date);
+
+        PlgmProcessSubject plgmProcessSubject = PlgmProcessSubject.fromGridMeasure(gridMeasure, "testChangeUser");
+
+        EmailManager emailManager = new PgmEmail(plgmProcessSubject, BackendConfig.getInstance().getEmailTemplatePaths().getAppliedEmailTemplate(), false);
+        emailManager.sendEmail();
+    }
+
+    @Test (expected = MessagingException.class)
+    public void testSendMail_invalidRecipient() throws Exception {
+        setTestTemplateEmail("emailConfigurationTest/emailTemplates/emailTemplateTestFehlerRecipient.txt");
+
+        GridMeasure gridMeasure = new GridMeasure();
+        PlgmProcessSubject plgmProcessSubject = PlgmProcessSubject.fromGridMeasure(gridMeasure, "testChangeUser");
+
+        EmailManager emailManager = new PgmEmail(plgmProcessSubject, BackendConfig.getInstance().getEmailTemplatePaths().getAppliedEmailTemplate(), false);
+        emailManager.sendEmail();
+    }
+
+    @Test (expected = MessagingException.class)
+    public void testSendMail_invalidSender() throws Exception {
+        setTestTemplateEmail("emailConfigurationTest/emailTemplates/emailTemplateTestFehlerRecipient.txt");
+        EmailConfiguration emailConfiguration = createEmailConfiguration();
+        emailConfiguration.setSender("testCaseSendertest.de");
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+
+        GridMeasure gridMeasure = new GridMeasure();
+        PlgmProcessSubject plgmProcessSubject = PlgmProcessSubject.fromGridMeasure(gridMeasure, "testChangeUser");
+
+        EmailManager emailManager = new PgmEmail(plgmProcessSubject, BackendConfig.getInstance().getEmailTemplatePaths().getAppliedEmailTemplate(), false);
+        emailManager.sendEmail();
+    }
+
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setAppliedEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/controller/GridConfigButtonManipulatorTest.java b/src/test/java/org/eclipse/openk/core/controller/GridConfigButtonManipulatorTest.java
new file mode 100644
index 0000000..b8ff6d4
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/controller/GridConfigButtonManipulatorTest.java
@@ -0,0 +1,159 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.BackendSettings;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.eclipse.openk.common.JsonGeneratorBase.getGson;
+import static org.junit.Assert.assertEquals;
+
+public class GridConfigButtonManipulatorTest {
+
+    @Before
+    public void initSettings() {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+    }
+
+    @Test
+    public void testManipulateButtons1() {
+        RoleAccessDefinitions.INSTANCE.load();
+        BackendSettings.BpmnGridConfig gridConfig = getGridConfig(false,
+                false,
+                false,
+                false,
+                false);
+        RoleAccessDefinitions.INSTANCE.setDirty();
+        RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(x -> new GridConfigButtonManipulator(gridConfig).manipulateButtons(x ));
+
+        assertEquals("forapproval", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[1].getActiveButtons()[1]);
+        assertEquals("request", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[4].getActiveButtons()[2]);
+        assertEquals("activate", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[6].getActiveButtons()[1]);
+        assertEquals("inwork", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[7].getActiveButtons()[1]);
+
+
+    }
+
+
+    @Test
+    public void testManipulateButtons2() {
+        BackendSettings.BpmnGridConfig gridConfig = getGridConfig(true,
+                false,
+                false,
+                false,
+                false);
+        RoleAccessDefinitions.INSTANCE.setDirty();
+        RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(x -> new GridConfigButtonManipulator(gridConfig).manipulateButtons(x ));
+        assertEquals("approve", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[1].getActiveButtons()[1]);
+    }
+
+    @Test
+    public void testManipulateButtons3() {
+        BackendSettings.BpmnGridConfig gridConfig = getGridConfig(true,
+                true,
+                false,
+                false,
+                false);
+        RoleAccessDefinitions.INSTANCE.setDirty();
+        RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(x -> new GridConfigButtonManipulator(gridConfig).manipulateButtons(x ));
+
+        assertEquals("close", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[4].getActiveButtons()[2]);
+    }
+
+    @Test
+    public void testManipulateButtons4() {
+        BackendSettings.BpmnGridConfig gridConfig = getGridConfig(true,
+                false,
+                true,
+                false,
+                false);
+
+        RoleAccessDefinitions.INSTANCE.setDirty();
+        RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(x -> new GridConfigButtonManipulator(gridConfig).manipulateButtons(x ));
+
+        assertEquals("activate", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[4].getActiveButtons()[2]);
+    }
+
+
+    @Test
+    public void testManipulateButtons5() {
+        BackendSettings.BpmnGridConfig gridConfig = getGridConfig(true,
+                true,
+                true,
+                false,
+                false);
+
+        RoleAccessDefinitions.INSTANCE.setDirty();
+        RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(x -> new GridConfigButtonManipulator(gridConfig).manipulateButtons(x ));
+
+        assertEquals("close", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[4].getActiveButtons()[2]);
+
+    }
+
+    @Test
+    public void testManipulateButtons6() {
+        BackendSettings.BpmnGridConfig gridConfig = getGridConfig(true,
+                true,
+                true,
+                true,
+                false);
+
+        RoleAccessDefinitions.INSTANCE.setDirty();
+        RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(x -> new GridConfigButtonManipulator(gridConfig).manipulateButtons(x ));
+
+        assertEquals("close", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[6].getActiveButtons()[1]);
+    }
+
+
+    @Test
+    public void testManipulateButtons7() {
+        BackendSettings.BpmnGridConfig gridConfig = getGridConfig(true,
+                true,
+                true,
+                true,
+                true);
+
+        RoleAccessDefinitions.INSTANCE.setDirty();
+        RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(x -> new GridConfigButtonManipulator(gridConfig).manipulateButtons(x ));
+
+        assertEquals("finish", RoleAccessDefinitions.INSTANCE.getRoleAccessDefinition(null).getControls()[7].getActiveButtons()[1]);
+    }
+
+
+
+
+
+
+
+    private BackendSettings.BpmnGridConfig getGridConfig(boolean skipForApproval,
+                                                         boolean endAfterApproved,
+                                                         boolean skipRequesting,
+                                                         boolean endAfterReleased,
+                                                         boolean skipInWork) {
+        BackendSettings.BpmnGridConfig config = new BackendSettings.BpmnGridConfig();
+        config.setSkipForApproval(skipForApproval);
+        config.setEndAfterApproved(endAfterApproved);
+        config.setSkipRequesting(skipRequesting);
+        config.setEndAfterReleased(endAfterReleased);
+        config.setSkipInWork(skipInWork);
+        return config;
+    }
+
+    private BackendSettings getBackendSettings() {
+        ResourceLoaderBase loaderBase = new ResourceLoaderBase();
+        String backendSettingsString = loaderBase.loadFromPath("./backendSettings.json");
+        return getGson().fromJson(backendSettingsString, BackendSettings.class);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/controller/GridMeasureBackendControllerTest.java b/src/test/java/org/eclipse/openk/core/controller/GridMeasureBackendControllerTest.java
new file mode 100644
index 0000000..87d7e4a
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/controller/GridMeasureBackendControllerTest.java
@@ -0,0 +1,1143 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import org.apache.http.HttpStatus;
+import org.easymock.EasyMock;
+import org.easymock.internal.MocksControl;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration.EmailConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.Document;
+import org.eclipse.openk.api.FilterObject;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.api.HGridMeasure;
+import org.eclipse.openk.api.Lock;
+import org.eclipse.openk.api.VersionInfo;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.bpmn.base.ProcessException;
+import org.eclipse.openk.core.bpmn.base.ProcessGrid;
+import org.eclipse.openk.core.bpmn.base.ProcessGrid.Recoverable;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmGrid;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessState;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.db.dao.AutoCloseEntityManager;
+import org.eclipse.openk.db.dao.HTblGridMeasureDao;
+import org.eclipse.openk.db.dao.RefVersionDao;
+import org.eclipse.openk.db.dao.TblDocumentsDao;
+import org.eclipse.openk.db.dao.TblGridMeasureDao;
+import org.eclipse.openk.db.dao.TblLockDao;
+import org.eclipse.openk.db.dao.TblMeasureDocumentsDao;
+import org.eclipse.openk.db.dao.TblSingleGridmeasureDao;
+import org.eclipse.openk.db.dao.TblStepsDao;
+import org.eclipse.openk.db.model.HTblGridMeasure;
+import org.eclipse.openk.db.model.RefVersion;
+import org.eclipse.openk.db.model.TblDocuments;
+import org.eclipse.openk.db.model.TblGridMeasure;
+import org.eclipse.openk.db.model.TblLock;
+import org.eclipse.openk.db.model.TblMeasureDocuments;
+import org.eclipse.openk.db.model.TblSingleGridmeasure;
+import org.eclipse.openk.db.model.TblSteps;
+import org.eclipse.openk.resources.PlannedGridMeasuresResource;
+import org.junit.Before;
+import org.junit.Test;
+import org.powermock.api.easymock.PowerMock;
+import org.powermock.reflect.Whitebox;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNull;
+import static junit.framework.TestCase.assertTrue;
+import static org.easymock.EasyMock.anyInt;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+
+public class GridMeasureBackendControllerTest {
+
+    public GridMeasureBackendController beMockGridMeasure;
+
+    private TestableGridMeasureBackendController tbc;
+    private String jwtString = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJodVl0eVByUEVLQ1phY3FfMW5sOGZscENETnFHdmZEZHctYUxGQXNoWHZVIn0.eyJqdGkiOiJkOWIwZTk3OS1jMmYwLTQzYmYtYjM5Mi03ZTNiM2ZiNTZjNTUiLCJleHAiOjE1MjgxNzg4ODUsIm5iZiI6MCwiaWF0IjoxNTI4MTc4NTg1LCJpc3MiOiJodHRwOi8vZW50amF2YTAwMjo4MDgwL2F1dGgvcmVhbG1zL2Vsb2dib29rIiwiYXVkIjoiZWxvZ2Jvb2stYmFja2VuZCIsInN1YiI6ImMyZTlkN2FlLTJiZmEtNDU3OC1iMDllLWY1ZGM1ZjA5YTg3OSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVsb2dib29rLWJhY2tlbmQiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiIzZDA0YTAyZC01NGZkLTRkNTAtOGNmYS0wYzVjNGFmYTJkNDMiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImVsb2dib29rLWFjY2VzcyIsImVsb2dib29rLW5vcm1hbHVzZXIiLCJwbGFubmVkLXBvbGljaWVzLWFjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIiwicGxhbm5lZC1wb2xpY2llcy1ub3JtYWx1c2VyIiwicGxhbm5lZC1wb2xpY2llcy1tZWFzdXJlYXBwbGljYW50Il19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwibmFtZSI6Ik90dG8gTWHDn25haG1lbi1BbnRyYWdzc3RlbGxlciIsInByZWZlcnJlZF91c2VybmFtZSI6Im90dG8iLCJnaXZlbl9uYW1lIjoiT3R0byIsImZhbWlseV9uYW1lIjoiTWHDn25haG1lbi1BbnRyYWdzc3RlbGxlciJ9.OQjxr18u3E0Eyzkaep32JAKhv1-sV-QLkBs4I7u5_Gf1rI2QIGqrp266mj_kVBVG0-hjNCOo1oaehh3PnrKEC4RDY6g39RDDlk2fh-WQw5IcasSSVyUuKLmSoePTzBrbEzaJWJC7ZjtO0I96kEbqBSHMWAa9bAcl4lqHjvBup1atACblJKAFbBltC_8BkKeNEVEkAY5r59EqSFh6Wzncuhqw8h7MDmFiHfhsNsvhlUJ1QiJ43qYoVMF6RSpbx4TVCdIyXDHhTmWXz5lyRt_YiHc4A4Ca9lx34FXCohswxwqtvisYiAp7AiIoMamHhZTXxTbPzOoCCMmihxNdiPK5wQ";
+
+    @Before
+    public void prepareTests() throws Exception {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+
+        // mock email-configuration
+        EmailConfiguration emailConfiguration = new EmailConfiguration();
+        emailConfiguration.setPort("25");
+        emailConfiguration.setSmtpHost("localhostTest");
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setAppliedEmailTemplate("appliedEmailPathToEmailTxt");
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+
+        beMockGridMeasure = PowerMock.createNiceMock(GridMeasureBackendController.class);
+        tbc = new TestableGridMeasureBackendController();
+        tbc.tblMeasureDocumentsDao = createTblMeasureDocumentsDao("noError");
+        tbc.tblDocumentsDao = createTblDocumentsDao("noError", "fileNameExample.txt");
+    }
+
+    private class TestableGridMeasureBackendController extends GridMeasureBackendController {
+
+        public TblGridMeasureDao tblGridMeasureDao;
+        public TblSingleGridmeasureDao tblSingleGridmeasureDao;
+        public TblStepsDao tblStepsDao;
+        public TblMeasureDocumentsDao tblMeasureDocumentsDao;
+        public TblDocumentsDao tblDocumentsDao;
+        public TblLockDao tblLockDao;
+        public HTblGridMeasureDao htblGridMeasureDao;
+        public MailAddressCache mailAddressCache;
+
+        @Override
+        protected AutoCloseEntityManager createEm() {
+            EntityManager em = getMockedEntityManager();
+
+            return new AutoCloseEntityManager(em);
+        }
+
+        @Override
+        protected TblGridMeasureDao createTblGridMeasureDao( EntityManager em ) {
+            if( tblGridMeasureDao != null ) {
+                return tblGridMeasureDao;
+            }
+            else {
+                return super.createTblGridMeasureDao(em);
+            }
+        }
+
+        @Override
+        protected TblSingleGridmeasureDao createTblSingleGridmeasureDao( EntityManager em ) {
+            if( tblSingleGridmeasureDao != null ) {
+                return tblSingleGridmeasureDao;
+            }
+            else {
+                return super.createTblSingleGridmeasureDao(em);
+            }
+        }
+
+        @Override
+        protected TblStepsDao createTblStepsDao( EntityManager em ) {
+            if( tblStepsDao != null ) {
+                return tblStepsDao;
+            }
+            else {
+                return super.createTblStepsDao(em);
+            }
+        }
+
+        @Override
+        protected HTblGridMeasureDao createHistoricalTblGridMeasureDao( EntityManager em ) {
+            if( htblGridMeasureDao != null ) {
+                return htblGridMeasureDao;
+            }
+            else {
+                return super.createHistoricalTblGridMeasureDao(em);
+            }
+        }
+
+        @Override
+        protected TblMeasureDocumentsDao createTblMeasureDocumentsDao( EntityManager em ) {
+            if( tblMeasureDocumentsDao != null ) {
+                return tblMeasureDocumentsDao;
+            }
+            else {
+                return super.createTblMeasureDocumentsDao(em);
+            }
+        }
+
+        @Override
+        protected TblDocumentsDao createTblDocumentsDao ( EntityManager em ) {
+            if( tblDocumentsDao != null ) {
+                return tblDocumentsDao;
+            }
+            else {
+                return super.createTblDocumentsDao(em);
+            }
+        }
+
+        @Override
+        protected TblLockDao createTblLockDao(EntityManager em) {
+            if( tblLockDao != null ) {
+                return tblLockDao;
+            }
+            else {
+                return super.createTblLockDao(em);
+            }
+        }
+        
+
+    }
+
+    private EntityManager getMockedEntityManager() {
+        EntityTransaction et = EasyMock.createMock(EntityTransaction.class);
+        et.begin();
+        expectLastCall().andVoid().anyTimes();
+        et.commit();
+        expectLastCall().andVoid().anyTimes();
+        et.rollback();
+        expectLastCall().andVoid().anyTimes();
+
+        EasyMock.replay(et);
+        EasyMock.verify(et);
+
+        EntityManager em = EasyMock.createMock(EntityManager.class);
+        expect(em.getTransaction()).andReturn(et).anyTimes();
+
+        expect(em.isOpen()).andReturn(false).anyTimes();
+
+        em.close();
+        expectLastCall().andVoid().anyTimes();
+
+        EasyMock.replay(em);
+        EasyMock.verify(em);
+        return em;
+    }
+
+    private String payloadNormalUser = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJodVl0eVByUEVLQ1phY3FfMW5sOGZscENETnFHdmZEZHctYUxGQXNoWHZVIn0.eyJqdGkiOiIwZGUyNTMyYi1mNTBkLTQxZTUtODQwYy1iNzZkOTYyZGM3MDYiLCJleHAiOjE1MjE2NDA0MTIsIm5iZiI6MCwiaWF0IjoxNTIxNjQwMTEyLCJpc3MiOiJodHRwOi8vZW50amF2YTAwMjo4MDgwL2F1dGgvcmVhbG1zL2Vsb2dib29rIiwiYXVkIjoiZWxvZ2Jvb2stYmFja2VuZCIsInN1YiI6ImMyZTlkN2FlLTJiZmEtNDU3OC1iMDllLWY1ZGM1ZjA5YTg3OSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVsb2dib29rLWJhY2tlbmQiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiJkOTE1MjY2MS03NTJlLTRiNmMtOWRiNi0wYjFmYzY3YTc4ZTciLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImVsb2dib29rLWFjY2VzcyIsImVsb2dib29rLW5vcm1hbHVzZXIiLCJ1bWFfYXV0aG9yaXphdGlvbiIsInBsYW5uZWQtcG9saWNpZXMtbm9ybWFsdXNlciJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInJvbGVzIjoiW3BsYW5uZWQtcG9saWNpZXMtbm9ybWFsdXNlciwgb2ZmbGluZV9hY2Nlc3MsIHVtYV9hdXRob3JpemF0aW9uLCBlbG9nYm9vay1hY2Nlc3MsIGVsb2dib29rLW5vcm1hbHVzZXJdIiwibmFtZSI6Ik90dG8gTm9ybWFsdmVyYnJhdWNoZXIiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJvdHRvIiwiZ2l2ZW5fbmFtZSI6Ik90dG8iLCJmYW1pbHlfbmFtZSI6Ik5vcm1hbHZlcmJyYXVjaGVyIn0.F-CcNatXaE0W4PhBNaSGUwddE_S05HqL6QuJLOWQo_n0_LdWGRw8iyF6RIbK8y06kH3gb79c6t1U0njWqE68pL9FQfP2t-_en-XlCwKzBdDXtq8e8xHyZ00P5zlE80du0A74qzh2g0HrE9fCgEaawk2_M6JxNFrToiwl6PGRS9RNRD_xgKVXn0XqG-I_qRKA-GdBTcLPjPD9bn4fAdlf3HWdVPUNclRI2ttUykFmpmRTAHKwI3cZOBrIMn4dasMn9k1xPP5IAGtCcgs6TF0YlnWvZgIhdT_5O4rmMtzZXjeuYsjpNnqz0LGA0GT6up90PZrTJF8rHtWU50wVgJSH9g";
+
+    private RefVersionDao createRefVersionDao(String dBversion ) {
+        RefVersion rv = new RefVersion();
+        if( dBversion != null ) {
+            rv.setVersion(dBversion);
+        }
+        else {
+            rv = null;
+        }
+        RefVersionDao dao = EasyMock.createMock(RefVersionDao.class);
+        expect( dao.getVersionInTx() ).andReturn(rv).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private TblGridMeasureDao createTblGridMeasureDao() {
+
+        java.util.List<TblGridMeasure> mList = new ArrayList<TblGridMeasure>();
+
+        Calendar gCal = new GregorianCalendar();
+        gCal.add( Calendar.DAY_OF_MONTH, 1 );
+        Date tomorrow = gCal.getTime();
+
+        Calendar gCal2 = new GregorianCalendar();
+        gCal2.add( Calendar.MONTH, 1 );
+        Date nextMonth = gCal2.getTime();
+
+        Calendar gCal3 = new GregorianCalendar();
+        gCal3.add(Calendar.DATE, -1);
+        Date yesterday = gCal2.getTime();
+
+        TblGridMeasure mGm1 = new TblGridMeasure();
+        mGm1.setId(1);
+        mGm1.setIdDescriptive("20");
+        mGm1.setTitle("Title1");
+        mGm1.setFkRefGmStatus(0);
+        mGm1.setPlannedStarttimeFirstSinglemeasure(tomorrow);
+        //mGm1.setEmailAddresses("testuser1@test.com");
+        mList.add(mGm1);
+
+        TblGridMeasure mGm2 = new TblGridMeasure();
+        mGm2.setId(2);
+        mGm2.setIdDescriptive("21");
+        mGm2.setTitle("Title2");
+        mGm2.setFkRefGmStatus(1);
+        mGm2.setPlannedStarttimeFirstSinglemeasure(nextMonth);
+        mList.add(mGm2);
+
+        TblGridMeasure mGm3 = new TblGridMeasure();
+        mGm3.setId(3);
+        mGm3.setIdDescriptive("22");
+        mGm3.setTitle("Title3");
+        mGm3.setFkRefGmStatus(3);
+        mGm3.setPlannedStarttimeFirstSinglemeasure(yesterday);
+        mList.add(mGm3);
+
+        TblGridMeasure mGm4 = new TblGridMeasure();
+        mGm4.setId(4);
+        mGm4.setIdDescriptive("222");
+        mGm4.setTitle("Title22");
+        mGm4.setFkRefGmStatus(2); // canceled
+        mGm4.setPlannedStarttimeFirstSinglemeasure(yesterday);
+        mList.add(mGm4);
+
+        TblGridMeasure mGm5 = new TblGridMeasure();
+        mGm5.setId(5);
+        mGm5.setIdDescriptive("221");
+        mGm5.setTitle("Title11");
+        mGm5.setFkRefGmStatus(11); //closed
+        mGm5.setPlannedStarttimeFirstSinglemeasure(yesterday);
+        mList.add(mGm5);
+
+        List<String> mailAddressesList  = new ArrayList<>();
+        mailAddressesList.add("testuser1@test.com, testuser2@test.com");
+        mailAddressesList.add("testuser2@test.com, testuser3@test.com");
+        mailAddressesList.add("testuser3@test.com, testuser4@test.com");
+
+
+        TblGridMeasureDao dao = EasyMock.createMock(TblGridMeasureDao.class);
+        expect( dao.findByIdInTx(anyObject(), anyInt())).andReturn(mList.get(0)).anyTimes();
+        expect( dao.findById(anyObject(), anyInt())).andReturn(mList.get(0)).anyTimes();
+        expect( dao.getGridMeasuresInTx()).andReturn(mList).anyTimes();
+        expect(dao.getGridMeasuresByStatusId(anyInt())).andReturn(mList).anyTimes();
+        expect(dao.getGridMeasuresExcludingStatusInTx(anyInt())).andReturn(mList).anyTimes();
+        expect(dao.getGridMeasuresExcludingStatusInTx(anyInt(), anyInt())).andReturn(mList).anyTimes();
+        expect(dao.getMailAddressesFromGridmeasures()).andReturn(mailAddressesList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private TblGridMeasureDao createTblGridMeasureDaoStatus() {
+
+        java.util.List<TblGridMeasure> mList = new ArrayList<TblGridMeasure>();
+
+        TblGridMeasure mGm1 = new TblGridMeasure();
+        mGm1.setId(1);
+        mGm1.setIdDescriptive("20");
+        mGm1.setTitle("Title1");
+        mGm1.setFkRefGmStatus(3);
+        mList.add(mGm1);
+
+        TblGridMeasureDao dao = EasyMock.createMock(TblGridMeasureDao.class);
+        expect( dao.findByIdInTx(anyObject(), anyInt())).andReturn(mList.get(0)).anyTimes();
+        expect( dao.findById(anyObject(), anyInt())).andReturn(mList.get(0)).anyTimes();
+        expect( dao.getGridMeasuresInTx()).andReturn(mList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private TblStepsDao createTblStepsDao() {
+
+        java.util.List<TblSteps> stepList = new ArrayList<TblSteps>();
+
+        TblSteps step1 = new TblSteps();
+        step1.setId(1);
+        step1.setTargetState("target");
+        step1.setSwitchingObject("tool");
+        step1.setSortorder(1);
+        stepList.add(step1);
+
+        TblSteps step2 = new TblSteps();
+        step2.setId(2);
+        step2.setTargetState("target 2");
+        step2.setSwitchingObject("tool 2");
+        step2.setSortorder(2);
+        stepList.add(step2);
+
+        TblStepsDao dao = EasyMock.createMock(TblStepsDao.class);
+        expect( dao.findByIdInTx(anyObject(), anyInt())).andReturn(stepList.get(0)).anyTimes();
+        expect( dao.findById(anyObject(), anyInt())).andReturn(stepList.get(0)).anyTimes();
+        expect( dao.getStepsBySingleGmIdInTx(1)).andReturn(stepList).anyTimes();
+        expect( dao.getStepsInTx()).andReturn(stepList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private TblSingleGridmeasureDao createTblSingleGridmeasureDao() {
+
+        java.util.List<TblSingleGridmeasure> mList = new ArrayList<TblSingleGridmeasure>();
+
+        TblSingleGridmeasure mSgm1 = new TblSingleGridmeasure();
+        mSgm1.setId(1);
+        mSgm1.setTitle("Title1");
+        mSgm1.setSortorder(1);
+        mSgm1.setCimId("2");
+        mList.add(mSgm1);
+
+        TblSingleGridmeasureDao dao = EasyMock.createMock(TblSingleGridmeasureDao.class);
+        expect( dao.findByIdInTx(anyObject(), anyInt())).andReturn(mList.get(0)).anyTimes();
+        expect( dao.findById(anyObject(), anyInt())).andReturn(mList.get(0)).anyTimes();
+        expect( dao.getSingleGridmeasuresByGmIdInTx(1)).andReturn(mList).anyTimes();
+        expect( dao.getSingleGridmeasuresInTx()).andReturn(mList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private HTblGridMeasureDao createHistoricalTblGridMeasureDao() {
+
+        java.util.List<HTblGridMeasure> mList = new ArrayList<HTblGridMeasure>();
+
+        Calendar gCal = new GregorianCalendar();
+        gCal.add( Calendar.DAY_OF_MONTH, 1 );
+        Date tomorrow = gCal.getTime();
+
+        Calendar gCal2 = new GregorianCalendar();
+        gCal2.add( Calendar.MONTH, 1 );
+        Date nextMonth = gCal2.getTime();
+
+        Calendar gCal3 = new GregorianCalendar();
+        gCal3.add(Calendar.DATE, -1);
+        Date yesterday = gCal2.getTime();
+
+        HTblGridMeasure mGm1 = new HTblGridMeasure();
+        mGm1.setId(1);
+        mGm1.setIdDescriptive("20");
+        mGm1.setTitle("Title1");
+        mGm1.setFkRefGmStatus(0);
+        mGm1.setPlannedStarttimeFirstSinglemeasure(tomorrow);
+        mList.add(mGm1);
+
+        HTblGridMeasure mGm2 = new HTblGridMeasure();
+        mGm2.setId(2);
+        mGm2.setIdDescriptive("21");
+        mGm2.setTitle("Title2");
+        mGm2.setFkRefGmStatus(1);
+        mGm2.setPlannedStarttimeFirstSinglemeasure(nextMonth);
+        mList.add(mGm2);
+
+        HTblGridMeasure mGm3 = new HTblGridMeasure();
+        mGm3.setId(3);
+        mGm3.setIdDescriptive("22");
+        mGm3.setTitle("Title3");
+        mGm3.setFkRefGmStatus(3);
+        mGm3.setPlannedStarttimeFirstSinglemeasure(yesterday);
+        mList.add(mGm3);
+
+        HTblGridMeasureDao dao = EasyMock.createMock(HTblGridMeasureDao.class);
+        expect( dao.getHistoricalGridMeasuresByIdInTx(anyInt())).andReturn(mList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private TblMeasureDocumentsDao createTblMeasureDocumentsDao(String error) throws Exception {
+        TblMeasureDocumentsDao dao = getTblMeasureDocumentsDaoMockBasic();
+
+        java.util.List<TblMeasureDocuments> allTblMeasureDocumentsByIdList = new ArrayList<>();
+        java.util.List<TblMeasureDocuments> measureDocumentByDocumentIdList = new ArrayList<>();
+
+        //TblDocuments
+        TblDocuments tblDocuments1 = new TblDocuments();
+        tblDocuments1.setId(1);
+        tblDocuments1.setDocumentName("test.xls");
+
+        TblDocuments tblDocuments2 = new TblDocuments();
+        tblDocuments2.setId(2);
+        tblDocuments2.setDocumentName("uploadTestFile.txt");
+
+        TblDocuments tblDocuments3 = new TblDocuments();
+        tblDocuments3.setId(3);
+        tblDocuments3.setDocumentName("test.png");
+
+        //TblMeasureDocuments
+        TblMeasureDocuments mD1 = new TblMeasureDocuments();
+        mD1.setId(1);
+        mD1.setTblDocuments(tblDocuments1);
+        mD1.setFkTblMeasure(1);
+
+        TblMeasureDocuments mD2 = new TblMeasureDocuments();
+        mD2.setId(2);
+        mD2.setTblDocuments(tblDocuments2);
+        mD2.setFkTblMeasure(1);
+
+        TblMeasureDocuments mD3 = new TblMeasureDocuments();
+        mD3.setId(3);
+        mD3.setTblDocuments(tblDocuments3);
+        mD3.setFkTblMeasure(2);
+
+        //List
+        allTblMeasureDocumentsByIdList.add(mD1);
+        allTblMeasureDocumentsByIdList.add(mD2);
+        allTblMeasureDocumentsByIdList.add(mD3);
+
+        //List
+        measureDocumentByDocumentIdList.add(mD1);
+
+        switch (error){
+            case "getMeasureDocumentByDocumentIdErrorHttp":
+                expect( dao.getMeasureDocumentByDocumentId(anyInt())).andThrow(new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR)).anyTimes();
+                break;
+            case "getMeasureDocumentByDocumentIdError":
+                expect( dao.getMeasureDocumentByDocumentId(anyInt())).andReturn(measureDocumentByDocumentIdList).anyTimes();
+                expect( dao.mergeInTx(anyObject())).andThrow(new Exception("MockedException")).anyTimes();
+                break;
+            case "getAllTblMeasureDocumentsByIdError":
+                expect( dao.getAllTblMeasureDocumentsById(anyInt())).andThrow(new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR)).anyTimes();
+                break;
+            case "storeInTxError":
+                expect( dao.storeInTx(anyObject(TblMeasureDocuments.class))).andThrow(new Exception("MockedException")).anyTimes();
+                break;
+            default:
+                expect( dao.getAllTblMeasureDocumentsById(anyInt())).andReturn(allTblMeasureDocumentsByIdList).anyTimes();
+                expect( dao.getMeasureDocumentByDocumentId(anyInt())).andReturn(measureDocumentByDocumentIdList).anyTimes();
+                expect( dao.storeInTx(anyObject(TblMeasureDocuments.class))).andReturn(mD1).anyTimes();
+        }
+
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private TblMeasureDocumentsDao getTblMeasureDocumentsDaoMockBasic() {
+        TblMeasureDocumentsDao dao = EasyMock.createNiceMock(TblMeasureDocumentsDao.class);
+        expect( dao.getEM()).andReturn(getMockedEntityManager()).anyTimes();
+        return dao;
+    }
+
+    private TblDocumentsDao createTblDocumentsDao(String error, String fileName) throws Exception {
+        TblDocumentsDao dao = getTblDocumentsDaoMockBasic();
+
+        TblDocuments tblDocuments1 = new TblDocuments();
+        tblDocuments1.setId(1);
+        tblDocuments1.setDocumentName(fileName);
+        tblDocuments1.setModUser("modUser");
+        tblDocuments1.setCreateUser("createUser");
+
+        switch (error){
+            case "storeInTxError":
+                expect( dao.storeInTx(anyObject(TblDocuments.class))).andThrow(new Exception("MockedException")).anyTimes();
+                break;
+            default:
+                expect( dao.storeInTx(anyObject(TblDocuments.class))).andReturn(tblDocuments1).anyTimes();
+                expect( dao.findByIdInTx(anyObject(), anyInt())).andReturn(tblDocuments1).anyTimes();
+        }
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private TblDocumentsDao getTblDocumentsDaoMockBasic() {
+        TblDocumentsDao dao = EasyMock.createNiceMock(TblDocumentsDao.class);
+        expect( dao.getEM()).andReturn(getMockedEntityManager()).anyTimes();
+        return dao;
+    }
+
+    private TblLockDao createTblLockDaoBasic() throws HttpStatusException{
+        TblLockDao mockedDao = EasyMock.createNiceMock(TblLockDao.class);
+        expect( mockedDao.getEM()).andReturn(getMockedEntityManager()).anyTimes();
+
+        return mockedDao;
+    }
+
+    private TblLockDao createTblLockDao() throws Exception{
+
+        TblLockDao mockedDao = createTblLockDaoBasic();
+
+        TblLock mLock = new TblLock();
+        mLock.setId(1);
+        mLock.setKey(2);
+        mLock.setUsername("Testuser");
+        mLock.setInfo("GridMeasure");
+
+        expect( mockedDao.getLock(2, "GridMeasure")).andReturn(mLock).anyTimes();
+        expect( mockedDao.storeInTx(anyObject(TblLock.class))).andReturn(mLock).anyTimes();
+
+        replay( mockedDao );
+        verify( mockedDao );
+
+        return mockedDao;
+    }
+
+    private TblLockDao createTblLockDao_null() throws HttpStatusException{
+
+        TblLockDao mockedDao = createTblLockDaoBasic();
+
+        expect( mockedDao.getLock(anyInt(), anyString())).andReturn(null).anyTimes();
+        replay( mockedDao );
+        verify( mockedDao );
+
+        return mockedDao;
+    }
+
+    private TblLockDao createTblLockDao_locked() throws HttpStatusException{
+
+        TblLockDao mockedDao = createTblLockDaoBasic();
+
+        TblLock mLock = new TblLock();
+        mLock.setId(1);
+        mLock.setKey(2);
+        mLock.setUsername("ModUser");
+        mLock.setInfo("Gridmeasure");
+
+        expect( mockedDao.getLock(2, "Gridmeasure")).andReturn(mLock).anyTimes();
+        //expect( mockedDao.storeInTx(anyObject(TblLock.class))).andReturn(mLock).anyTimes();
+
+        replay( mockedDao );
+        verify( mockedDao );
+
+        return mockedDao;
+    }
+
+
+    @Test
+    public void testGetVersionInfoImpl_ok() throws Exception {
+        GridMeasureBackendController be = new GridMeasureBackendController();
+
+        RefVersionDao dao = createRefVersionDao( "DB2" );
+        VersionInfo vi = (VersionInfo)Whitebox.invokeMethod(be, "getVersionInfoImpl", dao, "BEVersion1");
+
+        assertEquals(vi.getDbVersion(), "DB2");
+        assertEquals(vi.getBackendVersion(), "BEVersion1");
+    }
+
+    @Test
+    public void testGetVersionInfoImpl_dbnull() throws Exception {
+        GridMeasureBackendController be = new GridMeasureBackendController();
+
+        RefVersionDao dao = createRefVersionDao( null );
+        VersionInfo vi = (VersionInfo)Whitebox.invokeMethod(be, "getVersionInfoImpl", dao, "BEVersion1");
+
+        assertEquals(vi.getDbVersion(), "NO_DB");
+        assertEquals(vi.getBackendVersion(), "BEVersion1");
+
+    }
+    
+    @Test( expected = HttpStatusException.class )
+    public void testGetGridMeasureAttachments_exception() throws Exception {
+        tbc.tblMeasureDocumentsDao = createTblMeasureDocumentsDao("getAllTblMeasureDocumentsByIdError");
+        tbc.getGridMeasureAttachments(1);
+    }
+
+    @Test
+    public void testGetGridMeasureAttachments() throws Exception {
+        TblMeasureDocumentsDao dao = createTblMeasureDocumentsDao("noError");
+        tbc.tblMeasureDocumentsDao = dao;
+
+        List<Document> gridMeasureAttachments = tbc.getGridMeasureAttachments(1);
+
+        List<TblMeasureDocuments> measureDocuments = dao.getAllTblMeasureDocumentsById(1);
+        assertEquals(gridMeasureAttachments.size(), measureDocuments.size());
+        assertEquals(gridMeasureAttachments.get(0).getId(), new Integer(1));
+        assertEquals(gridMeasureAttachments.get(0).getDocumentName(), "test.xls");
+    }
+
+    @Test( expected = HttpStatusException.class )
+    public void testDeleteDocumentsError() throws Exception {
+        prepareDeleteDocumentsTestError("getMeasureDocumentByDocumentIdError");
+        tbc.deleteDocument("moduser", 1);
+    }
+
+    @Test(expected = HttpStatusException.class)
+    public void testDeleteDocumentsErrorHttp() throws Exception {
+        prepareDeleteDocumentsTestError("getMeasureDocumentByDocumentIdErrorHttp");
+        tbc.deleteDocument("moduser", 1);
+    }
+
+    @Test
+    public void testDeleteDocuments() throws Exception {
+        int deletedDocumentId = tbc.deleteDocument("moduser", 1);
+        assertEquals(deletedDocumentId, 1);
+
+    }
+
+    @Test
+    public void testDownloadDocument() throws Exception {
+        TblDocuments downloadDocument = tbc.downloadGridMeasureAttachment(1);
+
+        assertEquals(downloadDocument.getId(),new Integer(1));
+        assertEquals(downloadDocument.getDocumentName(),"fileNameExample.txt");
+
+    }
+
+    @Test( expected = HttpStatusException.class )
+    public void testUploadDocuments_error() throws Exception {
+        String uploadDocumentName = "uploadTestFile2.txt";
+        prepareUploadDocumentsTestError(uploadDocumentName);
+        int gridmeasuereId = 1;
+
+        Document documentToUpload = new Document();
+        documentToUpload.setDocumentName(uploadDocumentName);
+        documentToUpload.setData("TestContent");
+
+        tbc.uploadDocument(documentToUpload, "moduser", gridmeasuereId);
+    }
+
+    @Test
+    public void testUploadDocumentsNewFile() throws Exception {
+        String uploadDocumentName = "uploadTestFile2.txt";
+        prepareUploadDocumentsTest(uploadDocumentName);
+        int gridmeasuereId = 1;
+
+        Document documentToUpload = new Document();
+        documentToUpload.setDocumentName(uploadDocumentName);
+        documentToUpload.setData("TestContent");
+
+        Document document = tbc.uploadDocument(documentToUpload, "moduser", gridmeasuereId);
+
+        assertNull(document.getId());
+        assertEquals(document.getDocumentName(), uploadDocumentName);
+    }
+
+    @Test
+    public void testUploadDocumentsUpdateFile() throws Exception {
+        String uploadDocumentName = "uploadTestFile.txt";
+        prepareUploadDocumentsTest(uploadDocumentName);
+        int gridmeasuereId = 1;
+
+        Document documentToUpload = new Document();
+        documentToUpload.setDocumentName(uploadDocumentName);
+        documentToUpload.setData("TestContent");
+
+        Document document = tbc.uploadDocument(documentToUpload, "moduser", gridmeasuereId);
+
+        assertEquals(document.getId(), new Integer(2));
+        assertEquals(document.getDocumentName(), uploadDocumentName);
+
+    }
+
+    private InputStream getUploadTestFileInStream() {
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        return classLoader.getResourceAsStream("uploadTestFile.txt");
+    }
+
+    private void prepareDeleteDocumentsTestError(String error) throws Exception {
+        tbc.tblMeasureDocumentsDao = createTblMeasureDocumentsDao(error);
+    }
+
+    private void prepareUploadDocumentsTest(String uploadFileName) throws Exception {
+        // BackendConfig.configure("portalBaseUrlMock", null);
+        BackendConfig.getInstance().processAndSetWhiteListDocumenttypes("txt,pdf");
+        tbc.tblDocumentsDao = createTblDocumentsDao("noError", uploadFileName);
+    }
+
+    private void prepareUploadDocumentsTestError(String uploadFileName) throws Exception {
+        // BackendConfig.configure("portalBaseUrlMock", null);
+        tbc.tblDocumentsDao = createTblDocumentsDao("storeInTxError", uploadFileName);
+    }
+
+
+    @Test
+    public void testGetHistoricalStatusChangesById() throws Exception {
+        HTblGridMeasureDao dao = createHistoricalTblGridMeasureDao();
+        tbc.htblGridMeasureDao = dao;
+
+
+        List<HGridMeasure> hgridMeasure = tbc.getHistoricalStatusChangesById(1);
+        List<HTblGridMeasure> orgHgridMeasure = dao.getHistoricalGridMeasuresByIdInTx(1);
+
+        assertEquals(hgridMeasure.get(0).getId(), orgHgridMeasure.get(0).getId());
+        assertEquals(hgridMeasure.get(0).getTitle(), orgHgridMeasure.get(0).getTitle());
+        assertEquals(hgridMeasure.get(0).getDescription(), orgHgridMeasure.get(0).getDescription());
+
+    }
+
+    @Test
+    public void testGetGridMeasures() throws Exception {
+        TblGridMeasureDao dao = createTblGridMeasureDao();
+        tbc.tblGridMeasureDao = dao;
+
+        List<GridMeasure> retList = tbc.getGridMeasures(null);
+        List<TblGridMeasure> orgList = dao.getGridMeasuresInTx();
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+        assertEquals(orgList.get(1).getAffectedResource(), retList.get(1).getAffectedResource());
+        assertEquals(orgList.get(0).getTitle(), retList.get(0).getTitle());
+    }
+
+    @Test
+    public void testGetGridMeasuresWithFilter() throws Exception {
+        TblGridMeasureDao dao = createTblGridMeasureDao();
+        tbc.tblGridMeasureDao = dao;
+        FilterObject filterObject = new FilterObject();
+        filterObject.setCanceledStatusActive(true);
+        filterObject.setClosedStatusActive(true);
+
+        List<GridMeasure> retList = tbc.getGridMeasures(filterObject);
+        List<TblGridMeasure> orgList = dao.getGridMeasuresInTx();
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+        assertEquals(orgList.get(1).getAffectedResource(), retList.get(1).getAffectedResource());
+        assertEquals(orgList.get(0).getTitle(), retList.get(0).getTitle());
+    }
+
+    @Test
+    public void testGetGridMeasuresWithFilterWithoutClosed() throws Exception {
+        TblGridMeasureDao dao = createTblGridMeasureDao();
+        tbc.tblGridMeasureDao = dao;
+        FilterObject filterObject = new FilterObject();
+        filterObject.setCanceledStatusActive(true);
+        filterObject.setClosedStatusActive(false);
+
+        List<GridMeasure> retList = tbc.getGridMeasures(filterObject);
+        List<TblGridMeasure> orgList = dao.getGridMeasuresExcludingStatusInTx(PlgmProcessState.CLOSED.getStatusValue());
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+    }
+
+    @Test
+    public void testGetGridMeasuresWithFilterWithoutCanceled() throws Exception {
+        TblGridMeasureDao dao = createTblGridMeasureDao();
+        tbc.tblGridMeasureDao = dao;
+        FilterObject filterObject = new FilterObject();
+        filterObject.setCanceledStatusActive(false);
+        filterObject.setClosedStatusActive(true);
+
+        List<GridMeasure> retList = tbc.getGridMeasures(filterObject);
+        List<TblGridMeasure> orgList = dao.getGridMeasuresExcludingStatusInTx(PlgmProcessState.CANCELED.getStatusValue());
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+    }
+
+    @Test
+    public void testGetGridMeasuresWithFilterWithoutCanceledAndClosed() throws Exception {
+        TblGridMeasureDao dao = createTblGridMeasureDao();
+        tbc.tblGridMeasureDao = dao;
+        FilterObject filterObject = new FilterObject();
+        filterObject.setCanceledStatusActive(false);
+        filterObject.setClosedStatusActive(false);
+
+        List<GridMeasure> retList = tbc.getGridMeasures(filterObject);
+        List<TblGridMeasure> orgList = dao.getGridMeasuresExcludingStatusInTx(PlgmProcessState.CANCELED.getStatusValue(), PlgmProcessState.CLOSED.getStatusValue());
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+    }
+
+    @Test
+    public void testGetGridMeasureById() throws Exception {
+        TblGridMeasureDao dao = createTblGridMeasureDao();
+        TblSingleGridmeasureDao sgmDao = createTblSingleGridmeasureDao();
+        TblStepsDao stpdao = createTblStepsDao();
+        tbc.tblGridMeasureDao = dao;
+        tbc.tblSingleGridmeasureDao = sgmDao;
+        tbc.tblStepsDao = stpdao;
+
+        GridMeasure gridMeasure = tbc.getGridMeasureById(1);
+        TblGridMeasure gridMeasureCompare = dao.findByIdInTx(TblGridMeasure.class, 1);
+
+        assertEquals(gridMeasure.getId(), gridMeasureCompare.getId());
+        assertEquals(gridMeasure.getTitle(), gridMeasureCompare.getTitle());
+        assertEquals(gridMeasure.getDescription(), gridMeasureCompare.getDescription());
+
+    }
+
+    @Test
+    public void testStoreGridMeasure() throws Exception {
+        GridMeasureBackendController be = new GridMeasureBackendController();
+
+        TblGridMeasure mGm = new TblGridMeasure();
+        mGm.setId(1);
+        mGm.setIdDescriptive("20");
+        mGm.setTitle("Title");
+
+        TblGridMeasureDao daoMock = PowerMock.createNiceMock(TblGridMeasureDao.class);
+        expect(daoMock.storeInTx(mGm)).andReturn(mGm);
+    }
+
+
+    @Test
+    public void testGetAffectedResourcesDistinct() throws Exception {
+        TestableGridMeasureBackendController be = new TestableGridMeasureBackendController();
+
+        List<String> sList = new ArrayList<>(2);
+        sList.add("Bruno");
+        sList.add("Haferkamp");
+
+        TblGridMeasureDao daoMock = PowerMock.createNiceMock(TblGridMeasureDao.class);
+        expect(daoMock.getAffectedResourcesDistinct(PlgmProcessState.CANCELED.getStatusValue())).andReturn(sList);
+
+        replay(daoMock);
+
+        be.tblGridMeasureDao = daoMock;
+        assertEquals( be.getAffectedResourcesDistinct().size(), 2 );
+    }
+
+
+    @Test
+    public void testInvokeGetVersionInfo() {
+        PlannedGridMeasuresResource plgmResources = new PlannedGridMeasuresResource();
+        plgmResources.getVersionInfo();
+
+        assertEquals(plgmResources.invokeRunnable(null, BaseWebService.SecureType.NONE, modusr -> new GridMeasureBackendController().getVersionInfo("version")).getStatus(), HttpStatus.SC_OK);
+    }
+
+    @Test
+    public void testStoreGridMeasure_ok() throws ProcessException, HttpStatusException, Exception {
+        GridMeasure gm = new GridMeasure();
+        gm.setId(1);
+        gm.setStatusId(0);
+        PlgmProcessSubject sub = PlgmProcessSubject.fromGridMeasure(gm, "modUser");
+        Recoverable<PlgmProcessSubject> mockedRecov
+                = EasyMock.createMock(Recoverable.class);
+        mockedRecov.start(anyObject());
+        expectLastCall().andVoid().anyTimes();
+        replay(mockedRecov);
+
+        PlgmGrid mockedGrid = EasyMock.createNiceMock(PlgmGrid.class);
+        expect(mockedGrid.recover((PlgmProcessSubject)anyObject())).andReturn(mockedRecov).anyTimes();
+
+        replay(mockedGrid);
+        verify(mockedGrid);
+
+        TblLockDao mockedLockDao = createTblLockDao();
+        TblGridMeasureDao mockedGMDao = createTblGridMeasureDao();
+        TblSingleGridmeasureDao mockedSGmDao = createTblSingleGridmeasureDao();
+        TblStepsDao mockStpDao = createTblStepsDao();
+
+        //GridMeasureBackendController bc = new GridMeasureBackendController();
+        TestableGridMeasureBackendController tbc = new TestableGridMeasureBackendController();
+        tbc.tblLockDao = mockedLockDao;
+        tbc.tblGridMeasureDao = mockedGMDao;
+        tbc.tblSingleGridmeasureDao = mockedSGmDao;
+        tbc.tblStepsDao = mockStpDao;
+        ProcessGrid pg = Whitebox.getInternalState(GridMeasureBackendController.class, "processGrid");
+        Whitebox.setInternalState(GridMeasureBackendController.class, "processGrid", mockedGrid);
+        try {
+            tbc.storeGridMeasure(jwtString,"modUser", gm);
+        }
+        finally {
+            Whitebox.setInternalState(GridMeasureBackendController.class, pg);
+        }
+
+    }
+
+    @Test( expected = HttpStatusException.class )
+    public void testStoreGridMeasure_notAuthorized() throws ProcessException, HttpStatusException, Exception {
+        GridMeasure gm = new GridMeasure();
+        gm.setId(1);
+        gm.setStatusId(3);
+        PlgmProcessSubject sub = PlgmProcessSubject.fromGridMeasure(gm, "modUser");
+        Recoverable<PlgmProcessSubject> mockedRecov
+                = EasyMock.createMock(Recoverable.class);
+        mockedRecov.start(anyObject());
+        expectLastCall().andVoid().anyTimes();
+        replay(mockedRecov);
+
+        PlgmGrid mockedGrid = EasyMock.createNiceMock(PlgmGrid.class);
+        expect(mockedGrid.recover((PlgmProcessSubject)anyObject())).andReturn(mockedRecov).anyTimes();
+
+        replay(mockedGrid);
+        verify(mockedGrid);
+
+        TblLockDao mockedLockDao = createTblLockDao();
+        TblGridMeasureDao mockedGMDao = createTblGridMeasureDaoStatus();
+
+        TestableGridMeasureBackendController tbc = new TestableGridMeasureBackendController();
+        tbc.tblLockDao = mockedLockDao;
+        tbc.tblGridMeasureDao = mockedGMDao;
+        ProcessGrid pg = Whitebox.getInternalState(GridMeasureBackendController.class, "processGrid");
+        Whitebox.setInternalState(GridMeasureBackendController.class, "processGrid", mockedGrid);
+        try {
+            tbc.storeGridMeasure(jwtString,"modUser", gm);
+        }
+        finally {
+            Whitebox.setInternalState(GridMeasureBackendController.class, pg);
+        }
+    }
+
+    @Test( expected = HttpStatusException.class )
+    public void testStoreGridMeasure_Locked() throws ProcessException, HttpStatusException, Exception {
+        GridMeasure gm = new GridMeasure();
+        gm.setId(2);
+        gm.setStatusId(0);
+        PlgmProcessSubject sub = PlgmProcessSubject.fromGridMeasure(gm, "modUser");
+        Recoverable<PlgmProcessSubject> mockedRecov
+                = EasyMock.createMock(Recoverable.class);
+        mockedRecov.start(anyObject());
+        expectLastCall().andVoid().anyTimes();
+        replay(mockedRecov);
+
+        PlgmGrid mockedGrid = EasyMock.createNiceMock(PlgmGrid.class);
+        expect(mockedGrid.recover((PlgmProcessSubject)anyObject())).andReturn(mockedRecov).anyTimes();
+
+        replay(mockedGrid);
+        verify(mockedGrid);
+
+        TblLockDao mockedLockDao = createTblLockDao_locked();
+        TblGridMeasureDao mockedGMDao = createTblGridMeasureDaoStatus();
+
+        TestableGridMeasureBackendController tbc = new TestableGridMeasureBackendController();
+        tbc.tblLockDao = mockedLockDao;
+        tbc.tblGridMeasureDao = mockedGMDao;
+        ProcessGrid pg = Whitebox.getInternalState(GridMeasureBackendController.class, "processGrid");
+        Whitebox.setInternalState(GridMeasureBackendController.class, "processGrid", mockedGrid);
+        try {
+            tbc.storeGridMeasure(jwtString,"modUser", gm);
+        }
+        finally {
+            Whitebox.setInternalState(GridMeasureBackendController.class, pg);
+        }
+
+    }
+
+    @Test( expected = HttpStatusException.class )
+    public void testStoreGridMeasure_SimpleProcessException() throws ProcessException, HttpStatusException {
+        testStoreGridMeasureBase_exception(new ProcessException(""));
+    }
+
+    @Test( expected = HttpStatusException.class )
+    public void testStoreGridMeasure_NestedProcessException() throws ProcessException, HttpStatusException {
+        try {
+            testStoreGridMeasureBase_exception(new ProcessException("", new HttpStatusException(HttpStatus.SC_BAD_REQUEST)));
+        } catch ( HttpStatusException e ) {
+            assertEquals(HttpStatus.SC_BAD_REQUEST, e.getHttpStatus());
+            throw e;
+        }
+    }
+
+    protected void testStoreGridMeasureBase_exception(Exception exceptionToThrow) throws ProcessException, HttpStatusException {
+        TblLockDao mockedLockDao;
+
+        GridMeasure gm = new GridMeasure();
+        gm.setStatusId(1);
+        PlgmProcessSubject sub = PlgmProcessSubject.fromGridMeasure(gm, "modUser");
+        Recoverable<PlgmProcessSubject> mockedRecov
+                = EasyMock.createMock(Recoverable.class);
+        mockedRecov.start(anyObject());
+        expectLastCall().andThrow(exceptionToThrow).anyTimes();
+        replay(mockedRecov);
+        verify(mockedRecov);
+
+        PlgmGrid mockedGrid = EasyMock.createNiceMock(PlgmGrid.class);
+        expect(mockedGrid.recover((PlgmProcessSubject)anyObject())).andReturn(mockedRecov).anyTimes();
+
+        replay(mockedGrid);
+        verify(mockedGrid);
+
+        try {
+            mockedLockDao = createTblLockDao();
+        }
+        catch(Exception e){
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+
+        TblGridMeasureDao mockedGMDao = createTblGridMeasureDao();
+
+        //GridMeasureBackendController bc = new GridMeasureBackendController();
+        TestableGridMeasureBackendController tbc = new TestableGridMeasureBackendController();
+        tbc.tblLockDao = mockedLockDao;
+        tbc.tblGridMeasureDao = mockedGMDao;
+        ProcessGrid pg = Whitebox.getInternalState(GridMeasureBackendController.class, "processGrid");
+        Whitebox.setInternalState(GridMeasureBackendController.class, "processGrid", mockedGrid);
+        try {
+            tbc.storeGridMeasure(jwtString, "modUser", gm);
+        }
+        finally {
+            Whitebox.setInternalState(GridMeasureBackendController.class, "processGrid", pg);
+        }
+    }
+
+    @Test
+    public void testgGetCurrentReminders() throws Exception {
+        List remindersList = new ArrayList();
+
+        TblGridMeasureDao mockedGmDao = createTblGridMeasureDao();
+        TestableGridMeasureBackendController tbc = new TestableGridMeasureBackendController();
+        tbc.tblGridMeasureDao = mockedGmDao;
+
+        remindersList = tbc.getCurrentReminders(jwtString);
+
+        assertTrue(remindersList != null);
+        assertTrue(!remindersList.isEmpty());
+    }
+
+    @Test
+    public void testCheckLock_locked() throws Exception {
+        TblLockDao mockedDao = createTblLockDao();
+
+        tbc.tblLockDao = mockedDao;
+
+        Lock vmLock = tbc.checkLock(2,"GridMeasure");
+
+        assertTrue(vmLock != null);
+        assertEquals(vmLock.getId(), (Integer)1);
+        assertEquals(vmLock.getKey(), (Integer)2);
+        assertEquals(vmLock.getInfo(), "GridMeasure");
+    }
+
+    @Test( expected = HttpStatusException.class )
+    public void testCheckLock_notLocked() throws HttpStatusException {
+        TblLockDao mockedDao = createTblLockDao_null();
+        tbc.tblLockDao = mockedDao;
+        Lock vmLock = tbc.checkLock(3,"GridMeasureX");
+    }
+
+    @Test
+    public void testCreateLock_actualUser() throws Exception {
+        TblLockDao mockedDao = createTblLockDao();
+
+        tbc.tblLockDao = mockedDao;
+
+        Lock vmLock = tbc.createLock("Testuser",2,"GridMeasure");
+
+        assertTrue(vmLock != null);
+        assertEquals(vmLock.getId(), (Integer)1);
+        assertEquals(vmLock.getKey(), (Integer)2);
+        assertEquals(vmLock.getInfo(), "GridMeasure");
+    }
+
+    @Test( expected = HttpStatusException.class )
+    public void testCreateLock_locked() throws Exception {
+        TblLockDao mockedDao = createTblLockDao();
+        tbc.tblLockDao = mockedDao;
+        Lock vmLock = tbc.createLock("TestuserX",2,"GridMeasure");
+    }
+
+    @Test
+    public void testCreateLock_notLocked() throws Exception {
+        TblLockDao mockedDao = createTblLockDao();
+        tbc.tblLockDao = mockedDao;
+        Lock vmLock = tbc.createLock("Testuser",5,"GridMeasureX");
+
+        assertTrue(vmLock != null);
+        assertEquals(vmLock.getId(), (Integer)1);
+        assertEquals(vmLock.getKey(), (Integer)2);
+        assertEquals(vmLock.getInfo(), "GridMeasure");
+    }
+
+    @Test
+    public void testDeleteLock_notExisting() throws Exception {
+        TblLockDao mockedDao = createTblLockDao();
+        tbc.tblLockDao = mockedDao;
+        Integer key = tbc.deleteLock("Testuser",5,"GridMeasureX", false);
+        assertTrue( key == 5 );
+    }
+
+    @Test
+    public void testDeleteLock() throws Exception {
+        TblLockDao mockedDao = createTblLockDao();
+        tbc.tblLockDao = mockedDao;
+        Integer key = tbc.deleteLock("Testuser",2,"GridMeasure", false);
+
+        assertTrue(key == 2);
+    }
+
+    @Test
+    public void testGetMailAddressesFromGridmeasures(){
+
+        TestableGridMeasureBackendController be = new TestableGridMeasureBackendController();
+
+        List<String> mailAddressesList  = new ArrayList<>();
+        mailAddressesList.add("testuser1@test.com, testuser2@test.com");
+        mailAddressesList.add("testuser2@test.com, testuser3@test.com");
+        mailAddressesList.add("testuser3@test.com, testuser4@test.com");
+
+        MailAddressCache cacheMock = PowerMock.createNiceMock(MailAddressCache.class);
+        expect(cacheMock.getMailAddresses()).andReturn(mailAddressesList);
+
+        replay(cacheMock);
+
+        be.mailAddressCache = cacheMock;
+        List<String> retList = be.getMailAddressesFromGridmeasures();
+        assertTrue(retList != null);
+        //Todo: Warum funktioniert das nicht?
+        //assertEquals( retList.size(), 3 );
+
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/controller/MailAddressCacheTimerTaskTest.java b/src/test/java/org/eclipse/openk/core/controller/MailAddressCacheTimerTaskTest.java
new file mode 100644
index 0000000..84f93e4
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/controller/MailAddressCacheTimerTaskTest.java
@@ -0,0 +1,108 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import org.easymock.EasyMock;
+import org.eclipse.openk.db.dao.*;
+import org.eclipse.openk.db.model.RefBranch;
+import org.eclipse.openk.db.model.TblGridMeasure;
+import org.junit.Test;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertTrue;
+
+public class MailAddressCacheTimerTaskTest {
+
+    private class TestableMailAddressCacheTimerTask extends MailAddressCacheTimerTask {
+        protected TblGridMeasureDao tblGridMeasureDao;
+
+        @Override
+        protected AutoCloseEntityManager createEm() {
+            EntityTransaction et = EasyMock.createMock(EntityTransaction.class);
+            et.begin();
+            expectLastCall().andVoid().anyTimes();
+            et.commit();
+            expectLastCall().andVoid().anyTimes();
+            et.rollback();
+            expectLastCall().andVoid().anyTimes();
+
+            EasyMock.replay(et);
+            EasyMock.verify(et);
+
+            EntityManager em = EasyMock.createMock(EntityManager.class);
+            expect(em.getTransaction()).andReturn(et).anyTimes();
+
+            expect(em.isOpen()).andReturn(false).anyTimes();
+
+            em.close();
+            expectLastCall().andVoid().anyTimes();
+
+            EasyMock.replay(em);
+            EasyMock.verify(em);
+
+            return new AutoCloseEntityManager(em);
+        }
+
+        protected TblGridMeasureDao createTblGridMeasureDao(EntityManager em) {
+            if( tblGridMeasureDao != null ) {
+                return tblGridMeasureDao;
+            }
+            else {
+                return super.createTblGridMeasureDao(em);
+            }
+        }
+
+
+
+
+    }
+
+    private TblGridMeasureDao createTblGridMeasureDao() {
+
+        java.util.List<String> mList = new ArrayList<String>();
+
+        TblGridMeasure measure1 = new TblGridMeasure();
+        measure1.setId(1);
+        measure1.setEmailAddresses("Testmail1@test.de");
+        mList.add("Testmail1@test.de");
+
+        TblGridMeasure measure2 = new TblGridMeasure();
+        measure1.setId(2);
+        measure1.setEmailAddresses("Testmail2@test.de");
+        mList.add("Testmail2@test.de");
+
+
+        TblGridMeasureDao dao = EasyMock.createMock(TblGridMeasureDao.class);
+        expect( dao.getMailAddressesFromGridmeasures() ).andReturn(mList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    @Test
+    public void testRun() {
+
+        TblGridMeasureDao dao = createTblGridMeasureDao();
+        MailAddressCacheTimerTaskTest.TestableMailAddressCacheTimerTask ttt = new MailAddressCacheTimerTaskTest.TestableMailAddressCacheTimerTask();
+        ttt.tblGridMeasureDao = createTblGridMeasureDao();
+        ttt.run();
+        List<String> mailAddressList = MailAddressCache.getInstance().getMailAddresses();
+
+        assertTrue(mailAddressList.size() == 2);
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/controller/MasterDataBackendControllerTest.java b/src/test/java/org/eclipse/openk/core/controller/MasterDataBackendControllerTest.java
new file mode 100644
index 0000000..9f93cd6
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/controller/MasterDataBackendControllerTest.java
@@ -0,0 +1,501 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertTrue;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import org.apache.http.HttpStatus;
+import org.easymock.EasyMock;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.Branch;
+import org.eclipse.openk.api.BranchLevel;
+import org.eclipse.openk.api.CostCenter;
+import org.eclipse.openk.api.GmStatus;
+import org.eclipse.openk.api.UserDepartment;
+import org.eclipse.openk.api.UserSettings;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.common.mapper.generic.GenericApiToDbMapper;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.eclipse.openk.db.dao.AutoCloseEntityManager;
+import org.eclipse.openk.db.dao.RefBranchDao;
+import org.eclipse.openk.db.dao.RefBranchLevelDao;
+import org.eclipse.openk.db.dao.RefCostCenterDao;
+import org.eclipse.openk.db.dao.RefGmStatusDao;
+import org.eclipse.openk.db.dao.RefUserDepartmentDao;
+import org.eclipse.openk.db.dao.TblUserSettingsDao;
+import org.eclipse.openk.db.model.RefBranch;
+import org.eclipse.openk.db.model.RefBranchLevel;
+import org.eclipse.openk.db.model.RefCostCenter;
+import org.eclipse.openk.db.model.RefGmStatus;
+import org.eclipse.openk.db.model.RefUserDepartment;
+import org.eclipse.openk.db.model.TblUserSettings;
+import org.junit.Before;
+import org.junit.Test;
+import org.powermock.api.easymock.PowerMock;
+
+public class MasterDataBackendControllerTest {
+
+    public MasterDataBackendController beMockController;
+    private MasterDataBackendControllerTest.TestableMasterDataBackendController tbc;
+
+    @Before
+    public void prepareTests() throws Exception {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+
+        //mock email-configuration
+//        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+//        emailConfiguration.setPort("25");
+//        emailConfiguration.setSmtpHost("localhostTest");
+//        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+//        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+//        templatePaths.setAppliedEmailTemplate("appliedEmailPathToEmailTxt");
+        BackendConfig.getInstance().getBackendSettings().setEmailTemplateAddressesForNotification("appliedEmailTemplate,\n" +
+                "forapprovalEmailTemplate,\n" +
+                "approvedEmailTemplate,\n" +
+                "requestedEmailTemplate,\n" +
+                "releasedEmailTemplate,\n" +
+                "activeEmailTemplate,\n" +
+                "inworkEmailTemplate,\n" +
+                "workfinishedEmailTemplate,\n" +
+                "finishedEmailTemplate,\n" +
+                "closedEmailTemplate,\n" +
+                "cancelledEmailTemplate,\n" +
+                "rejectedEmailTemplate");
+
+        beMockController = PowerMock.createNiceMock(MasterDataBackendController.class);
+        tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+//        tbc.tblMeasureDocumentsDao = createTblMeasureDocumentsDao("noError");
+//        tbc.tblDocumentsDao = createTblDocumentsDao("noError", "fileNameExample.txt");
+    }
+
+    private class TestableMasterDataBackendController extends MasterDataBackendController {
+        public RefGmStatusDao statusDao;
+        public RefBranchDao branchDao;
+        public RefBranchLevelDao branchLevelDao;
+        public RefUserDepartmentDao userDepartmentDao;
+        public RefCostCenterDao costCenterDao;
+        public TblUserSettingsDao userSettingsDao;
+
+        @Override
+        protected AutoCloseEntityManager createEm() {
+            EntityTransaction et = EasyMock.createMock(EntityTransaction.class);
+            et.begin();
+            expectLastCall().andVoid().anyTimes();
+            et.commit();
+            expectLastCall().andVoid().anyTimes();
+            et.rollback();
+            expectLastCall().andVoid().anyTimes();
+
+            EasyMock.replay(et);
+            EasyMock.verify(et);
+
+            EntityManager em = EasyMock.createMock(EntityManager.class);
+            expect(em.getTransaction()).andReturn(et).anyTimes();
+
+            expect(em.isOpen()).andReturn(false).anyTimes();
+
+
+            em.close();
+            expectLastCall().andVoid().anyTimes();
+
+            EasyMock.replay(em);
+            EasyMock.verify(em);
+
+            return new AutoCloseEntityManager(em);
+        }
+
+        @Override
+        protected RefBranchDao createRefBranchDao( EntityManager em ) {
+            if( branchDao != null ) {
+                return branchDao;
+            }
+            else {
+                return super.createRefBranchDao(em);
+            }
+        }
+
+        @Override
+        protected RefBranchLevelDao createRefBranchLevelDao( EntityManager em ) {
+            if( branchLevelDao != null ) {
+                return branchLevelDao;
+            }
+            else {
+                return super.createRefBranchLevelDao(em);
+            }
+        }
+
+        @Override
+        protected RefGmStatusDao createRefGmStatusDao( EntityManager em ) {
+            if( statusDao != null ) {
+                return statusDao;
+            }
+            else {
+                return super.createRefGmStatusDao(em);
+            }
+        }
+
+        @Override
+        protected RefUserDepartmentDao createRefUserDepartmentDao( EntityManager em ) {
+            if( userDepartmentDao != null ) {
+                return userDepartmentDao;
+            }
+            else {
+                return super.createRefUserDepartmentDao(em);
+            }
+        }
+
+
+        @Override
+        protected RefCostCenterDao createRefCostCenterDao( EntityManager em ) {
+            if( costCenterDao != null ) {
+                return costCenterDao;
+            }
+            else {
+                return super.createRefCostCenterDao(em);
+            }
+        }
+
+        @Override
+        protected TblUserSettingsDao createRefUserSettingsDao( EntityManager em ) {
+            if( userSettingsDao != null ) {
+                return userSettingsDao;
+            }
+            else {
+                return super.createRefUserSettingsDao(em);
+            }
+        }
+
+
+        protected TblUserSettingsDao createRefUserSettingsDao_store( EntityManager em ) {
+            if( userSettingsDao != null ) {
+                return userSettingsDao;
+            }
+            else {
+                return super.createRefUserSettingsDao(em);
+            }
+        }
+    }
+
+    private RefBranchDao createRefBranchDao() {
+
+        java.util.List<RefBranch> mList = new ArrayList<RefBranch>();
+
+        RefBranch refBranch1 = new RefBranch();
+        refBranch1.setId(1);
+        refBranch1.setDescription("Description1");
+        refBranch1.setName("Testname1");
+        mList.add(refBranch1);
+
+        RefBranch refBranch2 = new RefBranch();
+        refBranch2.setId(2);
+        refBranch2.setDescription("Description2");
+        refBranch2.setName("Testname2");
+        mList.add(refBranch2);
+
+        RefBranch refBranch3 = new RefBranch();
+        refBranch3.setId(3);
+        refBranch3.setDescription("Description3");
+        refBranch3.setName("Testname3");
+        mList.add(refBranch3);
+
+        RefBranchDao dao = EasyMock.createMock(RefBranchDao.class);
+        expect( dao.getBranchesInTx() ).andReturn(mList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private RefBranchLevelDao createRefBranchLevelDao() {
+
+        java.util.List<RefBranchLevel> mList = new ArrayList<RefBranchLevel>();
+
+        RefBranchLevel refBranchLevel1 = new RefBranchLevel();
+        refBranchLevel1.setId(1);
+        refBranchLevel1.setDescription("Description1");
+        refBranchLevel1.setName("Testname1");
+        mList.add(refBranchLevel1);
+
+        RefBranchLevel refBranchLevel2 = new RefBranchLevel();
+        refBranchLevel2.setId(2);
+        refBranchLevel2.setDescription("Description2");
+        refBranchLevel2.setName("Testname2");
+        mList.add(refBranchLevel2);
+
+        RefBranchLevel refBranchLevel3 = new RefBranchLevel();
+        refBranchLevel3.setId(3);
+        refBranchLevel3.setDescription("Description3");
+        refBranchLevel3.setName("Testname3");
+        mList.add(refBranchLevel3);
+
+        RefBranchLevelDao dao = EasyMock.createMock(RefBranchLevelDao.class);
+        expect( dao.getBranchLevelsInTx() ).andReturn(mList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private RefGmStatusDao createRefGmStatusDao() {
+
+        java.util.List<RefGmStatus> mList = new ArrayList<RefGmStatus>();
+
+        RefGmStatus refGmStatus1 = new RefGmStatus();
+        refGmStatus1.setId(1);
+        refGmStatus1.setName("Testname1");
+        mList.add(refGmStatus1);
+
+        RefGmStatus refGmStatus2 = new RefGmStatus();
+        refGmStatus2.setId(2);
+        refGmStatus2.setName("Testname2");
+        mList.add(refGmStatus2);
+        mList.add(refGmStatus2);
+
+        RefGmStatus refGmStatus3 = new RefGmStatus();
+        refGmStatus3.setId(3);
+        refGmStatus3.setName("Testname3");
+        mList.add(refGmStatus3);
+
+        RefGmStatusDao dao = EasyMock.createMock(RefGmStatusDao.class);
+        expect( dao.getGmStatusInTx() ).andReturn(mList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private RefCostCenterDao createRefCostCenterDao() {
+
+        java.util.List<RefCostCenter> mList = new ArrayList<RefCostCenter>();
+
+        RefCostCenter refCostCenter1 = new RefCostCenter();
+        refCostCenter1.setId(1);
+        refCostCenter1.setName("Testname1");
+        mList.add(refCostCenter1);
+
+        RefCostCenter refCostCenter2 = new RefCostCenter();
+        refCostCenter2.setId(2);
+        refCostCenter2.setName("Testname2");
+        mList.add(refCostCenter2);
+
+        RefCostCenter refCostCenter3 = new RefCostCenter();
+        refCostCenter3.setId(3);
+        refCostCenter3.setName("Testname3");
+        mList.add(refCostCenter3);
+
+        RefCostCenterDao dao = EasyMock.createMock(RefCostCenterDao.class);
+        expect( dao.getCostCentersInTx() ).andReturn(mList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private RefUserDepartmentDao createRefUserDepartmentDao() {
+
+        java.util.List<RefUserDepartment> mList = new ArrayList<RefUserDepartment>();
+
+        RefUserDepartment refUserDepartment1 = new RefUserDepartment();
+        refUserDepartment1.setId(1);
+        refUserDepartment1.setName("Testname1");
+        mList.add(refUserDepartment1);
+
+        RefUserDepartment refUserDepartment2 = new RefUserDepartment();
+        refUserDepartment2.setId(2);
+        refUserDepartment2.setName("Testname2");
+        mList.add(refUserDepartment2);
+
+        RefUserDepartment refUserDepartment3 = new RefUserDepartment();
+        refUserDepartment3.setId(3);
+        refUserDepartment3.setName("Testname3");
+        mList.add(refUserDepartment3);
+
+        RefUserDepartmentDao dao = EasyMock.createMock(RefUserDepartmentDao.class);
+        expect( dao.getUserDepartmentsInTx() ).andReturn(mList).anyTimes();
+        replay( dao );
+        verify( dao );
+        return dao;
+    }
+
+    private TblUserSettingsDao createTblUserSettingsDao(String error) throws HttpStatusException{
+
+        TblUserSettings tblUserSettings = new TblUserSettings();
+        tblUserSettings.setId(1);
+        tblUserSettings.setUsername("Testname1");
+        tblUserSettings.setSettingType("zzz");
+        tblUserSettings.setValue("abc");
+
+        TblUserSettingsDao dao = EasyMock.createMock(TblUserSettingsDao.class);
+
+        switch (error) {
+            case "HttpStatusException":
+                expect(dao.getUserSettingsBySettingType(anyString(),anyString())).andThrow(new HttpStatusException(HttpStatus.SC_NOT_FOUND)).anyTimes();
+                break;
+            default:
+                expect( dao.getUserSettingsBySettingType("Testname1", "zzz") ).andReturn(tblUserSettings).anyTimes();
+        }
+        replay( dao );
+        verify( dao );
+
+        return dao;
+    }
+
+    private TblUserSettingsDao createTblUserSettingsDao_store(AutoCloseEntityManager em) throws HttpStatusException{
+
+        TblUserSettings tblUserSettings = new TblUserSettings();
+        tblUserSettings.setId(null);
+        tblUserSettings.setUsername("Testname2");
+        tblUserSettings.setSettingType("aaa");
+        tblUserSettings.setValue("xyz");
+
+        TblUserSettingsDao dao = EasyMock.createMock(TblUserSettingsDao.class);
+
+        expect( dao.getEM()).andReturn(em).anyTimes();
+        expect( dao.getUserSettingsBySettingType(anyString(), anyString()) ).andReturn(tblUserSettings).anyTimes();
+        expect( dao.createUserSettingsInDb(anyObject(), anyObject()) ).andReturn(tblUserSettings).anyTimes();
+        replay( dao );
+        verify( dao );
+
+        return dao;
+    }
+
+    @Test
+    public void testGetEmailAddressesFromTemplates() throws Exception {
+        MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+        List<String>recipientsList = tbc.getEmailAddressesFromTemplates();
+        assertTrue(recipientsList != null);
+    }
+
+    @Test
+    public void testGetBranches() throws Exception {
+        RefBranchDao dao = createRefBranchDao();
+        MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+        tbc.branchDao = dao;
+
+        List<Branch> retList = tbc.getBranches();
+        List<RefBranch> orgList = dao.getBranchesInTx();
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+        assertEquals(orgList.get(1).getDescription(), retList.get(1).getDescription());
+        assertEquals(orgList.get(0).getName(), retList.get(0).getName());
+    }
+
+    @Test
+    public void testGetBranchLevels() throws Exception {
+        RefBranchLevelDao dao = createRefBranchLevelDao(); //MockDao
+        MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+        tbc.branchLevelDao = dao; //MockDao
+
+        List<BranchLevel> retList = tbc.getBranchLevels(); //Aufruf Methode der Testklasse
+        List<RefBranchLevel> orgList = dao.getBranchLevelsInTx(); //Mock Models
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+        assertEquals(orgList.get(1).getDescription(), retList.get(1).getDescription());
+        assertEquals(orgList.get(0).getName(), retList.get(0).getName());
+    }
+
+    @Test
+    public void testGetGmStatus() throws Exception {
+        RefGmStatusDao dao = createRefGmStatusDao();
+        MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+        tbc.statusDao = dao;
+
+        List<GmStatus> retList = tbc.getGmStatus();
+        List<RefGmStatus> orgList = dao.getGmStatusInTx();
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+        assertEquals(orgList.get(1).getName(), retList.get(1).getName());
+    }
+
+    @Test
+    public void testGetCostCenters() throws Exception {
+        RefCostCenterDao dao = createRefCostCenterDao();
+        MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+        tbc.costCenterDao = dao;
+
+        List<CostCenter> retList = tbc.getCostCenters();
+        List<RefCostCenter> orgList = dao.getCostCentersInTx();
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+        assertEquals(orgList.get(1).getName(), retList.get(1).getName());
+    }
+
+    @Test
+    public void testGetUserDepartments() throws Exception {
+        RefUserDepartmentDao dao = createRefUserDepartmentDao();
+        MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+        tbc.userDepartmentDao = dao;
+
+        List<UserDepartment> retList = tbc.getUserDepartments();
+        List<RefUserDepartment> orgList = dao.getUserDepartmentsInTx();
+        assertEquals(orgList.size(), retList.size());
+        assertEquals(orgList.get(2).getId(), retList.get(2).getId());
+        assertEquals(orgList.get(1).getName(), retList.get(1).getName());
+    }
+
+    @Test
+    public void testGetUserSettings() throws Exception {
+        TblUserSettingsDao dao = createTblUserSettingsDao("");
+        MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+        tbc.userSettingsDao = dao;
+
+        UserSettings userSettings = tbc.getUserSettings("Testname1", "zzz");
+        TblUserSettings tblUserSettings = dao.getUserSettingsBySettingType("Testname1", "zzz");
+
+        assertEquals(userSettings.getUsername(), tblUserSettings.getUsername());
+        assertEquals(userSettings.getSettingType(), tblUserSettings.getSettingType());
+        assertEquals(userSettings.getValue(), tblUserSettings.getValue());
+    }
+
+    @Test( expected = HttpStatusException.class )
+    public void testGetUserSettings_HttpStatusException() throws HttpStatusException {
+        TblUserSettingsDao dao = createTblUserSettingsDao("HttpStatusException");
+        MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+        tbc.userSettingsDao = dao;
+
+        UserSettings userSettings = tbc.getUserSettings("Testname1", "zzz");
+    }
+
+
+    @Test
+    public void testStoreUserSettings() throws HttpStatusException {
+
+        TblUserSettings tblUserSettings = new TblUserSettings();
+        tblUserSettings.setId(null);
+        tblUserSettings.setUsername("Testname2");
+        tblUserSettings.setSettingType("aaa");
+        tblUserSettings.setValue("xyz");
+
+        MasterDataBackendControllerTest.TestableMasterDataBackendController tbc = new MasterDataBackendControllerTest.TestableMasterDataBackendController();
+        AutoCloseEntityManager emMock = tbc.createEm();
+        TblUserSettingsDao dao = createTblUserSettingsDao_store(emMock);
+
+        tbc.userSettingsDao = dao;
+
+        GenericApiToDbMapper mapper = new GenericApiToDbMapper();
+        UserSettings vmUs = mapper.mapToViewModel(UserSettings.class, tblUserSettings);
+
+        UserSettings userSettings = tbc.storeUserSettings("Testname2", vmUs);
+
+        assertEquals(userSettings.getUsername(), tblUserSettings.getUsername());
+        assertEquals(userSettings.getSettingType(), tblUserSettings.getSettingType());
+        assertEquals(userSettings.getValue(), tblUserSettings.getValue());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/controller/PgmEmailTest.java b/src/test/java/org/eclipse/openk/core/controller/PgmEmailTest.java
new file mode 100644
index 0000000..48ff03c
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/controller/PgmEmailTest.java
@@ -0,0 +1,120 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.core.controller;
+
+import org.easymock.EasyMock;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.core.bpmn.gridmeasure.PlgmProcessSubject;
+import org.eclipse.openk.core.communication.RestServiceWrapper;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import javax.mail.MessagingException;
+
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.replay;
+import static org.junit.Assert.assertTrue;
+
+public class PgmEmailTest {
+
+    private static class PgmEmailTestable extends PgmEmail {
+        public RestServiceWrapper restServiceWrapper;
+
+        public PgmEmailTestable( PlgmProcessSubject model ) throws MessagingException {
+            super( model, "", false);
+        }
+
+        @Override
+        protected void init() {}
+
+    }
+
+    private String getModulConfigCorrectly() {
+        return "[\n" +
+                "  {\n" +
+                "    \"name\": \"Betriebstagebuch\",\n" +
+                "    \"cols\": 1,\n" +
+                "    \"rows\": 1,\n" +
+                "    \"color\": \"#ffffff\",\n" +
+                "    \"link\": \"http://localhost:8088/elogbookFE\",\n" +
+                "    \"pictureLink\": \"https://www.openkonsequenz.de/medien/cache/main_image/m_logbuch_2443636.jpg\",\n" +
+                "    \"requiredRole\": \"elogbook-access\"\n" +
+                "\n" +
+                "  },\n" +
+                "  {\n" +
+                "    \"name\": \"Bereitschaftsplanung\",\n" +
+                "    \"cols\": 1,\n" +
+                "    \"rows\": 1,\n" +
+                "    \"color\": \"#ffffff\",\n" +
+                "    \"link\": \"https://www.openkonsequenz.de/anwender/11-geplante-projekte/94-bereitschaftsplan\",\n" +
+                "    \"pictureLink\": \"https://www.openkonsequenz.de/medien/cache/main_image/l_bereitschaftsplan_57882047.jpg\",\n" +
+                "    \"requiredRole\": \"planning-access\"\n" +
+                "  },\n" +
+                "  {\n" +
+                "    \"name\": \"Einspeisemanagement\",\n" +
+                "    \"cols\": 1,\n" +
+                "    \"rows\": 1,\n" +
+                "    \"color\": \"#ffffff\",\n" +
+                "    \"link\": \"https://www.openkonsequenz.de/anwender/11-geplante-projekte/20-eisman\",\n" +
+                "    \"pictureLink\": \"https://www.openkonsequenz.de/medien/cache/main_image/l_ok_module6.jpg\",\n" +
+                "    \"requiredRole\": \"feedin-management-access\"\n" +
+                "  },\n" +
+                "  {\n" +
+                "    \"name\": \"Geplante Maßnahmen\",\n" +
+                "    \"cols\": 1,\n" +
+                "    \"rows\": 1,\n" +
+                "    \"color\": \"#ffffff\",\n" +
+                "    \"link\": \"https://www.openkonsequenz.de/anwender/11-geplante-projekte/64-geplante-netzmassnahme\",\n" +
+                "    \"pictureLink\": \"https://www.openkonsequenz.de//components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=/medien/cache/main_image/l_ok_module5.jpg\",\n" +
+                "    \"requiredRole\": \"planned-policies-access\"\n" +
+                "  }\n" +
+                "]";
+    }
+
+    private String getModulConfigEmtpy() {
+        return "[{}]";
+    }
+
+    private RestServiceWrapper getRestWrapperMock(String moduleConfig) throws HttpStatusException {
+        RestServiceWrapper wrapper = EasyMock.createMock(RestServiceWrapper.class);
+        EasyMock.expect(wrapper.performGetRequest(anyObject(), anyObject())).andReturn(moduleConfig).anyTimes();
+        //verify(wrapper);
+        replay(wrapper);
+
+        return wrapper;
+    }
+
+    @Ignore
+    @Test
+    public void testGetDirectMeasureLink() throws Exception {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emaily = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emaily.setPort("1000");
+        emaily.setSender("Sendros@sandbank.se");
+        emaily.setSmtpHost("Horst");
+
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        BackendConfig.getInstance().setEmailConfiguration(emaily);
+        PlgmProcessSubject model = PlgmProcessSubject.fromGridMeasure(null, "_fd");
+        model.setJwt("Bear Haferkamp");
+        PgmEmailTestable pgmEmail = new PgmEmailTestable(model);
+        pgmEmail.restServiceWrapper = getRestWrapperMock(getModulConfigCorrectly());
+        String url = Whitebox.invokeMethod(pgmEmail, "getDirectMeasureLink", (Integer)666);
+        assertTrue( url.toUpperCase().contains("HTTP") && url.contains("666") );
+
+        pgmEmail.restServiceWrapper = getRestWrapperMock(getModulConfigEmtpy());
+        String urlEmpty = Whitebox.invokeMethod(pgmEmail, "getDirectMeasureLink", (Integer)666);
+        assertTrue( urlEmpty.isEmpty() );
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/controller/ResponseBuilderWrapperTest.java b/src/test/java/org/eclipse/openk/core/controller/ResponseBuilderWrapperTest.java
new file mode 100644
index 0000000..5d03a80
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/controller/ResponseBuilderWrapperTest.java
@@ -0,0 +1,39 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.controller;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.ws.rs.core.Response;
+import org.apache.http.HttpStatus;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Test;
+
+public class ResponseBuilderWrapperTest {
+    @Test
+    public void testGetResponseBuilder() throws HttpStatusException {
+        String json = "{ 'ret' : 'OK' }";
+        Response.ResponseBuilder rb = ResponseBuilderWrapper.INSTANCE.getResponseBuilder( json );
+        Response resp = rb.build();
+        assertEquals(HttpStatus.SC_OK , resp.getStatus());
+    }
+
+    @Test
+    public void testBuildOkResponse() throws HttpStatusException {
+        String json = "{ 'test' : 'Value' }";
+        Response resp = ResponseBuilderWrapper.INSTANCE.buildOKResponse( json );
+        assertEquals(  HttpStatus.SC_OK, resp.getStatus());
+
+        resp = ResponseBuilderWrapper.INSTANCE.buildOKResponse(json, "ssess");
+        assertEquals( HttpStatus.SC_OK, resp.getStatus());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/controller/TokenManagerTest.java b/src/test/java/org/eclipse/openk/core/controller/TokenManagerTest.java
new file mode 100644
index 0000000..177b027
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/controller/TokenManagerTest.java
@@ -0,0 +1,113 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.controller;
+
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.auth2.model.JwtPayload;
+import org.eclipse.openk.auth2.util.JwtHelper;
+import org.eclipse.openk.common.Globals;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class TokenManagerTest {
+	private TokenManager tokenManager;
+	private String payloadNormalUser = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJodVl0eVByUEVLQ1phY3FfMW5sOGZscENETnFHdmZEZHctYUxGQXNoWHZVIn0.eyJqdGkiOiIwZGUyNTMyYi1mNTBkLTQxZTUtODQwYy1iNzZkOTYyZGM3MDYiLCJleHAiOjE1MjE2NDA0MTIsIm5iZiI6MCwiaWF0IjoxNTIxNjQwMTEyLCJpc3MiOiJodHRwOi8vZW50amF2YTAwMjo4MDgwL2F1dGgvcmVhbG1zL2Vsb2dib29rIiwiYXVkIjoiZWxvZ2Jvb2stYmFja2VuZCIsInN1YiI6ImMyZTlkN2FlLTJiZmEtNDU3OC1iMDllLWY1ZGM1ZjA5YTg3OSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVsb2dib29rLWJhY2tlbmQiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiJkOTE1MjY2MS03NTJlLTRiNmMtOWRiNi0wYjFmYzY3YTc4ZTciLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImVsb2dib29rLWFjY2VzcyIsImVsb2dib29rLW5vcm1hbHVzZXIiLCJ1bWFfYXV0aG9yaXphdGlvbiIsInBsYW5uZWQtcG9saWNpZXMtbm9ybWFsdXNlciJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInJvbGVzIjoiW3BsYW5uZWQtcG9saWNpZXMtbm9ybWFsdXNlciwgb2ZmbGluZV9hY2Nlc3MsIHVtYV9hdXRob3JpemF0aW9uLCBlbG9nYm9vay1hY2Nlc3MsIGVsb2dib29rLW5vcm1hbHVzZXJdIiwibmFtZSI6Ik90dG8gTm9ybWFsdmVyYnJhdWNoZXIiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJvdHRvIiwiZ2l2ZW5fbmFtZSI6Ik90dG8iLCJmYW1pbHlfbmFtZSI6Ik5vcm1hbHZlcmJyYXVjaGVyIn0.F-CcNatXaE0W4PhBNaSGUwddE_S05HqL6QuJLOWQo_n0_LdWGRw8iyF6RIbK8y06kH3gb79c6t1U0njWqE68pL9FQfP2t-_en-XlCwKzBdDXtq8e8xHyZ00P5zlE80du0A74qzh2g0HrE9fCgEaawk2_M6JxNFrToiwl6PGRS9RNRD_xgKVXn0XqG-I_qRKA-GdBTcLPjPD9bn4fAdlf3HWdVPUNclRI2ttUykFmpmRTAHKwI3cZOBrIMn4dasMn9k1xPP5IAGtCcgs6TF0YlnWvZgIhdT_5O4rmMtzZXjeuYsjpNnqz0LGA0GT6up90PZrTJF8rHtWU50wVgJSH9g";
+	private String payloadSuperUser = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJodVl0eVByUEVLQ1phY3FfMW5sOGZscENETnFHdmZEZHctYUxGQXNoWHZVIn0.eyJqdGkiOiI2ZTU0YzFkNS02ZDk4LTRiYzUtOTk5NC0zNjdmZDM1YTgyODYiLCJleHAiOjE1MjE3MDk4NDgsIm5iZiI6MCwiaWF0IjoxNTIxNzA5NTQ4LCJpc3MiOiJodHRwOi8vZW50amF2YTAwMjo4MDgwL2F1dGgvcmVhbG1zL2Vsb2dib29rIiwiYXVkIjoiZWxvZ2Jvb2stYmFja2VuZCIsInN1YiI6IjM1OWVmOWM5LTc3ZGYtNGEzZC1hOWM5LWY5NmQ4MzdkMmQ1NyIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVsb2dib29rLWJhY2tlbmQiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiI3NjdjMDI3Mi0wZjE4LTRkZTMtYmIxYS0yZTMyNDAyYjA1NDEiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImVsb2dib29rLWFjY2VzcyIsImVsb2dib29rLXN1cGVydXNlciIsImVsb2dib29rLW5vcm1hbHVzZXIiLCJ1bWFfYXV0aG9yaXphdGlvbiIsImZlZWRpbi1tYW5hZ2VtZW50LWFjY2VzcyIsInBsYW5uZWQtcG9saWNpZXMtYWNjZXNzIiwicGxhbm5pbmctYWNjZXNzIiwicGxhbm5lZC1wb2xpY2llcy1zdXBlcnVzZXIiLCJwbGFubmVkLXBvbGljaWVzLW5vcm1hbHVzZXIiXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZWFsbS1tYW5hZ2VtZW50Ijp7InJvbGVzIjpbInZpZXctdXNlcnMiLCJxdWVyeS1ncm91cHMiLCJxdWVyeS11c2VycyJdfX0sInJvbGVzIjoiW2Vsb2dib29rLXN1cGVydXNlciwgZWxvZ2Jvb2stbm9ybWFsdXNlciwgdW1hX2F1dGhvcml6YXRpb24sIGZlZWRpbi1tYW5hZ2VtZW50LWFjY2VzcywgcGxhbm5lZC1wb2xpY2llcy1hY2Nlc3MsIHBsYW5uaW5nLWFjY2VzcywgcGxhbm5lZC1wb2xpY2llcy1ub3JtYWx1c2VyLCBlbG9nYm9vay1hY2Nlc3MsIGVsb2dib29rLW5vcm1hbHVzZXIsIHBsYW5uZWQtcG9saWNpZXMtc3VwZXJ1c2VyLCBwbGFubmVkLXBvbGljaWVzLW5vcm1hbHVzZXJdIiwibmFtZSI6IkFkbWluaXN0cmF0b3IiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhZG1pbiIsImdpdmVuX25hbWUiOiJBZG1pbmlzdHJhdG9yIiwiZmFtaWx5X25hbWUiOiIiLCJlbWFpbCI6IiJ9.XYeiSm_j79R_Z9BIZasQGY_7rLHjDQATZH92c0QJA-fLQ9GJJBS6qMh8PW29C-25vREdnV4LbdMQd0Ohoqyw86CktSNnqVnZMx-c6_6Y1H_txkKLz4P0T4OmoGSus5orxWAN7wwzBjEoNImdoBaCKD10cKXgpS2wD3kd9vjMhW0vaYD9DStzHJ-EOkQCAEesAJuRg8f1LyQ7s9rm4IUU5c9eOasfZUj2gSpKjcglxIiAgDFhC905B-KBC2KXEmDK-Z2hB9FEWsfzRN_HzXn2lR9BTI4ToEdIf-WcnkjiQ-nJ0SNFnr-GIK2eIoqphD7kkPnNxV4OYZAoT9MCPX07JA";
+
+	// only elogbook user - jasper - he has not pgm access rights
+	private String payloadRamboUser = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJodVl0eVByUEVLQ1phY3FfMW5sOGZscENETnFHdmZEZHctYUxGQXNoWHZVIn0.eyJqdGkiOiIwMWVjYjdiOC01MDQ0LTQwZTEtYmI2Ny00ZmZhMjQwYWNkYzkiLCJleHAiOjE1MjE3MTIyNDAsIm5iZiI6MCwiaWF0IjoxNTIxNzExOTQwLCJpc3MiOiJodHRwOi8vZW50amF2YTAwMjo4MDgwL2F1dGgvcmVhbG1zL2Vsb2dib29rIiwiYXVkIjoiZWxvZ2Jvb2stYmFja2VuZCIsInN1YiI6Ijc5YzQzNWFkLWQ3ZGQtNDRjMC1iMWQ1LTY1OWIwYmMyYzc3ZiIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVsb2dib29rLWJhY2tlbmQiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiJmYmU1NzFlOS00ODQ1LTQ0NjYtYWU4MC0yN2JiYmFhYTBlMzIiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImVsb2dib29rLWFjY2VzcyIsImVsb2dib29rLW5vcm1hbHVzZXIiXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJyb2xlcyI6IltlbG9nYm9vay1hY2Nlc3MsIGVsb2dib29rLW5vcm1hbHVzZXJdIiwibmFtZSI6Ikphc3BlciBNYWdpY2lhbiIsInByZWZlcnJlZF91c2VybmFtZSI6Imphc3BlciIsImdpdmVuX25hbWUiOiJKYXNwZXIiLCJmYW1pbHlfbmFtZSI6Ik1hZ2ljaWFuIn0.s8M-dVtFWFHEkK5-mN6eUeQbPhqFdEI-Y5ovxUejBYi25-rzR4UGKrxdrOyDXBbAAHsZ9tAtDveh-lBh4xny3b82bdgMiYft3Wpsa_4EhweqM39dz1oROHVlUqFVTH2nmp-FXyvMpdVKj81sOgvGHD9YobgNuJiDWX6ohxS5tR3NU9CbDpUz81jd0gsYH0ZelKQjEinmmCnx2DdYKJPawSUMgTIhR_m_ea60ujwTN2dPTxU09HwtPlLTRSHf9I2uxsdxJrwaIIL-HNVsMBiAhXcRanEikMkW9YBBwgjWny87A1iwg8Y-tH06iFwc5qAYxAnX8eafaT0yOiWELQPXdg";
+
+	JwtPayload jwtPayloadNormalUser = JwtHelper.getJwtPayload(payloadNormalUser);
+	JwtPayload jwtPayloadSuperUser = JwtHelper.getJwtPayload(payloadSuperUser);
+	JwtPayload jwtPayloadRamboUser = JwtHelper.getJwtPayload(payloadRamboUser);
+
+    public TokenManagerTest() throws HttpStatusException {
+    }
+
+    @Before
+	public void init() {
+		BackendConfigTestHelper.initDefaultBackendConfig();
+		this.tokenManager = TokenManager.getInstance();
+	}
+
+
+	@Test(expected = HttpStatusException.class)
+	public void testLogout() throws HttpStatusException {
+		tokenManager.logout(payloadNormalUser);
+	}
+
+	@Test(expected = HttpStatusException.class)
+	public void testCheckAuth() throws HttpStatusException {
+		tokenManager.checkAut(payloadNormalUser);
+	}
+
+
+	@Test
+	public void testNormaluser() {
+		assertTrue(jwtPayloadNormalUser.getRealmAccess().isInRole(Globals.KEYCLOAK_ROLE_NORMALUSER));
+	}
+
+	@Test
+	public void testSuperuser() {
+		assertTrue(jwtPayloadSuperUser.getRealmAccess().isInRole(Globals.KEYCLOAK_ROLE_SUPERUSER));
+	}
+
+	@Test
+	public void testRambouser() {
+		assertFalse(jwtPayloadRamboUser.getRealmAccess().isInRole(Globals.KEYCLOAK_ROLE_NORMALUSER));
+		assertFalse(jwtPayloadRamboUser.getRealmAccess().isInRole(Globals.KEYCLOAK_ROLE_SUPERUSER));
+	}
+
+	@Test(expected = HttpStatusException.class)
+	public void testPayloadisEmpty() throws HttpStatusException {
+		tokenManager.checkAutLevel("", BaseWebService.SecureType.NORMAL);
+	}
+
+	// SecureType = NONE
+	@Test
+	public void testSecureTypeNone() throws HttpStatusException {
+		tokenManager.checkAutLevel(payloadNormalUser, BaseWebService.SecureType.NONE);
+	}
+
+	// SecureType = NORMAL
+	@Test(expected = HttpStatusException.class)
+	public void testSecureTypeNormalAndRamboUser() throws HttpStatusException {
+		tokenManager.checkAutLevel(payloadRamboUser, BaseWebService.SecureType.NORMAL);
+	}
+
+	@Test
+	public void testSecureTypeNormalAndNormalUser() throws HttpStatusException {
+		tokenManager.checkAutLevel(payloadNormalUser, BaseWebService.SecureType.NORMAL);
+	}
+
+	@Test
+	public void testSecureTypeNormalAndSuperUser() throws HttpStatusException {
+		tokenManager.checkAutLevel(payloadSuperUser, BaseWebService.SecureType.NORMAL);
+	}
+
+	// SecureType = HIGH
+	@Test(expected = HttpStatusException.class)
+	public void testSecureTypeHighAndNormalUSer() throws HttpStatusException {
+		tokenManager.checkAutLevel(payloadNormalUser, BaseWebService.SecureType.HIGH);
+	}
+
+	@Test
+	public void testSecureTypeHighAndSuperUSer() throws HttpStatusException {
+		tokenManager.checkAutLevel(payloadSuperUser, BaseWebService.SecureType.HIGH);
+	}
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/exceptions/HttpStatusExceptionTest.java b/src/test/java/org/eclipse/openk/core/exceptions/HttpStatusExceptionTest.java
new file mode 100644
index 0000000..541ef71
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/exceptions/HttpStatusExceptionTest.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.exceptions;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class HttpStatusExceptionTest {
+    private final int httpStatus = 404;
+    private final String httpText = "status";
+    private final String httpPayload = "payload";
+
+    @Test
+    public void testHttpStatusException() {
+
+        HttpStatusException hse = new HttpStatusException(httpStatus, httpText, new Throwable("testmessage"));
+
+        assertEquals(new HttpStatusException(httpStatus).getHttpStatus(), httpStatus);
+        assertEquals(new HttpStatusException(httpStatus, httpText).getHttpStatus(), httpStatus);
+        assertEquals(new HttpStatusException(httpStatus, httpText, httpPayload).getPayload(), httpPayload);
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/core/exceptions/PgmExceptionMapperTest.java b/src/test/java/org/eclipse/openk/core/exceptions/PgmExceptionMapperTest.java
new file mode 100644
index 0000000..dfbad42
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/exceptions/PgmExceptionMapperTest.java
@@ -0,0 +1,56 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.exceptions;
+
+
+import static junit.framework.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+import org.apache.http.HttpStatus;
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+import org.eclipse.openk.core.viewmodel.ErrorReturn;
+import org.junit.Test;
+
+public class PgmExceptionMapperTest extends ResourceLoaderBase {
+    @Test
+    public void testToJson() {
+        String json = PgmExceptionMapper.toJson(new HttpStatusException(HttpStatus.SC_NOT_FOUND, "lalilu"));
+
+        ErrorReturn er = JsonGeneratorBase.getGson().fromJson(json, ErrorReturn.class);
+        assertEquals(404, er.getErrorCode());
+        assertTrue(er.getErrorText().equals("lalilu"));
+    }
+
+    @Test
+    public void testUnknownErrorToJson() {
+        String json = PgmExceptionMapper.unknownErrorToJson();
+
+        ErrorReturn er = JsonGeneratorBase.getGson().fromJson(json, ErrorReturn.class);
+        assertEquals(500, er.getErrorCode());
+    }
+
+    @Test
+    public void testGeneralOKJson() {
+        String ok = PgmExceptionMapper.getGeneralOKJson();
+        assertTrue("{\"ret\":\"OK\"}".equals(ok));
+    }
+
+    @Test
+    public void testGeneralErrorJson() {
+        String nok = PgmExceptionMapper.getGeneralErrorJson();
+        assertTrue("{\"ret\":\"NOK\"}".equals(nok));
+    }
+
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/core/exceptions/PgmExceptionsTest.java b/src/test/java/org/eclipse/openk/core/exceptions/PgmExceptionsTest.java
new file mode 100644
index 0000000..b4b1a66
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/core/exceptions/PgmExceptionsTest.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.core.exceptions;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.openk.core.viewmodel.ErrorReturn;
+import org.junit.Test;
+
+public class PgmExceptionsTest {
+
+    @Test
+    public void testPgmNestedExceptions() {
+        ErrorReturn errorReturn = new ErrorReturn();
+        errorReturn.setErrorText("this is an error");
+        errorReturn.setErrorCode(404);
+        assertEquals(404, new PgmNestedException(errorReturn).getHttpStatus());
+        assertEquals(404, new PgmNestedException(errorReturn, new Throwable()).getHttpStatus());
+        PgmNestedException exception = new PgmNestedException(errorReturn);
+        assertEquals(404, exception.getHttpStatus());
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/HTblGridMeasureTest.java b/src/test/java/org/eclipse/openk/db/model/HTblGridMeasureTest.java
new file mode 100644
index 0000000..c92577e
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/HTblGridMeasureTest.java
@@ -0,0 +1,166 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class HTblGridMeasureTest {
+
+
+
+    @Test
+    public void testGettersAndSetters() {
+
+        HTblGridMeasure hTblGridMeasure = new HTblGridMeasure();
+
+        hTblGridMeasure.setHId(1);
+        org.junit.Assert.assertEquals((Integer)1, hTblGridMeasure.getHId());
+
+        hTblGridMeasure.sethAction(1);
+        org.junit.Assert.assertEquals((Integer)1, hTblGridMeasure.gethAction());
+
+        hTblGridMeasure.sethUser("user");
+        org.junit.Assert.assertEquals("user", hTblGridMeasure.gethUser());
+
+        java.time.LocalDateTime ldthdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp hdate = java.sql.Timestamp.valueOf(ldthdate);
+        hTblGridMeasure.sethDate(hdate);
+        org.junit.Assert.assertEquals(hdate, hTblGridMeasure.gethDate());
+
+        hTblGridMeasure.setId(1);
+        org.junit.Assert.assertEquals((Integer)1, hTblGridMeasure.getId());
+
+        hTblGridMeasure.setIdDescriptive("20");
+        assertEquals("20", hTblGridMeasure.getIdDescriptive());
+
+        hTblGridMeasure.setTitle("Title");
+        assertEquals("Title", hTblGridMeasure.getTitle());
+
+        hTblGridMeasure.setAffectedResource("Affected resource");
+        assertEquals("Affected resource", hTblGridMeasure.getAffectedResource());
+
+        hTblGridMeasure.setRemark("Remark");
+        assertEquals("Remark", hTblGridMeasure.getRemark());
+
+        hTblGridMeasure.setFkRefGmStatus(8);
+        org.junit.Assert.assertEquals((Integer)8, hTblGridMeasure.getFkRefGmStatus());
+
+        hTblGridMeasure.setSwitchingObject("Transformator");
+        assertEquals("Transformator", hTblGridMeasure.getSwitchingObject());
+
+        hTblGridMeasure.setCostCenter("costa punta");
+        assertEquals("costa punta", hTblGridMeasure.getCostCenter());
+
+        hTblGridMeasure.setResponsibleOnSiteName("Rick Responsible");
+        assertEquals("Rick Responsible", hTblGridMeasure.getResponsibleOnSiteName());
+
+        hTblGridMeasure.setResponsibleOnSiteDepartment("Department ZZ");
+        assertEquals("Department ZZ", hTblGridMeasure.getResponsibleOnSiteDepartment());
+
+        hTblGridMeasure.setApprovalBy("Abel Approver");
+        assertEquals("Abel Approver", hTblGridMeasure.getApprovalBy());
+
+        hTblGridMeasure.setAreaOfSwitching("Northwest");
+        assertEquals("Northwest", hTblGridMeasure.getAreaOfSwitching());
+
+        hTblGridMeasure.setAppointmentRepetition("weekly");
+        assertEquals("weekly", hTblGridMeasure.getAppointmentRepetition());
+
+        java.time.LocalDateTime ldtAppointmentStartdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp tsAppointmentStartdate = java.sql.Timestamp.valueOf(ldtAppointmentStartdate);
+        hTblGridMeasure.setAppointmentStartdate(tsAppointmentStartdate);
+        org.junit.Assert.assertEquals(tsAppointmentStartdate, hTblGridMeasure.getAppointmentStartdate());
+
+        hTblGridMeasure.setAppointmentNumberOf(5);
+
+        java.time.LocalDateTime ldtPlannedStarttimeFirstSequence = java.time.LocalDateTime.parse("2018-04-23T19:00:00");
+        java.sql.Timestamp tsPlannedStarttimeFirstSequence = java.sql.Timestamp.valueOf(ldtPlannedStarttimeFirstSequence);
+        hTblGridMeasure.setPlannedStarttimeFirstSequence(tsPlannedStarttimeFirstSequence);
+        org.junit.Assert.assertEquals(tsPlannedStarttimeFirstSequence, hTblGridMeasure.getPlannedStarttimeFirstSequence());
+
+        java.time.LocalDateTime ldtPlannedStarttimeFirstSinglemeasure = java.time.LocalDateTime.parse("2018-04-24T20:00:00");
+        java.sql.Timestamp tsPlannedStarttimeFirstSinglemeasure = java.sql.Timestamp.valueOf(ldtPlannedStarttimeFirstSinglemeasure);
+        hTblGridMeasure.setPlannedStarttimeFirstSinglemeasure(tsPlannedStarttimeFirstSinglemeasure);
+        org.junit.Assert.assertEquals(tsPlannedStarttimeFirstSinglemeasure, hTblGridMeasure.getPlannedStarttimeFirstSinglemeasure());
+
+        java.time.LocalDateTime ldtPlannedEndtimeLastSinglemeasure = java.time.LocalDateTime.parse("2018-04-25T21:00:00");
+        java.sql.Timestamp tsPlannedEndtimeLastSinglemeasure = java.sql.Timestamp.valueOf(ldtPlannedEndtimeLastSinglemeasure);
+        hTblGridMeasure.setPlannedEndtimeLastSinglemeasure(tsPlannedEndtimeLastSinglemeasure);
+        org.junit.Assert.assertEquals(tsPlannedEndtimeLastSinglemeasure, hTblGridMeasure.getPlannedEndtimeLastSinglemeasure());
+
+        java.time.LocalDateTime ldtPlannedEndtimeGridmeasure = java.time.LocalDateTime.parse("2018-04-26T22:00:00");
+        java.sql.Timestamp tsPlannedEndtimeGridmeasure = java.sql.Timestamp.valueOf(ldtPlannedEndtimeGridmeasure);
+        hTblGridMeasure.setPlannedEndtimeGridmeasure(tsPlannedEndtimeGridmeasure);
+        org.junit.Assert.assertEquals(tsPlannedEndtimeGridmeasure, hTblGridMeasure.getPlannedEndtimeGridmeasure());
+
+        java.time.LocalDateTime ldtStarttimeFirstSequence = java.time.LocalDateTime.parse("2018-04-27T23:00:00");
+        java.sql.Timestamp tsStarttimeFirstSequence = java.sql.Timestamp.valueOf(ldtStarttimeFirstSequence);
+        hTblGridMeasure.setStarttimeFirstSequence(tsStarttimeFirstSequence);
+        org.junit.Assert.assertEquals(tsStarttimeFirstSequence, hTblGridMeasure.getStarttimeFirstSequence());
+
+        java.time.LocalDateTime ldtStarttimeFirstSinglemeasure = java.time.LocalDateTime.parse("2018-04-28T01:00:00");
+        java.sql.Timestamp tsStarttimeFirstSinglemeasure = java.sql.Timestamp.valueOf(ldtStarttimeFirstSinglemeasure);
+        hTblGridMeasure.setStarttimeFirstSinglemeasure(tsStarttimeFirstSinglemeasure);
+        org.junit.Assert.assertEquals(tsStarttimeFirstSinglemeasure, hTblGridMeasure.getStarttimeFirstSinglemeasure());
+
+        java.time.LocalDateTime ldtEndtimeLastSinglemeasure = java.time.LocalDateTime.parse("2018-04-29T02:00:00");
+        java.sql.Timestamp tsEndtimeLastSinglemeasure = java.sql.Timestamp.valueOf(ldtEndtimeLastSinglemeasure);
+        hTblGridMeasure.setEndtimeLastSinglemeasure(tsEndtimeLastSinglemeasure);
+        org.junit.Assert.assertEquals(tsEndtimeLastSinglemeasure, hTblGridMeasure.getEndtimeLastSinglemeasure());
+
+        java.time.LocalDateTime ldtEndtimeGridmeasure = java.time.LocalDateTime.parse("2018-04-30T03:00:00");
+        java.sql.Timestamp tsEndtimeGridmeasure = java.sql.Timestamp.valueOf(ldtEndtimeGridmeasure);
+        hTblGridMeasure.setEndtimeGridmeasure(tsEndtimeGridmeasure);
+        org.junit.Assert.assertEquals(tsEndtimeGridmeasure, hTblGridMeasure.getEndtimeGridmeasure());
+
+        String tsTimeOfReallocation = "2018-04-19T08:00:00";
+        hTblGridMeasure.setTimeOfReallocation(tsTimeOfReallocation);
+        org.junit.Assert.assertEquals(tsTimeOfReallocation, hTblGridMeasure.getTimeOfReallocation());
+
+        hTblGridMeasure.setDescription("This is a description");
+        assertEquals("This is a description", hTblGridMeasure.getDescription());
+
+        hTblGridMeasure.setFkRefBranch(3);
+        assertEquals((Integer)3, hTblGridMeasure.getFkRefBranch());
+
+        hTblGridMeasure.setFkRefBranchLevel(2);
+        assertEquals((Integer)2, hTblGridMeasure.getFkRefBranchLevel());
+
+        hTblGridMeasure.setCreateUser("Create User");
+        assertEquals("Create User", hTblGridMeasure.getCreateUser());
+
+        hTblGridMeasure.setCreateUserDepartment("Create User Department");
+        assertEquals("Create User Department", hTblGridMeasure.getCreateUserDepartment());
+
+        java.time.LocalDateTime ldtCreate = java.time.LocalDateTime.parse("2018-03-20T15:00:00");
+        java.sql.Timestamp tsCreate = java.sql.Timestamp.valueOf(ldtCreate);
+
+        hTblGridMeasure.setCreateDate(tsCreate);
+        org.junit.Assert.assertEquals(tsCreate, hTblGridMeasure.getCreateDate());
+
+        hTblGridMeasure.setModUser("Modifiing User");
+        assertEquals("Modifiing User", hTblGridMeasure.getModUser());
+
+        hTblGridMeasure.setModUserDepartment("Modifiing User Department");
+        assertEquals("Modifiing User Department", hTblGridMeasure.getModUserDepartment());
+
+        java.time.LocalDateTime ldtMod = java.time.LocalDateTime.parse("2018-03-21T16:00:00");
+        java.sql.Timestamp tsMod = java.sql.Timestamp.valueOf(ldtMod);
+
+        hTblGridMeasure.setModDate(tsMod);
+        org.junit.Assert.assertEquals(tsMod, hTblGridMeasure.getModDate());
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/RefBranchLevelTest.java b/src/test/java/org/eclipse/openk/db/model/RefBranchLevelTest.java
new file mode 100644
index 0000000..63c53f1
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/RefBranchLevelTest.java
@@ -0,0 +1,56 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+
+public class RefBranchLevelTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        RefBranchLevel refBranchLevel = new RefBranchLevel();
+
+        refBranchLevel.setId(5);
+        assertEquals((Integer)5, refBranchLevel.getId());
+
+        refBranchLevel.setName("BranchLevelName");
+        assertEquals("BranchLevelName", refBranchLevel.getName());
+
+        refBranchLevel.setDescription("Description");
+        assertEquals("Description", refBranchLevel.getDescription());
+
+        refBranchLevel.setFkRefBranch(2);
+        assertEquals((Integer)2, refBranchLevel.getFkRefBranch());
+
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-04-20T16:00:00");
+        java.sql.Timestamp tsCreated = java.sql.Timestamp.valueOf(ldtCreated);
+        refBranchLevel.setCreateDate(tsCreated);
+        org.junit.Assert.assertEquals(tsCreated, refBranchLevel.getCreateDate());
+
+        refBranchLevel.setCreateUser("Carly Creator");
+        assertEquals("Carly Creator", refBranchLevel.getCreateUser());
+
+        java.time.LocalDateTime ldtModified = java.time.LocalDateTime.parse("2018-04-21T17:00:00");
+        java.sql.Timestamp tsModified = java.sql.Timestamp.valueOf(ldtModified);
+        refBranchLevel.setModDate(tsModified);
+        org.junit.Assert.assertEquals(tsModified, refBranchLevel.getModDate());
+
+        refBranchLevel.setModUser("Mauro Modifier");
+        assertEquals("Mauro Modifier", refBranchLevel.getModUser());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/RefBranchTest.java b/src/test/java/org/eclipse/openk/db/model/RefBranchTest.java
new file mode 100644
index 0000000..21763ae
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/RefBranchTest.java
@@ -0,0 +1,56 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+
+public class RefBranchTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        RefBranch refBranch = new RefBranch();
+
+        refBranch.setId(3);
+        assertEquals((Integer)3, refBranch.getId());
+
+        refBranch.setName("Branchname");
+        assertEquals("Branchname", refBranch.getName());
+
+        refBranch.setDescription("Description");
+        assertEquals("Description", refBranch.getDescription());
+
+        refBranch.setColorCode("ColorCode");
+        assertEquals("ColorCode", refBranch.getColorCode());
+
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-04-20T16:00:00");
+        java.sql.Timestamp tsCreated = java.sql.Timestamp.valueOf(ldtCreated);
+        refBranch.setCreateDate(tsCreated);
+        org.junit.Assert.assertEquals(tsCreated, refBranch.getCreateDate());
+
+        refBranch.setCreateUser("Carl Creator");
+        assertEquals("Carl Creator", refBranch.getCreateUser());
+
+        java.time.LocalDateTime ldtModified = java.time.LocalDateTime.parse("2018-04-21T17:00:00");
+        java.sql.Timestamp tsModified = java.sql.Timestamp.valueOf(ldtModified);
+        refBranch.setModDate(tsModified);
+        org.junit.Assert.assertEquals(tsModified, refBranch.getModDate());
+
+        refBranch.setModUser("Max Modifier");
+        assertEquals("Max Modifier", refBranch.getModUser());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/RefCostCenterTest.java b/src/test/java/org/eclipse/openk/db/model/RefCostCenterTest.java
new file mode 100644
index 0000000..3f72091
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/RefCostCenterTest.java
@@ -0,0 +1,53 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+
+public class RefCostCenterTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        RefCostCenter refCostCenter = new RefCostCenter();
+
+        refCostCenter.setId(1);
+        assertEquals((Integer)1, refCostCenter.getId());
+
+        refCostCenter.setName("CostCenterName");
+        assertEquals("CostCenterName", refCostCenter.getName());
+
+        refCostCenter.setDescription("Cost Center Description");
+        assertEquals("Cost Center Description", refCostCenter.getDescription());
+
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-04-16T16:00:00");
+        java.sql.Timestamp tsCreated = java.sql.Timestamp.valueOf(ldtCreated);
+        refCostCenter.setCreateDate(tsCreated);
+        org.junit.Assert.assertEquals(tsCreated, refCostCenter.getCreateDate());
+
+        refCostCenter.setCreateUser("Carlina Creator");
+        assertEquals("Carlina Creator", refCostCenter.getCreateUser());
+
+        java.time.LocalDateTime ldtModified = java.time.LocalDateTime.parse("2018-04-16T17:00:00");
+        java.sql.Timestamp tsModified = java.sql.Timestamp.valueOf(ldtModified);
+        refCostCenter.setModDate(tsModified);
+        org.junit.Assert.assertEquals(tsModified, refCostCenter.getModDate());
+
+        refCostCenter.setModUser("Mirko Modifier");
+        assertEquals("Mirko Modifier", refCostCenter.getModUser());
+
+    }
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/db/model/RefGmStatusTest.java b/src/test/java/org/eclipse/openk/db/model/RefGmStatusTest.java
new file mode 100644
index 0000000..ff41fa1
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/RefGmStatusTest.java
@@ -0,0 +1,50 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+
+public class RefGmStatusTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        RefGmStatus refGmStatus = new RefGmStatus();
+
+        refGmStatus.setId(5);
+        assertEquals((Integer)5, refGmStatus.getId());
+
+        refGmStatus.setName("Statusname");
+        assertEquals("Statusname", refGmStatus.getName());
+
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-03-20T15:00:00");
+        java.sql.Timestamp tsCreated = java.sql.Timestamp.valueOf(ldtCreated);
+        refGmStatus.setCreateDate(tsCreated);
+        org.junit.Assert.assertEquals(tsCreated, refGmStatus.getCreateDate());
+
+        refGmStatus.setCreateUser("Conny Creator");
+        assertEquals("Conny Creator", refGmStatus.getCreateUser());
+
+        java.time.LocalDateTime ldtModified = java.time.LocalDateTime.parse("2018-03-21T15:00:00");
+        java.sql.Timestamp tsModified = java.sql.Timestamp.valueOf(ldtModified);
+        refGmStatus.setModDate(tsModified);
+        org.junit.Assert.assertEquals(tsModified, refGmStatus.getModDate());
+
+        refGmStatus.setModUser("Mara Modifier");
+        assertEquals("Mara Modifier", refGmStatus.getModUser());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/RefUserDepartmentTest.java b/src/test/java/org/eclipse/openk/db/model/RefUserDepartmentTest.java
new file mode 100644
index 0000000..b8a3a20
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/RefUserDepartmentTest.java
@@ -0,0 +1,50 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+
+public class RefUserDepartmentTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        RefUserDepartment refUserDepartment = new RefUserDepartment();
+
+        refUserDepartment.setId(6);
+        assertEquals((Integer)6, refUserDepartment.getId());
+
+        refUserDepartment.setName("UserDepartmentName");
+        assertEquals("UserDepartmentName", refUserDepartment.getName());
+
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-04-16T13:00:00");
+        java.sql.Timestamp tsCreated = java.sql.Timestamp.valueOf(ldtCreated);
+        refUserDepartment.setCreateDate(tsCreated);
+        org.junit.Assert.assertEquals(tsCreated, refUserDepartment.getCreateDate());
+
+        refUserDepartment.setCreateUser("Cathie Creator");
+        assertEquals("Cathie Creator", refUserDepartment.getCreateUser());
+
+        java.time.LocalDateTime ldtModified = java.time.LocalDateTime.parse("2018-04-16T14:00:00");
+        java.sql.Timestamp tsModified = java.sql.Timestamp.valueOf(ldtModified);
+        refUserDepartment.setModDate(tsModified);
+        org.junit.Assert.assertEquals(tsModified, refUserDepartment.getModDate());
+
+        refUserDepartment.setModUser("Martin Modifier");
+        assertEquals("Martin Modifier", refUserDepartment.getModUser());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/RefUserSettingsTest.java b/src/test/java/org/eclipse/openk/db/model/RefUserSettingsTest.java
new file mode 100644
index 0000000..e4d21b9
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/RefUserSettingsTest.java
@@ -0,0 +1,81 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class RefUserSettingsTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        TblUserSettings tblUserSettings = new TblUserSettings();
+
+        tblUserSettings.setId(4);
+        assertEquals((Integer)4, tblUserSettings.getId());
+
+        tblUserSettings.setUsername("Username");
+        assertEquals("Username", tblUserSettings.getUsername());
+
+        tblUserSettings.setSettingType("xyz");
+        assertEquals("xyz", tblUserSettings.getSettingType());
+
+        tblUserSettings.setValue("{\n" +
+                "  \"aliceblue\": \"#f0f8ff\",\n" +
+                "  \"antiquewhite\": \"#faebd7\",\n" +
+                "  \"aqua\": \"#00ffff\",\n" +
+                "  \"aquamarine\": \"#7fffd4\",\n" +
+                "  \"azure\": \"#f0ffff\",\n" +
+                "  \"beige\": \"#f5f5dc\",\n" +
+                "  \"bisque\": \"#ffe4c4\",\n" +
+                "  \"black\": \"#000000\",\n" +
+                "  \"blanchedalmond\": \"#ffebcd\",\n" +
+                "  \"blue\": \"#0000ff\",\n" +
+                "  \"blueviolet\": \"#8a2be2\",\n" +
+                "  \"brown\": \"#a52a2a\",\n" +
+                "}\n");
+
+        assertEquals("{\n" +
+                "  \"aliceblue\": \"#f0f8ff\",\n" +
+                "  \"antiquewhite\": \"#faebd7\",\n" +
+                "  \"aqua\": \"#00ffff\",\n" +
+                "  \"aquamarine\": \"#7fffd4\",\n" +
+                "  \"azure\": \"#f0ffff\",\n" +
+                "  \"beige\": \"#f5f5dc\",\n" +
+                "  \"bisque\": \"#ffe4c4\",\n" +
+                "  \"black\": \"#000000\",\n" +
+                "  \"blanchedalmond\": \"#ffebcd\",\n" +
+                "  \"blue\": \"#0000ff\",\n" +
+                "  \"blueviolet\": \"#8a2be2\",\n" +
+                "  \"brown\": \"#a52a2a\",\n" +
+                "}\n", tblUserSettings.getValue());
+
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-04-24T06:00:00");
+        java.sql.Timestamp tsCreated = java.sql.Timestamp.valueOf(ldtCreated);
+        tblUserSettings.setCreateDate(tsCreated);
+        org.junit.Assert.assertEquals(tsCreated, tblUserSettings.getCreateDate());
+
+        tblUserSettings.setCreateUser("Coco Creator");
+        assertEquals("Coco Creator", tblUserSettings.getCreateUser());
+
+        java.time.LocalDateTime ldtModified = java.time.LocalDateTime.parse("2018-04-21T07:00:00");
+        java.sql.Timestamp tsModified = java.sql.Timestamp.valueOf(ldtModified);
+        tblUserSettings.setModDate(tsModified);
+        org.junit.Assert.assertEquals(tsModified, tblUserSettings.getModDate());
+
+        tblUserSettings.setModUser("Minnie Modifier");
+        assertEquals("Minnie Modifier", tblUserSettings.getModUser());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/RefVersionTest.java b/src/test/java/org/eclipse/openk/db/model/RefVersionTest.java
new file mode 100644
index 0000000..5d37e80
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/RefVersionTest.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.db.model;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+
+public class RefVersionTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        RefVersion refVersion = new RefVersion();
+
+        refVersion.setId(1);
+        assertEquals((Integer)1, refVersion.getId());
+
+        refVersion.setVersion("version54");
+        assertEquals("version54", refVersion.getVersion());
+
+    }
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/db/model/TblDocumentsTest.java b/src/test/java/org/eclipse/openk/db/model/TblDocumentsTest.java
new file mode 100644
index 0000000..ef9ae4f
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/TblDocumentsTest.java
@@ -0,0 +1,53 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+
+public class TblDocumentsTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        TblDocuments tblDocuments = new TblDocuments();
+
+        tblDocuments.setId(3);
+        assertEquals((Integer)3, tblDocuments.getId());
+
+        tblDocuments.setDocumentName("docname");
+        assertEquals("docname", tblDocuments.getDocumentName());
+
+        tblDocuments.setDocument(new byte[64]);
+        assertEquals(64, tblDocuments.getDocument().length);
+
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-04-20T16:00:00");
+        java.sql.Timestamp tsCreated = java.sql.Timestamp.valueOf(ldtCreated);
+        tblDocuments.setCreateDate(tsCreated);
+        org.junit.Assert.assertEquals(tsCreated, tblDocuments.getCreateDate());
+
+        tblDocuments.setCreateUser("Carl Creator");
+        assertEquals("Carl Creator", tblDocuments.getCreateUser());
+
+        java.time.LocalDateTime ldtModified = java.time.LocalDateTime.parse("2018-04-21T17:00:00");
+        java.sql.Timestamp tsModified = java.sql.Timestamp.valueOf(ldtModified);
+        tblDocuments.setModDate(tsModified);
+        org.junit.Assert.assertEquals(tsModified, tblDocuments.getModDate());
+
+        tblDocuments.setModUser("Max Modifier");
+        assertEquals("Max Modifier", tblDocuments.getModUser());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/TblGridMeasureTest.java b/src/test/java/org/eclipse/openk/db/model/TblGridMeasureTest.java
new file mode 100644
index 0000000..9d455c5
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/TblGridMeasureTest.java
@@ -0,0 +1,152 @@
+/**
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import static junit.framework.TestCase.assertEquals;
+
+import org.junit.Test;
+
+public class TblGridMeasureTest {
+
+
+
+    @Test
+    public void testGettersAndSetters() {
+
+        TblGridMeasure tblGridmeasure = new TblGridMeasure();
+
+        tblGridmeasure.setId(1);
+        org.junit.Assert.assertEquals((Integer)1, tblGridmeasure.getId());
+
+        tblGridmeasure.setIdDescriptive("20");
+        assertEquals("20", tblGridmeasure.getIdDescriptive());
+
+        tblGridmeasure.setTitle("Title");
+        assertEquals("Title", tblGridmeasure.getTitle());
+
+        tblGridmeasure.setAffectedResource("Affected resource");
+        assertEquals("Affected resource", tblGridmeasure.getAffectedResource());
+
+        tblGridmeasure.setRemark("Remark");
+        assertEquals("Remark", tblGridmeasure.getRemark());
+
+        tblGridmeasure.setFkRefGmStatus(8);
+        org.junit.Assert.assertEquals((Integer)8, tblGridmeasure.getFkRefGmStatus());
+
+        tblGridmeasure.setSwitchingObject("Transformator");
+        assertEquals("Transformator", tblGridmeasure.getSwitchingObject());
+
+        tblGridmeasure.setCostCenter("costa punta");
+        assertEquals("costa punta", tblGridmeasure.getCostCenter());
+
+        tblGridmeasure.setResponsibleOnSiteName("Rick Responsible");
+        assertEquals("Rick Responsible", tblGridmeasure.getResponsibleOnSiteName());
+
+        tblGridmeasure.setResponsibleOnSiteDepartment("Department ZZ");
+        assertEquals("Department ZZ", tblGridmeasure.getResponsibleOnSiteDepartment());
+
+        tblGridmeasure.setApprovalBy("Abel Approver");
+        assertEquals("Abel Approver", tblGridmeasure.getApprovalBy());
+
+        tblGridmeasure.setAreaOfSwitching("Northwest");
+        assertEquals("Northwest", tblGridmeasure.getAreaOfSwitching());
+
+        tblGridmeasure.setAppointmentRepetition("weekly");
+        assertEquals("weekly", tblGridmeasure.getAppointmentRepetition());
+
+        java.time.LocalDateTime ldtAppointmentStartdate = java.time.LocalDateTime.parse("2018-04-22T18:00:00");
+        java.sql.Timestamp tsAppointmentStartdate = java.sql.Timestamp.valueOf(ldtAppointmentStartdate);
+        tblGridmeasure.setAppointmentStartdate(tsAppointmentStartdate);
+        org.junit.Assert.assertEquals(tsAppointmentStartdate, tblGridmeasure.getAppointmentStartdate());
+
+        tblGridmeasure.setAppointmentNumberOf(5);
+
+        java.time.LocalDateTime ldtPlannedStarttimeFirstSequence = java.time.LocalDateTime.parse("2018-04-23T19:00:00");
+        java.sql.Timestamp tsPlannedStarttimeFirstSequence = java.sql.Timestamp.valueOf(ldtPlannedStarttimeFirstSequence);
+        tblGridmeasure.setPlannedStarttimeFirstSequence(tsPlannedStarttimeFirstSequence);
+        org.junit.Assert.assertEquals(tsPlannedStarttimeFirstSequence, tblGridmeasure.getPlannedStarttimeFirstSequence());
+
+        java.time.LocalDateTime ldtPlannedStarttimeFirstSinglemeasure = java.time.LocalDateTime.parse("2018-04-24T20:00:00");
+        java.sql.Timestamp tsPlannedStarttimeFirstSinglemeasure = java.sql.Timestamp.valueOf(ldtPlannedStarttimeFirstSinglemeasure);
+        tblGridmeasure.setPlannedStarttimeFirstSinglemeasure(tsPlannedStarttimeFirstSinglemeasure);
+        org.junit.Assert.assertEquals(tsPlannedStarttimeFirstSinglemeasure, tblGridmeasure.getPlannedStarttimeFirstSinglemeasure());
+
+        java.time.LocalDateTime ldtPlannedEndtimeLastSinglemeasure = java.time.LocalDateTime.parse("2018-04-25T21:00:00");
+        java.sql.Timestamp tsPlannedEndtimeLastSinglemeasure = java.sql.Timestamp.valueOf(ldtPlannedEndtimeLastSinglemeasure);
+        tblGridmeasure.setPlannedEndtimeLastSinglemeasure(tsPlannedEndtimeLastSinglemeasure);
+        org.junit.Assert.assertEquals(tsPlannedEndtimeLastSinglemeasure, tblGridmeasure.getPlannedEndtimeLastSinglemeasure());
+
+        java.time.LocalDateTime ldtPlannedEndtimeGridmeasure = java.time.LocalDateTime.parse("2018-04-26T22:00:00");
+        java.sql.Timestamp tsPlannedEndtimeGridmeasure = java.sql.Timestamp.valueOf(ldtPlannedEndtimeGridmeasure);
+        tblGridmeasure.setPlannedEndtimeGridmeasure(tsPlannedEndtimeGridmeasure);
+        org.junit.Assert.assertEquals(tsPlannedEndtimeGridmeasure, tblGridmeasure.getPlannedEndtimeGridmeasure());
+
+        java.time.LocalDateTime ldtStarttimeFirstSequence = java.time.LocalDateTime.parse("2018-04-27T23:00:00");
+        java.sql.Timestamp tsStarttimeFirstSequence = java.sql.Timestamp.valueOf(ldtStarttimeFirstSequence);
+        tblGridmeasure.setStarttimeFirstSequence(tsStarttimeFirstSequence);
+        org.junit.Assert.assertEquals(tsStarttimeFirstSequence, tblGridmeasure.getStarttimeFirstSequence());
+
+        java.time.LocalDateTime ldtStarttimeFirstSinglemeasure = java.time.LocalDateTime.parse("2018-04-28T01:00:00");
+        java.sql.Timestamp tsStarttimeFirstSinglemeasure = java.sql.Timestamp.valueOf(ldtStarttimeFirstSinglemeasure);
+        tblGridmeasure.setStarttimeFirstSinglemeasure(tsStarttimeFirstSinglemeasure);
+        org.junit.Assert.assertEquals(tsStarttimeFirstSinglemeasure, tblGridmeasure.getStarttimeFirstSinglemeasure());
+
+        java.time.LocalDateTime ldtEndtimeLastSinglemeasure = java.time.LocalDateTime.parse("2018-04-29T02:00:00");
+        java.sql.Timestamp tsEndtimeLastSinglemeasure = java.sql.Timestamp.valueOf(ldtEndtimeLastSinglemeasure);
+        tblGridmeasure.setEndtimeLastSinglemeasure(tsEndtimeLastSinglemeasure);
+        org.junit.Assert.assertEquals(tsEndtimeLastSinglemeasure, tblGridmeasure.getEndtimeLastSinglemeasure());
+
+        java.time.LocalDateTime ldtEndtimeGridmeasure = java.time.LocalDateTime.parse("2018-04-30T03:00:00");
+        java.sql.Timestamp tsEndtimeGridmeasure = java.sql.Timestamp.valueOf(ldtEndtimeGridmeasure);
+        tblGridmeasure.setEndtimeGridmeasure(tsEndtimeGridmeasure);
+        org.junit.Assert.assertEquals(tsEndtimeGridmeasure, tblGridmeasure.getEndtimeGridmeasure());
+
+        String tsTimeOfReallocation = "2018-04-19T08:00:00";
+        tblGridmeasure.setTimeOfReallocation(tsTimeOfReallocation);
+        org.junit.Assert.assertEquals(tsTimeOfReallocation, tblGridmeasure.getTimeOfReallocation());
+
+        tblGridmeasure.setDescription("This is a description");
+        assertEquals("This is a description", tblGridmeasure.getDescription());
+
+        tblGridmeasure.setFkRefBranch(3);
+        assertEquals((Integer)3, tblGridmeasure.getFkRefBranch());
+
+        tblGridmeasure.setFkRefBranchLevel(2);
+        assertEquals((Integer)2, tblGridmeasure.getFkRefBranchLevel());
+
+        tblGridmeasure.setCreateUser("Create User");
+        assertEquals("Create User", tblGridmeasure.getCreateUser());
+
+        tblGridmeasure.setCreateUserDepartment("Create User Department");
+        assertEquals("Create User Department", tblGridmeasure.getCreateUserDepartment());
+
+        java.time.LocalDateTime ldtCreate = java.time.LocalDateTime.parse("2018-03-20T15:00:00");
+        java.sql.Timestamp tsCreate = java.sql.Timestamp.valueOf(ldtCreate);
+
+        tblGridmeasure.setCreateDate(tsCreate);
+        org.junit.Assert.assertEquals(tsCreate, tblGridmeasure.getCreateDate());
+
+        tblGridmeasure.setModUser("Modifiing User");
+        assertEquals("Modifiing User", tblGridmeasure.getModUser());
+
+        tblGridmeasure.setModUserDepartment("Modifiing User Department");
+        assertEquals("Modifiing User Department", tblGridmeasure.getModUserDepartment());
+
+        java.time.LocalDateTime ldtMod = java.time.LocalDateTime.parse("2018-03-21T16:00:00");
+        java.sql.Timestamp tsMod = java.sql.Timestamp.valueOf(ldtMod);
+
+        tblGridmeasure.setModDate(tsMod);
+        org.junit.Assert.assertEquals(tsMod, tblGridmeasure.getModDate());
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/TblIdCounterTest.java b/src/test/java/org/eclipse/openk/db/model/TblIdCounterTest.java
new file mode 100644
index 0000000..2ca7744
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/TblIdCounterTest.java
@@ -0,0 +1,61 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+
+import static org.junit.Assert.assertEquals;
+
+
+public class TblIdCounterTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        TblIdCounter idCounter = new TblIdCounter();
+
+        idCounter.setId(3);
+        assertEquals((Integer)3, idCounter.getId());
+
+        idCounter.setCounter(54);
+        assertEquals((Integer)54, idCounter.getCounter());
+
+        idCounter.setCounterType("big");
+        assertEquals("big", idCounter.getCounterType());
+
+        idCounter.setModifiedDate("2018-04-20T16:00:00");
+        assertEquals("2018-04-20T16:00:00", idCounter.getModifiedDate());
+
+        idCounter.setCreateUser("user");
+        assertEquals("user", idCounter.getCreateUser());
+
+        LocalDateTime ldtCreated = LocalDateTime.parse("2018-04-20T16:00:00");
+        Timestamp tsCreated = Timestamp.valueOf(ldtCreated);
+        idCounter.setCreateDate(tsCreated);
+        Assert.assertEquals(tsCreated, idCounter.getCreateDate());
+
+
+        LocalDateTime ldtModified = LocalDateTime.parse("2018-04-21T17:00:00");
+        Timestamp tsModified = Timestamp.valueOf(ldtModified);
+        idCounter.setModDate(tsModified);
+        Assert.assertEquals(tsModified, idCounter.getModDate());
+
+        idCounter.setModUser("Max Modifier");
+        assertEquals("Max Modifier", idCounter.getModUser());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/TblLockTest.java b/src/test/java/org/eclipse/openk/db/model/TblLockTest.java
new file mode 100644
index 0000000..c1349dc
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/TblLockTest.java
@@ -0,0 +1,56 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+
+public class TblLockTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        TblLock tblLock = new TblLock();
+
+        tblLock.setId(3);
+        assertEquals((Integer)3, tblLock.getId());
+
+        tblLock.setKey(2);
+        assertEquals((Integer)2, tblLock.getKey());
+
+        tblLock.setUsername("Tommy Tester");
+        assertEquals("Tommy Tester", tblLock.getUsername());
+
+        tblLock.setInfo("Information");
+        assertEquals("Information", tblLock.getInfo());
+
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-04-20T16:00:00");
+        java.sql.Timestamp tsCreated = java.sql.Timestamp.valueOf(ldtCreated);
+        tblLock.setCreateDate(tsCreated);
+        org.junit.Assert.assertEquals(tsCreated, tblLock.getCreateDate());
+
+        tblLock.setCreateUser("Carl Creator");
+        assertEquals("Carl Creator", tblLock.getCreateUser());
+
+        java.time.LocalDateTime ldtModified = java.time.LocalDateTime.parse("2018-04-21T17:00:00");
+        java.sql.Timestamp tsModified = java.sql.Timestamp.valueOf(ldtModified);
+        tblLock.setModDate(tsModified);
+        org.junit.Assert.assertEquals(tsModified, tblLock.getModDate());
+
+        tblLock.setModUser("Max Modifier");
+        assertEquals("Max Modifier", tblLock.getModUser());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/TblMeasureDocumentsTest.java b/src/test/java/org/eclipse/openk/db/model/TblMeasureDocumentsTest.java
new file mode 100644
index 0000000..fa953f2
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/TblMeasureDocumentsTest.java
@@ -0,0 +1,55 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+
+public class TblMeasureDocumentsTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        TblMeasureDocuments tblMeasureDocuments = new TblMeasureDocuments();
+        TblDocuments tblDocuments = new TblDocuments();
+        tblDocuments.setId(7);
+
+        tblMeasureDocuments.setId(3);
+        assertEquals((Integer)3, tblMeasureDocuments.getId());
+
+        tblMeasureDocuments.setFkTblMeasure(5);
+        assertEquals((Integer)5, tblMeasureDocuments.getFkTblMeasure());
+
+        tblMeasureDocuments.setTblDocuments(tblDocuments);
+        assertEquals((Integer)7, tblMeasureDocuments.getTblDocuments().getId());
+
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-04-20T16:00:00");
+        java.sql.Timestamp tsCreated = java.sql.Timestamp.valueOf(ldtCreated);
+        tblMeasureDocuments.setCreateDate(tsCreated);
+        org.junit.Assert.assertEquals(tsCreated, tblMeasureDocuments.getCreateDate());
+
+        tblMeasureDocuments.setCreateUser("Carl Creator");
+        assertEquals("Carl Creator", tblMeasureDocuments.getCreateUser());
+
+        java.time.LocalDateTime ldtModified = java.time.LocalDateTime.parse("2018-04-21T17:00:00");
+        java.sql.Timestamp tsModified = java.sql.Timestamp.valueOf(ldtModified);
+        tblMeasureDocuments.setModDate(tsModified);
+        org.junit.Assert.assertEquals(tsModified, tblMeasureDocuments.getModDate());
+
+        tblMeasureDocuments.setModUser("Max Modifier");
+        assertEquals("Max Modifier", tblMeasureDocuments.getModUser());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/TblSingleGridMeasureTest.java b/src/test/java/org/eclipse/openk/db/model/TblSingleGridMeasureTest.java
new file mode 100644
index 0000000..3c1abf7
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/TblSingleGridMeasureTest.java
@@ -0,0 +1,87 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class TblSingleGridMeasureTest {
+
+
+
+    @Test
+    public void testGettersAndSetters() {
+
+        TblSingleGridmeasure tblSingleGridmeasure = new TblSingleGridmeasure();
+
+        tblSingleGridmeasure.setId(1);
+        org.junit.Assert.assertEquals((Integer)1, tblSingleGridmeasure.getId());
+
+        tblSingleGridmeasure.setSortorder(2);
+        assertEquals((Integer)2, tblSingleGridmeasure.getSortorder());
+
+        tblSingleGridmeasure.setTitle("title");
+        assertEquals("title", tblSingleGridmeasure.getTitle());
+
+        tblSingleGridmeasure.setSwitchingObject("tool");
+        assertEquals("tool", tblSingleGridmeasure.getSwitchingObject());
+
+        tblSingleGridmeasure.setCimId("cim id");
+        assertEquals("cim id", tblSingleGridmeasure.getCimId());
+
+        tblSingleGridmeasure.setCimName("cim");
+        assertEquals("cim", tblSingleGridmeasure.getCimName());
+
+        tblSingleGridmeasure.setCimDescription("cim");
+        assertEquals("cim", tblSingleGridmeasure.getCimDescription());
+
+        tblSingleGridmeasure.setDescription("des");
+        assertEquals("des", tblSingleGridmeasure.getDescription());
+
+        tblSingleGridmeasure.setFkTblGridmeasure(4);
+        assertEquals((Integer)4, tblSingleGridmeasure.getFkTblGridmeasure());
+
+
+        java.time.LocalDateTime ldtStarttimeSinglemeasure = java.time.LocalDateTime.parse("2018-04-28T01:00:00");
+        java.sql.Timestamp tsStarttimeSinglemeasure = java.sql.Timestamp.valueOf(ldtStarttimeSinglemeasure);
+        tblSingleGridmeasure.setPlannedStarttimeSinglemeasure(tsStarttimeSinglemeasure);
+        org.junit.Assert.assertEquals(tsStarttimeSinglemeasure, tblSingleGridmeasure.getPlannedStarttimeSinglemeasure());
+
+        java.time.LocalDateTime ldtEndtimeSinglemeasure = java.time.LocalDateTime.parse("2018-04-29T02:00:00");
+        java.sql.Timestamp tsEndtimeSinglemeasure = java.sql.Timestamp.valueOf(ldtEndtimeSinglemeasure);
+        tblSingleGridmeasure.setPlannedEndtimeSinglemeasure(tsEndtimeSinglemeasure);
+        org.junit.Assert.assertEquals(tsEndtimeSinglemeasure, tblSingleGridmeasure.getPlannedEndtimeSinglemeasure());
+
+
+
+        tblSingleGridmeasure.setCreateUser("Create User");
+        assertEquals("Create User", tblSingleGridmeasure.getCreateUser());
+
+        java.time.LocalDateTime ldtCreate = java.time.LocalDateTime.parse("2018-03-20T15:00:00");
+        java.sql.Timestamp tsCreate = java.sql.Timestamp.valueOf(ldtCreate);
+
+        tblSingleGridmeasure.setCreateDate(tsCreate);
+        org.junit.Assert.assertEquals(tsCreate, tblSingleGridmeasure.getCreateDate());
+
+        tblSingleGridmeasure.setModUser("Modifiing User");
+        assertEquals("Modifiing User", tblSingleGridmeasure.getModUser());
+
+        java.time.LocalDateTime ldtMod = java.time.LocalDateTime.parse("2018-03-21T16:00:00");
+        java.sql.Timestamp tsMod = java.sql.Timestamp.valueOf(ldtMod);
+
+        tblSingleGridmeasure.setModDate(tsMod);
+        org.junit.Assert.assertEquals(tsMod, tblSingleGridmeasure.getModDate());
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/db/model/TblStepsTest.java b/src/test/java/org/eclipse/openk/db/model/TblStepsTest.java
new file mode 100644
index 0000000..a3a829e
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/db/model/TblStepsTest.java
@@ -0,0 +1,62 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.db.model;
+
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class TblStepsTest {
+
+
+
+    @Test
+    public void testGettersAndSetters() {
+
+        TblSteps tblSteps = new TblSteps();
+
+        tblSteps.setId(1);
+        org.junit.Assert.assertEquals((Integer)1, tblSteps.getId());
+
+        tblSteps.setSortorder(2);
+        assertEquals((Integer)2, tblSteps.getSortorder());
+
+        tblSteps.setSwitchingObject("tool");
+        assertEquals("tool", tblSteps.getSwitchingObject());
+
+        tblSteps.setTargetState("target");
+        assertEquals("target", tblSteps.getTargetState());
+
+        tblSteps.setFkTblSingleGridmeasure(4);
+        assertEquals((Integer)4, tblSteps.getFkTblSingleGridmeasure());
+
+        tblSteps.setCreateUser("Create User");
+        assertEquals("Create User", tblSteps.getCreateUser());
+
+        java.time.LocalDateTime ldtCreate = java.time.LocalDateTime.parse("2018-03-20T15:00:00");
+        java.sql.Timestamp tsCreate = java.sql.Timestamp.valueOf(ldtCreate);
+
+        tblSteps.setCreateDate(tsCreate);
+        org.junit.Assert.assertEquals(tsCreate, tblSteps.getCreateDate());
+
+        tblSteps.setModUser("Modifiing User");
+        assertEquals("Modifiing User", tblSteps.getModUser());
+
+        java.time.LocalDateTime ldtMod = java.time.LocalDateTime.parse("2018-03-21T16:00:00");
+        java.sql.Timestamp tsMod = java.sql.Timestamp.valueOf(ldtMod);
+
+        tblSteps.setModDate(tsMod);
+        org.junit.Assert.assertEquals(tsMod, tblSteps.getModDate());
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/health/DBIsPresentHealthCheckTest.java b/src/test/java/org/eclipse/openk/health/DBIsPresentHealthCheckTest.java
new file mode 100644
index 0000000..3a95378
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/health/DBIsPresentHealthCheckTest.java
@@ -0,0 +1,75 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.health;
+
+import static junit.framework.TestCase.assertFalse;
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+import com.codahale.metrics.health.HealthCheck;
+import org.eclipse.openk.api.VersionInfo;
+import org.junit.Test;
+
+public class DBIsPresentHealthCheckTest {
+    class MockHC extends DBIsPresentHealthCheck {
+        public String dbversion;
+        public String beversion;
+        public boolean throwException;
+        public boolean provideNull;
+
+        protected VersionInfo getVersionInfoFromResource()  {
+            if(throwException) {
+                throw new RuntimeException("As demanded!");
+            }
+            if(provideNull)
+            {
+                return null;
+            }
+            VersionInfo vi = new VersionInfo();
+            vi.setDbVersion(dbversion);
+            vi.setBackendVersion(beversion);
+            return vi;
+        }
+    }
+
+    @Test
+    public void testCheck() throws Exception {
+        MockHC hc = new MockHC();
+        hc.beversion="1_BE";
+        hc.dbversion="2_DB";
+        hc.throwException=false;
+
+        HealthCheck.Result r = hc.check();
+        assertTrue( r.isHealthy() );
+
+        hc.beversion="";
+        assertFalse( hc.check().isHealthy());
+        assertEquals( "service not ready", hc.check().getMessage());
+
+        hc.beversion="1_BE";
+        hc.dbversion="";
+        assertFalse( hc.check().isHealthy());
+        hc.dbversion="NO_DB";
+        assertFalse( hc.check().isHealthy());
+        assertEquals( "DB not ready", hc.check().getMessage());
+
+        hc.provideNull=true;
+        assertFalse( hc.check().isHealthy());
+    }
+
+    @Test( expected = Exception.class )
+    public void testCheck_Exception() throws Exception {
+        MockHC hc = new MockHC();
+        hc.throwException=false;
+        hc.check();
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/health/MailConfigurationHealthCheckTest.java b/src/test/java/org/eclipse/openk/health/MailConfigurationHealthCheckTest.java
new file mode 100644
index 0000000..c2f73cf
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/health/MailConfigurationHealthCheckTest.java
@@ -0,0 +1,125 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.health;
+
+import com.codahale.metrics.health.HealthCheck;
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailmanagerTest;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class MailConfigurationHealthCheckTest {
+
+
+    private static GreenMail mailServer;
+
+
+    class MockHC extends MailConfigurationHealthCheck {
+
+    }
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+    @Test
+    public void checkTest() throws Exception{
+        String templatePath = "emailConfigurationTest/emailTemplates/appliedEmailTemplateTest.txt";
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+
+        setTestTemplateEmail(templatePath);
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+        MockHC mailSPHC = new MockHC();
+
+        HealthCheck.Result rlt = mailSPHC.check();
+        assertEquals(rlt.isHealthy(), true);
+        mailServer.stop();
+    }
+
+    @Test
+    public void checkWithWrongTORecipientsTest() throws Exception{
+        String templatePath = "emailConfigurationTest/emailTemplates/emailTemplateTestFehlerToRecipient.txt";
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+
+        setTestTemplateEmail(templatePath);
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+        MockHC mailSPHC = new MockHC();
+
+        HealthCheck.Result rlt = mailSPHC.check();
+        assertEquals(rlt.isHealthy(), false);
+        mailServer.stop();
+    }
+
+    @Test
+    public void checkWithWrongCCRecipientsTest() throws Exception{
+        String templatePath = "emailConfigurationTest/emailTemplates/emailTemplateTestFehlerCCRecipient.txt";
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+
+        setTestTemplateEmail(templatePath);
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+        MockHC mailSPHC = new MockHC();
+
+        HealthCheck.Result rlt = mailSPHC.check();
+        assertEquals(rlt.isHealthy(), false);
+        mailServer.stop();
+    }
+
+    @Test
+    public void checkWithoutCCRecipientsTest() throws Exception{
+        String templatePath = "emailConfigurationTest/emailTemplates/emailTemplateTestFehlerRecipientWithoutCC.txt";
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+
+        setTestTemplateEmail(templatePath);
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+        MockHC mailSPHC = new MockHC();
+
+        HealthCheck.Result rlt = mailSPHC.check();
+        assertEquals(rlt.isHealthy(), false);
+        mailServer.stop();
+    }
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setAppliedEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+
+    private PlannedGridMeasuresConfiguration.EmailConfiguration createEmailConfiguration() throws IOException {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emailConfiguration.setPort(EmailmanagerTest.port()+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/health/MailServerPresentHealthCheckTest.java b/src/test/java/org/eclipse/openk/health/MailServerPresentHealthCheckTest.java
new file mode 100644
index 0000000..92ecc14
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/health/MailServerPresentHealthCheckTest.java
@@ -0,0 +1,86 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+
+package org.eclipse.openk.health;
+
+import com.codahale.metrics.health.HealthCheck;
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.mail.EmailTemplatePaths;
+import org.eclipse.openk.core.controller.BackendConfig;
+import org.eclipse.openk.core.controller.EmailmanagerTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class MailServerPresentHealthCheckTest {
+
+    private static GreenMail mailServer;
+    String templatePath = "emailConfigurationTest/emailTemplates/closedEmailTemplateTest.txt";
+
+    class MockHC extends MailServerPresentHealthCheck {
+
+    }
+
+    @BeforeClass
+    public static void beforeAll() throws IOException {
+        ServerSetup setup = new ServerSetup(EmailmanagerTest.port() , "localhost", ServerSetup.PROTOCOL_SMTP);
+        setup.setServerStartupTimeout(3000);
+        mailServer = new GreenMail(setup);
+    }
+
+    @Before
+    public void prepareTests() throws Exception {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        // mock email-configuration
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = createEmailConfiguration();
+
+        setTestTemplateEmail(templatePath);
+        BackendConfig.getInstance().setEmailConfiguration(emailConfiguration);
+        mailServer.start();
+
+    }
+
+    @After
+    public void afterTest() {
+        mailServer.stop();
+    }
+
+    @Test
+    public void checkTest() throws Exception{
+        MockHC mailSPHC = new MockHC();
+
+        HealthCheck.Result rlt = mailSPHC.check();
+        assertEquals(rlt.isHealthy(), true);
+    }
+
+    private void setTestTemplateEmail(String templatePath) {
+        EmailTemplatePaths templatePaths = new EmailTemplatePaths();
+        templatePaths.setClosedEmailTemplate(templatePath);
+        BackendConfig.getInstance().setEmailTemplatePaths(templatePaths);
+    }
+
+    private PlannedGridMeasuresConfiguration.EmailConfiguration createEmailConfiguration() throws IOException {
+        PlannedGridMeasuresConfiguration.EmailConfiguration emailConfiguration = new PlannedGridMeasuresConfiguration.EmailConfiguration();
+        emailConfiguration.setPort(EmailmanagerTest.port()+"");
+        emailConfiguration.setSmtpHost("localhost");
+        emailConfiguration.setSender("testCaseSender@test.de");
+        return emailConfiguration;
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/resources/MasterDataResourceTest.java b/src/test/java/org/eclipse/openk/resources/MasterDataResourceTest.java
new file mode 100644
index 0000000..230b60b
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/resources/MasterDataResourceTest.java
@@ -0,0 +1,134 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.resources;
+
+import org.easymock.EasyMock;
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GmStatus;
+import org.eclipse.openk.api.UserSettings;
+import org.eclipse.openk.core.controller.MasterDataBackendController;
+import org.eclipse.openk.core.controller.TokenManager;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.ws.rs.core.Response;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNotNull;
+import static org.easymock.EasyMock.expect;
+
+public class MasterDataResourceTest {
+
+    GmStatus gmStatus = new GmStatus();
+
+    @Before
+    public void createGridMeasure() {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        TokenManager.getInstance();
+    }
+
+    @Test
+    public void testGetGmStatus() {
+        Response r = new MasterDataResource().getGmStatus("LET_ME_IN");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetBranches() {
+        Response r = new MasterDataResource().getBranches("LET_ME_IN");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetUserDepartments() {
+        Response r = new MasterDataResource().getUserDepartments("LET_ME_IN");
+        assertNotNull( r );
+    }
+    @Test
+    public void testGetBranchLevels() {
+        Response r = new MasterDataResource().getBranchLevels("LET_ME_IN");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetCostCenters() {
+        Response r = new MasterDataResource().getCostCenters("LET_ME_IN");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testStoreUserSettings_update() throws HttpStatusException{
+
+        UserSettings us = createUserSetting();
+
+        MasterDataBackendController bc = EasyMock.createMock(MasterDataBackendController.class);
+        expect(bc.storeUserSettings("Ulli User", us)).andReturn(us).anyTimes();
+
+        EasyMock.replay(bc);
+        EasyMock.verify(bc);
+
+        UserSettings us2 = bc.storeUserSettings("Ulli User", us);
+        assertEquals(us, us2);
+    }
+
+    @Test
+    public void testStoreUserSettings_create() throws HttpStatusException{
+
+        UserSettings us = createUserSetting();
+        UserSettings us2 = createUserSetting();
+
+        MasterDataBackendController bc = EasyMock.createMock(MasterDataBackendController.class);
+        expect(bc.storeUserSettings("Ulli User", us)).andReturn(us2).anyTimes();
+
+        EasyMock.replay(bc);
+        EasyMock.verify(bc);
+
+        UserSettings us3 = bc.storeUserSettings("Ulli User", us);
+    }
+
+    public UserSettings createUserSetting()
+    {
+        UserSettings userSetting = new UserSettings();
+        userSetting.setSettingType("yyy");
+        userSetting.setUsername("Ulli User");
+        userSetting.setValue("");
+
+        return userSetting;
+    }
+
+    @Test
+    public void testGetUserSettings() {
+        Response r = new MasterDataResource().getUserSettings("xxx", "LET_ME_IN");
+        assertNotNull( r );
+    }
+
+    /*@Test
+    public void testUploadDocuments() {
+        InputStream is = new InputStream() {
+            @Override
+            public int read() throws IOException {
+                return 0;
+            }
+        };
+        FormDataContentDisposition fdcd = null;
+        java.time.LocalDateTime ldtCreated = java.time.LocalDateTime.parse("2018-04-20T16:00:00");
+
+        try {
+            fdcd = new FormDataContentDisposition("header", "name", "boom.txt", ldtCreated, ldtCreated, ldtCreated, 4);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        Response r = new MasterDataResource().uploadGridMeasureAttachments("token", is, fdcd);
+        assertNotNull( r );
+    }*/
+}
diff --git a/src/test/java/org/eclipse/openk/resources/PlannedGridMeasureConfigurationTest.java b/src/test/java/org/eclipse/openk/resources/PlannedGridMeasureConfigurationTest.java
new file mode 100644
index 0000000..7363d9e
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/resources/PlannedGridMeasureConfigurationTest.java
@@ -0,0 +1,55 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ *     http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.resources;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.openk.PlannedGridMeasuresConfiguration;
+import org.junit.Test;
+
+public class PlannedGridMeasureConfigurationTest {
+
+    @Test
+    public void testGettersAndSetters() {
+
+        PlannedGridMeasuresConfiguration plannedGridMeasuresConfiguration = new PlannedGridMeasuresConfiguration();
+
+        PlannedGridMeasuresConfiguration.DBConnection dbConn = new PlannedGridMeasuresConfiguration.DBConnection();
+        dbConn.setUrl("url");
+        dbConn.setDriver("driver");
+        dbConn.setPassword("strong");
+        dbConn.setUser("rambo");
+
+        // test db connection
+        plannedGridMeasuresConfiguration.setDbConn(dbConn);
+        assertEquals(dbConn, plannedGridMeasuresConfiguration.getDbConn());
+
+        // test db properties
+        assertEquals("url", dbConn.getUrl());
+        assertEquals("driver", dbConn.getDriver());
+        assertEquals("strong", dbConn.getPassword());
+        assertEquals("rambo", dbConn.getUser());
+
+        // test persistencyUnit
+        plannedGridMeasuresConfiguration.setPersistencyUnit("planned-grid-measures");
+        assertEquals("planned-grid-measures", plannedGridMeasuresConfiguration.getPersistencyUnit());
+
+        // test PortalBaseURL
+        plannedGridMeasuresConfiguration.setPortalBaseURL("http://localhost:8080/portal/rest/beservice");
+        assertEquals("http://localhost:8080/portal/rest/beservice", plannedGridMeasuresConfiguration.getPortalBaseURL());
+
+        // test WhiteListDocumenttypes
+        plannedGridMeasuresConfiguration.setWhiteListDocumenttypes("doc xls");
+        assertEquals("doc xls", plannedGridMeasuresConfiguration.getWhiteListDocumenttypes());
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/resources/PlannedGridMeasuresResourcesTest.java b/src/test/java/org/eclipse/openk/resources/PlannedGridMeasuresResourcesTest.java
new file mode 100644
index 0000000..6872118
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/resources/PlannedGridMeasuresResourcesTest.java
@@ -0,0 +1,168 @@
+/*
+ * ***************************************************************************
+ *  Copyright © 2018 PTA GmbH.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *
+ *            http://www.eclipse.org/legal/epl-v10.html
+ *
+ * ***************************************************************************
+ */
+package org.eclipse.openk.resources;
+
+import org.eclipse.openk.TestUtils.BackendConfigTestHelper;
+import org.eclipse.openk.api.GridMeasure;
+import org.eclipse.openk.common.Globals;
+import org.eclipse.openk.core.controller.BaseWebService;
+import org.eclipse.openk.core.controller.TokenManager;
+import org.eclipse.openk.core.exceptions.HttpStatusException;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.ws.rs.core.Response;
+
+import static junit.framework.TestCase.assertNotNull;
+import static org.junit.Assert.assertEquals;
+
+public class PlannedGridMeasuresResourcesTest {
+
+    private String payloadNormalUser = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJodVl0eVByUEVLQ1phY3FfMW5sOGZscENETnFHdmZEZHctYUxGQXNoWHZVIn0.eyJqdGkiOiIwZGUyNTMyYi1mNTBkLTQxZTUtODQwYy1iNzZkOTYyZGM3MDYiLCJleHAiOjE1MjE2NDA0MTIsIm5iZiI6MCwiaWF0IjoxNTIxNjQwMTEyLCJpc3MiOiJodHRwOi8vZW50amF2YTAwMjo4MDgwL2F1dGgvcmVhbG1zL2Vsb2dib29rIiwiYXVkIjoiZWxvZ2Jvb2stYmFja2VuZCIsInN1YiI6ImMyZTlkN2FlLTJiZmEtNDU3OC1iMDllLWY1ZGM1ZjA5YTg3OSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVsb2dib29rLWJhY2tlbmQiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiJkOTE1MjY2MS03NTJlLTRiNmMtOWRiNi0wYjFmYzY3YTc4ZTciLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImVsb2dib29rLWFjY2VzcyIsImVsb2dib29rLW5vcm1hbHVzZXIiLCJ1bWFfYXV0aG9yaXphdGlvbiIsInBsYW5uZWQtcG9saWNpZXMtbm9ybWFsdXNlciJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInJvbGVzIjoiW3BsYW5uZWQtcG9saWNpZXMtbm9ybWFsdXNlciwgb2ZmbGluZV9hY2Nlc3MsIHVtYV9hdXRob3JpemF0aW9uLCBlbG9nYm9vay1hY2Nlc3MsIGVsb2dib29rLW5vcm1hbHVzZXJdIiwibmFtZSI6Ik90dG8gTm9ybWFsdmVyYnJhdWNoZXIiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJvdHRvIiwiZ2l2ZW5fbmFtZSI6Ik90dG8iLCJmYW1pbHlfbmFtZSI6Ik5vcm1hbHZlcmJyYXVjaGVyIn0.F-CcNatXaE0W4PhBNaSGUwddE_S05HqL6QuJLOWQo_n0_LdWGRw8iyF6RIbK8y06kH3gb79c6t1U0njWqE68pL9FQfP2t-_en-XlCwKzBdDXtq8e8xHyZ00P5zlE80du0A74qzh2g0HrE9fCgEaawk2_M6JxNFrToiwl6PGRS9RNRD_xgKVXn0XqG-I_qRKA-GdBTcLPjPD9bn4fAdlf3HWdVPUNclRI2ttUykFmpmRTAHKwI3cZOBrIMn4dasMn9k1xPP5IAGtCcgs6TF0YlnWvZgIhdT_5O4rmMtzZXjeuYsjpNnqz0LGA0GT6up90PZrTJF8rHtWU50wVgJSH9g";
+    GridMeasure gm = new GridMeasure();
+
+    @Before
+    public void createGridMeasure() {
+        BackendConfigTestHelper.initDefaultBackendConfig();
+        TokenManager.getInstance();
+
+        gm.setId(4);
+        gm.setTitle("title");
+        gm.setAffectedResource("ar");
+        gm.setStatusId(3);
+        gm.setDescriptiveId("4");
+        gm.setCreateUser("rambo");
+        gm.setCreateUserDepartment("oben");
+        gm.setRemark("a remark");
+    }
+
+    @Test
+    public void testGetVersionInfo() {
+        Response r = new PlannedGridMeasuresResource().getVersionInfo();
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetGridMeasures() {
+        Response r = new PlannedGridMeasuresResource().getGridMeasures("token", "");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testStoreGridMeasures() {
+        Response r = new PlannedGridMeasuresResource().storeGridMeasure("token", "");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetGridMeasureById() {
+        Response r = new PlannedGridMeasuresResource().getGridMeasure("token", "4");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetHistoricalStatusChangesById() {
+        Response r = new PlannedGridMeasuresResource().getHistoricalStatusChanges("token", "4");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetCurrentReminders() {
+        Response r = new PlannedGridMeasuresResource().getCurrentReminders("token");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testUploadGridMeasureAttachments() {
+        Response r = new PlannedGridMeasuresResource().uploadGridMeasureAttachments("token", "1", "{\n" +
+                "    \"id\": 7}");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetGridMeasureAttachments() {
+        Response r = new PlannedGridMeasuresResource().getGridMeasureAttachments("1", "token");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testDownloadGridMeasureAttachments() {
+        Response r = new PlannedGridMeasuresResource().downloadGridMeasureAttachment("1", "token");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testDeleteLock() {
+        Response r = new PlannedGridMeasuresResource().deleteLock("1", "GridMeasure", "token", Globals.FORCE_DELETE_LOCK);
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testCreateLock() {
+        Response r = new PlannedGridMeasuresResource().createLock("token", "{}");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testCheckLock() {
+        Response r = new PlannedGridMeasuresResource().checkLock("1", "test", "token");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void deleteGridMeasureAttechment() {
+        Response r = new PlannedGridMeasuresResource().deleteGridMeasureAttachment("1", "token");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetRoleAccessDefinition() {
+        Response r = new PlannedGridMeasuresResource().getRoleAccessDefinition("token");
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testLogout() {
+        Response r = new PlannedGridMeasuresResource().logout(null);
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testLET_ME_IN() throws HttpStatusException {
+        new PlannedGridMeasuresResource().assertAndRefreshToken("LET_ME_IN", BaseWebService.SecureType.NORMAL);
+        assertEquals("default_backdoor_user", new PlannedGridMeasuresResource().getUserFromToken("LET_ME_IN"));
+    }
+
+    @Test
+    public void testGetUserFromTokenNoramlToken() throws HttpStatusException {
+        assertEquals("otto", new PlannedGridMeasuresResource().getUserFromToken(payloadNormalUser));
+    }
+
+    @Test(expected = HttpStatusException.class)
+    public void testAssertAndRefreshTokenNoramlToken() throws HttpStatusException {
+        new PlannedGridMeasuresResource().assertAndRefreshToken(payloadNormalUser, BaseWebService.SecureType.NORMAL);
+    }
+
+
+    @Test
+    public void testGetAffectedResources() throws HttpStatusException {
+        Response r = new PlannedGridMeasuresResource().getAffectedResources("" );
+        assertNotNull( r );
+    }
+
+    @Test
+    public void testGetMailAddressesFromGridmeasures()  {
+        Response r = new PlannedGridMeasuresResource().getMailAddressesFromGridmeasures("LET_ME_IN");
+        assertNotNull( r );
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/viewmodel/ErrorReturnTest.java b/src/test/java/org/eclipse/openk/viewmodel/ErrorReturnTest.java
new file mode 100644
index 0000000..864b211
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/viewmodel/ErrorReturnTest.java
@@ -0,0 +1,39 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.viewmodel;
+
+import static org.eclipse.openk.common.JsonGeneratorBase.getGson;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+import org.eclipse.openk.core.viewmodel.ErrorReturn;
+import org.junit.Test;
+
+public class ErrorReturnTest extends ResourceLoaderBase {
+
+    @Test
+    public void TestStructureAgainstJson() {
+        String json = super.loadStringFromResource("testErrorReturn.json");
+        ErrorReturn errRet = getGson().fromJson(json, ErrorReturn.class);
+        assertFalse(errRet.getErrorText().isEmpty());
+        assertEquals(999, errRet.getErrorCode());
+    }
+
+    @Test
+    public void TestSetters() {
+        ErrorReturn errRet = new ErrorReturn();
+        errRet.setErrorCode(1);
+        errRet.setErrorText("bla bla");
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/viewmodel/GeneralReturnItemTest.java b/src/test/java/org/eclipse/openk/viewmodel/GeneralReturnItemTest.java
new file mode 100644
index 0000000..b866a5a
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/viewmodel/GeneralReturnItemTest.java
@@ -0,0 +1,43 @@
+/*
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+package org.eclipse.openk.viewmodel;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.openk.common.JsonGeneratorBase;
+import org.eclipse.openk.common.util.ResourceLoaderBase;
+import org.eclipse.openk.core.viewmodel.GeneralReturnItem;
+import org.junit.Test;
+
+public class GeneralReturnItemTest extends ResourceLoaderBase {
+	// IMPORTANT TEST!!!
+	// Make sure, our Interface produces a DEFINED Json!
+	// Changes in the interface will HOPEFULLY crash here!!!
+
+	@Test
+	public void TestStructureAgainstJson() {
+		String json = super.loadStringFromResource("testGeneralReturnItem.json");
+		GeneralReturnItem gRRet = JsonGeneratorBase.getGson().fromJson(json, GeneralReturnItem.class);
+		assertEquals("It works!", gRRet.getRet());
+	}
+
+	@Test
+	public void TestSetters() {
+		GeneralReturnItem gri = new GeneralReturnItem("firstStrike");
+		assertTrue("firstStrike".equals(gri.getRet()));
+		gri.setRet("Retour");
+		assertTrue("Retour".equals(gri.getRet()));
+
+	}
+
+}
diff --git a/src/test/resources/roleAccessConfiguration/role-access-definition.json b/src/test/resources/roleAccessConfiguration/role-access-definition.json
new file mode 100644
index 0000000..3bd3085
--- /dev/null
+++ b/src/test/resources/roleAccessConfiguration/role-access-definition.json
@@ -0,0 +1,651 @@
+{
+    "editRoles": [
+        {
+            "name": "planned-policies-measureapplicant",
+            "gridMeasureStatusIds": [
+                0
+            ]
+        },
+        {
+            "name": "planned-policies-measureplanner",
+            "gridMeasureStatusIds": [
+                1
+            ]
+        },
+        {
+            "name": "planned-policies-measureapprover",
+            "gridMeasureStatusIds": [
+                3
+            ]
+        },
+        {
+            "name": "planned-policies-requester",
+            "gridMeasureStatusIds": [
+                4
+            ]
+        },
+        {
+            "name": "planned-policies-clearance",
+            "gridMeasureStatusIds": [
+                5
+            ]
+        },
+        {
+            "name": "planned-policies-executor",
+            "gridMeasureStatusIds": [
+                6,
+                7,
+                8
+            ]
+        },
+        {
+            "name": "planned-policies-completion",
+            "gridMeasureStatusIds": [
+                9,
+                10
+            ]
+        }
+    ],
+    "controls": [
+        {
+            "gridMeasureStatusId": 0,
+            "activeButtons": [
+                "apply",
+                "save"
+            ],
+            "inactiveFields": [
+                "statusId",
+                "modUser",
+                "id",
+                "applicantControl"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 1,
+            "activeButtons": [
+                "cancel",
+                "[skipForApproval:false]forapproval",
+                "[skipForApproval:true]approved",
+                "save"
+            ],
+            "inactiveFields": [
+                "createUserDepartment",
+                "modUserDepartment",
+                "id",
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "goToGridMeasureDetailBtn"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 2,
+            "activeButtons": [],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "goToGridMeasureDetailBtn",
+                "file",
+                "fileUploadLabel",
+                "remark",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+
+            ]
+        },
+        {
+            "gridMeasureStatusId": 3,
+            "activeButtons": [
+                "save",
+                "cancel",
+                "reject",
+                "approve"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 4,
+            "activeButtons": [
+                "save",
+                "cancel",
+                "[endAfterApproved:false][skipRequesting:false]request",
+                "[endAfterApproved:false][skipRequesting:true]release",
+                "[endAfterApproved:true]close"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 5,
+            "activeButtons": [
+                "save",
+                "cancel",
+                "reject",
+                "release"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 6,
+            "activeButtons": [
+                "save",
+                "[endAfterReleased:false]activate",
+                "[endAfterReleased:true]close"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 7,
+            "activeButtons": [
+                "save",
+                "[skipInWork:false]inwork",
+                "[skipInWork:true]workfinish"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 8,
+            "activeButtons": [
+                "save",
+                 "workfinish"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 9,
+            "activeButtons": [
+                "save",
+                "finish"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 10,
+            "activeButtons": [
+                "save",
+                "close"
+            ],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 11,
+            "activeButtons": [],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "remark",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        },
+        {
+            "gridMeasureStatusId": 12,
+            "activeButtons": [],
+            "inactiveFields": [
+                "applicantControl",
+                "statusId",
+                "modUser",
+                "titleControl",
+                "affectedResourceControl",
+                "switchingObject",
+                "costCenter",
+                "responsibleOnSiteName",
+                "createUserDepartment",
+                "responsibleOnSiteDepartment",
+                "approvalBy",
+                "areaOfSwitching",
+                "appointmentRepetition",
+                "appointmentNumberOf",
+                "plannedStarttimeFirstSequence",
+                "plannedStarttimeFirstSinglemeasure",
+                "plannedEndtimeLastSinglemeasure",
+                "plannedEndtimeGridmeasure",
+                "starttimeFirstSequence",
+                "starttimeFirstSinglemeasure",
+                "endtimeLastSinglemeasure",
+                "endtimeGridmeasure",
+                "timeOfReallocation",
+                "appointmentStartdate",
+                "description",
+                "id",
+                "statusId",
+                "branch",
+                "level",
+                "modUser",
+                "modUserDepartment",
+                "removeglyphicon",
+                "selectedFileName",
+                "notSelectedFileName",
+                "file",
+                "fileUploadLabel",
+                "goToGridMeasureDetailBtn",
+                "remark",
+                "singleGMTitle",
+                "singleGMSwitchingObject",
+                "singleGMDescription",
+                "plannedStarttimeSinglemeasure",
+                "plannedEndtimeSinglemeasure"
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/plannedGridMeasures.backend_Test.txt b/src/test/resources/testCase.txt
similarity index 100%
rename from plannedGridMeasures.backend_Test.txt
rename to src/test/resources/testCase.txt
diff --git a/src/test/resources/testErrorReturn.json b/src/test/resources/testErrorReturn.json
new file mode 100644
index 0000000..f5540af
--- /dev/null
+++ b/src/test/resources/testErrorReturn.json
@@ -0,0 +1,4 @@
+{
+  "errorText": "TESTAT",
+  "errorCode": 999
+}
diff --git a/src/test/resources/testGeneralReturnItem.json b/src/test/resources/testGeneralReturnItem.json
new file mode 100644
index 0000000..34f9d39
--- /dev/null
+++ b/src/test/resources/testGeneralReturnItem.json
@@ -0,0 +1,3 @@
+{
+  "ret" : "It works!"
+}
\ No newline at end of file
diff --git a/src/test/resources/uploadTestFile.txt b/src/test/resources/uploadTestFile.txt
new file mode 100644
index 0000000..c7e057d
--- /dev/null
+++ b/src/test/resources/uploadTestFile.txt
@@ -0,0 +1 @@
+TestContent
\ No newline at end of file
diff --git a/templates/markdown.hbs b/templates/markdown.hbs
new file mode 100644
index 0000000..2a7e5cf
--- /dev/null
+++ b/templates/markdown.hbs
@@ -0,0 +1,107 @@
+#{{#info}}{{title}}
+
+
+## {{join schemes " | "}}://{{host}}{{basePath}}
+
+
+{{description}}
+
+{{#contact}}
+[**Contact the developer**](mailto:{{email}})
+{{/contact}}
+
+**Version** {{version}}
+
+[**Terms of Service**]({{termsOfService}})
+
+{{#license}}[**{{name}}**]({{url}}){{/license}}
+
+{{/info}}
+
+{{#if consumes}}**Consumes:** {{join consumes ", "}}{{/if}}
+
+{{#if produces}}**Produces:** {{join produces ", "}}{{/if}}
+
+{{#if securityDefinitions}}
+# Security Definitions
+{{/if}}
+{{> security}}
+
+# APIs
+
+{{#each paths}}
+## {{@key}}
+{{#this}}
+{{#get}}
+### GET
+{{> operation}}
+{{/get}}
+
+{{#put}}
+### PUT
+{{> operation}}
+{{/put}}
+
+{{#post}}
+### POST
+
+{{> operation}}
+
+{{/post}}
+
+{{#delete}}
+### DELETE
+{{> operation}}
+{{/delete}}
+
+{{#option}}
+### OPTION
+{{> operation}}
+{{/option}}
+
+{{#patch}}
+### PATCH
+{{> operation}}
+{{/patch}}
+
+{{#head}}
+### HEAD
+{{> operation}}
+{{/head}}
+
+{{/this}}
+{{/each}}
+
+# Definitions
+{{#each definitions}}
+## <a name="/definitions/{{key}}">{{@key}}</a>
+
+<table border="1">
+    <tr>
+        <th>name</th>
+        <th>type</th>
+        <th>required</th>
+        <th>description</th>
+        <th>example</th>
+    </tr>
+    {{#each this.properties}}
+    <tr>
+        <td>{{@key}}</td>
+        <td>
+            {{#ifeq type "array"}}
+            {{#items.$ref}}
+            {{type}}[<a href="{{items.$ref}}">{{basename items.$ref}}</a>]
+            {{/items.$ref}}
+            {{^items.$ref}}{{type}}[{{items.type}}]{{/items.$ref}}
+            {{else}}
+            {{#$ref}}<a href="{{$ref}}">{{basename $ref}}</a>{{/$ref}}
+            {{^$ref}}{{type}}{{#format}} ({{format}}){{/format}}{{/$ref}}
+            {{/ifeq}}
+        </td>
+        <td>{{#required}}required{{/required}}{{^required}}optional{{/required}}</td>
+        <td>{{#description}}{{{description}}}{{/description}}{{^description}}-{{/description}}</td>
+        <td>{{example}}</td>
+    </tr>
+    {{/each}}
+</table>
+{{/each}}
\ No newline at end of file
diff --git a/templates/operation.hbs b/templates/operation.hbs
new file mode 100644
index 0000000..3ad3175
--- /dev/null
+++ b/templates/operation.hbs
@@ -0,0 +1,73 @@
+{{#deprecated}}-deprecated-{{/deprecated}}
+<a id="{{operationId}}">{{summary}}</a>
+
+{{description}}
+
+{{#if externalDocs.url}}{{externalDocs.description}}. [See external documents for more details]({{externalDocs.url}})
+{{/if}}
+
+{{#if security}}
+#### Security
+{{/if}}
+
+{{#security}}
+{{#each this}}
+* {{@key}}
+{{#this}}   * {{this}}
+{{/this}}
+{{/each}}
+{{/security}}
+
+#### Request
+
+{{#if consumes}}
+**Content-Type: ** {{join consumes ", "}}{{/if}}
+
+##### Parameters
+{{#if parameters}}
+<table border="1">
+    <tr>
+        <th>Name</th>
+        <th>Located in</th>
+        <th>Required</th>
+        <th>Description</th>
+        <th>Default</th>
+        <th>Schema</th>
+    </tr>
+    {{/if}}
+
+    {{#parameters}}
+    <tr>
+        <th>{{name}}</th>
+        <td>{{in}}</td>
+        <td>{{#if required}}yes{{else}}no{{/if}}</td>
+        <td>{{description}}{{#if pattern}} (**Pattern**: `{{pattern}}`){{/if}}</td>
+        <td> - </td>
+        {{#ifeq in "body"}}
+        <td>
+            {{#ifeq schema.type "array"}}Array[<a href="{{schema.items.$ref}}">{{basename schema.items.$ref}}</a>]{{/ifeq}}
+            {{#schema.$ref}}<a href="{{schema.$ref}}">{{basename schema.$ref}}</a> {{/schema.$ref}}
+        </td>
+        {{else}}
+        {{#ifeq type "array"}}
+        <td>Array[{{items.type}}] ({{collectionFormat}})</td>
+        {{else}}
+        <td>{{type}} {{#format}}({{format}}){{/format}}</td>
+        {{/ifeq}}
+        {{/ifeq}}
+    </tr>
+    {{/parameters}}
+    {{#if parameters}}
+</table>
+{{/if}}
+
+
+#### Response
+
+{{#if produces}}**Content-Type: ** {{join produces ", "}}{{/if}}
+
+
+| Status Code | Reason      | Response Model |
+|-------------|-------------|----------------|
+{{#each responses}}| {{@key}}    | {{description}} | {{#schema.$ref}}<a href="{{schema.$ref}}">{{basename schema.$ref}}</a>{{/schema.$ref}}{{#ifeq schema.type "array"}}Array[<a href="{{schema.items.$ref}}">{{basename schema.items.$ref}}</a>]{{/ifeq}}{{^schema}} - {{/schema}}|
+{{/each}}
\ No newline at end of file
diff --git a/templates/security.hbs b/templates/security.hbs
new file mode 100644
index 0000000..94badab
--- /dev/null
+++ b/templates/security.hbs
@@ -0,0 +1,88 @@
+{{#each securityDefinitions}}
+### {{@key}}
+{{#this}}
+{{#ifeq type "oauth2"}}
+<table>
+    <tr>
+        <th>type</th>
+        <th colspan="2">{{type}}</th>
+    </tr>
+    {{#if description}}
+    <tr>
+        <th>description</th>
+        <th colspan="2">{{description}}</th>
+    </tr>
+    {{/if}}
+    {{#if authorizationUrl}}
+    <tr>
+        <th>authorizationUrl</th>
+        <th colspan="2">{{authorizationUrl}}</th>
+    </tr>
+    {{/if}}
+    {{#if flow}}
+    <tr>
+        <th>flow</th>
+        <th colspan="2">{{flow}}</th>
+    </tr>
+    {{/if}}
+    {{#if tokenUrl}}
+    <tr>
+        <th>tokenUrl</th>
+        <th colspan="2">{{tokenUrl}}</th>
+    </tr>
+    {{/if}}
+    {{#if scopes}}
+    <tr>
+        <td rowspan="3">scopes</td>
+        {{#each scopes}}
+        <td>{{@key}}</td>
+        <td>{{this}}</td>
+    </tr>
+    <tr>
+        {{/each}}
+    </tr>
+    {{/if}}
+</table>
+{{/ifeq}}
+{{#ifeq type "apiKey"}}
+<table>
+    <tr>
+        <th>type</th>
+        <th colspan="2">{{type}}</th>
+    </tr>
+    {{#if description}}
+    <tr>
+        <th>description</th>
+        <th colspan="2">{{description}}</th>
+    </tr>
+    {{/if}}
+    {{#if name}}
+    <tr>
+        <th>name</th>
+        <th colspan="2">{{name}}</th>
+    </tr>
+    {{/if}}
+    {{#if in}}
+    <tr>
+        <th>in</th>
+        <th colspan="2">{{in}}</th>
+    </tr>
+    {{/if}}
+</table>
+{{/ifeq}}
+{{#ifeq type "basic"}}
+<table>
+    <tr>
+        <th>type</th>
+        <th colspan="2">{{type}}</th>
+    </tr>
+    {{#if description}}
+    <tr>
+        <th>description</th>
+        <th colspan="2">{{description}}</th>
+    </tr>
+    {{/if}}
+</table>
+{{/ifeq}}
+{{/this}}
+{{/each}}
\ No newline at end of file
diff --git a/templates/strapdown.html.hbs b/templates/strapdown.html.hbs
new file mode 100644
index 0000000..fd359ff
--- /dev/null
+++ b/templates/strapdown.html.hbs
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+<title>API Document</title>
+
+<xmp theme="united" style="display:none;">
+    {{>markdown}}
+</xmp>
+
+<script src="http://strapdownjs.com/v/0.2/strapdown.js"></script>
+</html>
\ No newline at end of file