Merge branch 'DEVELOP'
diff --git a/deploy/db/01_createRole.sql b/deploy/db/01_createRole.sql
new file mode 100644
index 0000000..ead66cf
--- /dev/null
+++ b/deploy/db/01_createRole.sql
@@ -0,0 +1,18 @@
+-----------------------------------------------------------------------------------
+-- *******************************************************************************
+-- * Copyright (c) 2019 Contributors to the Eclipse Foundation
+-- *
+-- * See the NOTICE file(s) distributed with this work for additional
+-- * information regarding copyright ownership.
+-- *
+-- * This program and the accompanying materials are made available under the
+-- * terms of the Eclipse Public License v. 2.0 which is available at
+-- * http://www.eclipse.org/legal/epl-2.0.
+-- *
+-- * SPDX-License-Identifier: EPL-2.0
+-- *******************************************************************************
+-----------------------------------------------------------------------------------
+
+CREATE ROLE CBD_SERVICE LOGIN
+NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
+ALTER ROLE CBD_SERVICE with password 'cbd_service';
\ No newline at end of file
diff --git a/deploy/db/02_create_tables_with_example_data.sql b/deploy/db/02_create_tables_with_example_data.sql
new file mode 100644
index 0000000..979a88e
--- /dev/null
+++ b/deploy/db/02_create_tables_with_example_data.sql
@@ -0,0 +1,710 @@
+-----------------------------------------------------------------------------------
+-- *******************************************************************************
+-- * Copyright (c) 2019 Contributors to the Eclipse Foundation
+-- *
+-- * See the NOTICE file(s) distributed with this work for additional
+-- * information regarding copyright ownership.
+-- *
+-- * This program and the accompanying materials are made available under the
+-- * terms of the Eclipse Public License v. 2.0 which is available at
+-- * http://www.eclipse.org/legal/epl-2.0.
+-- *
+-- * SPDX-License-Identifier: EPL-2.0
+-- *******************************************************************************
+-----------------------------------------------------------------------------------
+
+-- CREATE ROLE CBD_SERVICE LOGIN
+-- NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
+-- ALTER ROLE CBD_SERVICE with password 'cbd_service';
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.VERSION CASCADE;
+
+DROP TABLE IF EXISTS public.TBL_ADDRESS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_ADDRESS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_COMMUNICATION CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_COMMUNICATION_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_CONTACT_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_CONTACT_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_COMPANY CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_COMPANY_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_EXTERNAL_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_EXTERNAL_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_INTERNAL_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_INTERNAL_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_CONTACT CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_CONTACT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_ADDRESS_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_ADDRESS_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_PERSON_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_PERSON_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COMMUNICATION_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COMMUNICATION_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_SALUTATION CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_SALUTATION_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_ASSIGNMENT_MODUL_CONTACT CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_ASSIGNMENT_MODUL_CONTACT_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE VERSION
+-- ---------------------------------------------
+CREATE TABLE public.VERSION
+(
+  ID integer NOT NULL,
+  VERSION character varying(50) NOT NULL,
+  CONSTRAINT REF_VERSION_PKEY PRIMARY KEY (id)
+);
+
+ALTER TABLE public.VERSION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VERSION TO CBD_SERVICE;
+
+INSERT INTO public.VERSION (ID, VERSION) VALUES ( 1, '00-DEV' );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_CONTACT
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_contact_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_contact_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_CONTACT
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_contact_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  CONTACT_TYPE character varying(3),
+  NOTE character varying(255),
+  ANONYMIZED boolean,
+  CONSTRAINT TBL_CONTACT_PKEY PRIMARY KEY (ID)
+);
+
+
+
+ALTER TABLE public.TBL_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_CONTACT TO CBD_SERVICE;
+
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ae3f2ec1-ccc5-4269-a48f-dd40e37fa14e', 'COM', 'company 1 (id=1)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'fc7f598b-0d51-46bb-9563-99851fe6a3ad', 'COM', 'company 2 (id=2)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '556b91be-6d57-432f-93ed-65604dd6e5cd', 'C_P', 'contact person 1 (id=3)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '116380e3-25c5-4179-b40a-8abebe10fe07', 'C_P', 'contact person 2 (id=4)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '7782179b-fb79-4370-8f71-f4c71470d006', 'I_P', 'internal person 1 (id=5)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '8963aa38-d021-4dc9-bd70-d3734ccd20c4', 'I_P', 'internal person 2 (id=6)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'c862d604-5766-43d6-a7e8-a4bac2bd01e1', 'E_P', 'external person 1 (id=7)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'fa3d981b-a7d6-4965-a623-cdbc69404153', 'E_P', 'external person 2 (id=8)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ceba21e9-e685-483b-840e-ad167860a696', 'COM', 'anonymous company A (id=9)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '7889c814-9752-4e4e-a9fe-b46f36a38ccd', 'COM', 'anonymous company B (id=10)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '618a01a3-f348-44cc-9ddd-c9df946b0212', 'C_P', 'anoymous contact person A1 (id=11)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '4ed82474-3878-457a-baef-c28b8e486f25', 'C_P', 'anoymous contact persion A2 (id=12)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '8fe41b90-d10c-4a70-8fde-0990286ad3c6', 'I_P', 'internal person 3 (id=13)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ab804610-d6a4-4803-a4a1-3f6cb742b2a4', 'I_P', 'internal person 4 (id=14)', null );
+
+
+CREATE UNIQUE INDEX idx_tbl_contact_contact_type ON public.TBL_CONTACT  ( ID ASC );
+CREATE UNIQUE INDEX idx_cntct_uuid ON public.TBL_CONTACT (UUID);
+CREATE INDEX idx_cntct_anonym ON public.TBL_CONTACT (ANONYMIZED);
+
+
+-- ---------------------------------------------
+-- TABLE REF_ADDRESS_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_address_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_address_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_ADDRESS_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_address_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_ADDRESS_TYPE_PKEY PRIMARY KEY (ID)
+);
+
+ALTER TABLE public.REF_ADDRESS_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_ADDRESS_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_address_type_uuid ON public.REF_ADDRESS_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '3802e681-9396-434e-b19c-5fedcec40ba7', 'Geschäftsadresse', 'Adresse des Hauptfirmensitzes' );
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( 'f43ed6ac-9e7a-40f6-acc9-ec6b73eebf79', 'Privatadresse', 'private Anschrift' );
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '70fd0811-f674-4f3a-96a7-7ae29fc95188', 'Lieferadresse', 'Adresse für Lieferungen' );
+
+
+-- ---------------------------------------------
+-- TABLE REF_PERSON_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_person_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_person_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_PERSON_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_person_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_PERSON_TYPE_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_PERSON_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_PERSON_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_person_type_uuid ON public.REF_PERSON_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '47ce68b7-6d44-453e-b421-19020fd791b5', 'Rechtsanwalt', '' );
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( 'a7522c72-14d0-4e9d-afe3-bfcb3ffbec10', 'Geschäftsführer', '' );
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '2eb4885e-7363-4918-90ed-b7d5d84cfd3f', 'Rechnungsempfänger', 'Person, der Rechnungen zukommen' );
+
+
+-- ---------------------------------------------
+-- TABLE REF_COMMUNICATION_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_communication_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_communication_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_COMMUNICATION_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_communication_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  TYPE_EMAIL boolean,
+  CONSTRAINT REF_COMMUNICATION_TYPE_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_COMMUNICATION_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_COMMUNICATION_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_communication_type_uuid ON public.REF_COMMUNICATION_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '4757ca3a-72c2-4f13-a2f6-ce092e3eadf4', 'E-Mail', 'E-Mail Adresse', true );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '77028572-ff57-4c1d-999a-78fa3fcbc1cd', 'Festnetz', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( 'f7d5b343-00c2-4d7f-8e03-009aad3d90f7', 'Mobil', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '2bfe40f9-c4eb-4d2e-855f-6b0883912846', 'Fax', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( 'd00d1a61-c8e7-43b2-959f-66e986731441', 'WhatsApp', '', false );
+
+-- ---------------------------------------------
+-- TABLE REF_SALUTATION
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_salutation_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_salutation_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_SALUTATION
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_salutation_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_SALUTATION_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_SALUTATION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_SALUTATION TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_salutation_uuid ON public.REF_SALUTATION ( UUID ASC );
+
+INSERT INTO public.REF_SALUTATION (UUID, TYPE, DESCRIPTION) VALUES ( '90119f18-5562-425d-9a36-3dd58ea125e5', 'Herr', 'Anrede männlich' );
+INSERT INTO public.REF_SALUTATION (UUID, TYPE, DESCRIPTION) VALUES ( '4e873baa-e4f5-4585-8b16-2db8fac66538', 'Frau', 'Anrede weiblich' );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_ADDRESS
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_address_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_address_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_ADDRESS
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_address_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_ADDRESS_TYPE bigint,
+  IS_MAIN_ADDRESS boolean,
+  POSTCODE character varying(30),
+  COMMUNITY character varying(255),
+  COMMUNITY_SUFFIX character varying(255),
+  STREET character varying(255),
+  HOUSENUMBER character varying(30),
+  WGS_84_ZONE character varying(255),
+  LATITUDE character varying(255),
+  LONGITUDE character varying(255),
+  URL_MAP character varying(255),
+  NOTE character varying(255),
+
+  CONSTRAINT TBL_ADDRESS_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_ADDRESS__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_ADDRESS__ADDRESS_TYPE_ID_FKEY FOREIGN KEY (FK_ADDRESS_TYPE)
+       REFERENCES public.REF_ADDRESS_TYPE (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_ADDRESS
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_ADDRESS TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_address_uuid ON public.TBL_ADDRESS ( UUID ASC );
+
+INSERT INTO public.TBL_ADDRESS (UUID, FK_CONTACT_ID, FK_ADDRESS_TYPE, IS_MAIN_ADDRESS, POSTCODE, COMMUNITY, COMMUNITY_SUFFIX, STREET, HOUSENUMBER, WGS_84_ZONE, LATITUDE, LONGITUDE, URL_MAP, NOTE) VALUES ( '37e800fe-64f0-4834-8b83-8453cbb936a5', 2, 1, true, '12345', 'Heringsdorf','', 'Flunderweg', '5', '', '53 NL', '3 WB','www.xyz', 'nur über Seeweg erreichbar');
+INSERT INTO public.TBL_ADDRESS (UUID, FK_CONTACT_ID, FK_ADDRESS_TYPE, IS_MAIN_ADDRESS, POSTCODE, COMMUNITY, COMMUNITY_SUFFIX, STREET, HOUSENUMBER, WGS_84_ZONE, LATITUDE, LONGITUDE, URL_MAP, NOTE) VALUES ( '8a1202ae-2532-474e-8367-a1f0e13e9fbd', 1, 2, false, '67890', 'Stralsund','', 'Schollendamm', '18', '', '53 N', '2 WB','www.xyz', 'Hochwassergefahr');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_COMMUNICATION
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_communication_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_communication_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_COMMUNICATION
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_communication_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_COMMUNICATION_TYPE bigint,
+  COMMUNICATION_DATA character varying(1024),
+  NOTE character varying(255),
+
+  CONSTRAINT TBL_COMMUNICATION_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_COMMUNICATION__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_COMMUNICATION__COMMUNICATION_TYPE_ID_FKEY FOREIGN KEY (FK_COMMUNICATION_TYPE)
+       REFERENCES public.REF_COMMUNICATION_TYPE (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_COMMUNICATION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_COMMUNICATION TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_communication_uuid ON public.TBL_COMMUNICATION ( UUID ASC );
+
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '25f6d7cc-b168-4dd5-a36d-6f14b2f956e9', 2, 2, 'bitte melden Sie sich bei uns', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'a5fa380e-8f33-4ea7-9416-e03d11b91cae', 1, 3, 'bitte melden zwecks Terminabstimmung', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'c0dcef80-ca07-48b7-a3ed-2c99c4388928', 1, 1, 'info@bigbang.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'd19d9e10-d2dd-4383-84ec-2fe96421c0a3', 2, 1, 'info@pharmapeekltd.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '234b63e4-d8db-48ab-899f-0320903c01af', 3, 1, 'reinbold.tab@pharmapeek.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '11e25c02-de00-430d-b6cd-f02f7c60e026', 5, 1, 'PaulineF@gmx.net', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '9ca29c3b-e189-4ce9-9401-15001c769627', 6, 1, 'mo@gmail.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '05505b1a-61df-45c0-b006-64165cbadfa2', 7, 1, 'MGruebelSport@fogger.mil', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'b52dabaf-d156-4fd0-a07c-510673112a15', 8, 1, 'Mini.osterbrink@yahoo.ie', 'Info...');
+
+-- ---------------------------------------------
+-- TABLE TBL_COMPANY
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_company_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_company_id_seq
+  OWNER TO CBD_SERVICE;
+
+
+CREATE TABLE public.TBL_COMPANY
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_company_id_seq'::regclass),
+  COMPANY_NAME character varying(255),
+  COMPANY_TYPE character varying(30),
+  HR_NUMBER character varying(255),
+  FK_CONTACT_ID bigint NOT NULL,
+  CONSTRAINT TBL_COMPANY_PKEY PRIMARY KEY (id),
+  CONSTRAINT TBL_COMPANY__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_COMPANY
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_COMPANY TO CBD_SERVICE;
+
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( 'BigBang Logistic', 'Logistik', '123', 1 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( 'Pharma Peek', 'Pharma', '345', 2 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( '***', '***', null, 9 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( '***', '***', null, 10 );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_CONTACT_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_contact_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_contact_person_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_CONTACT_PERSON
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_contact_person_id_seq'::regclass),
+  FIRST_NAME character varying(255),
+  LAST_NAME character varying(255),
+  TITLE character varying(255),
+  FK_SALUTATION_ID bigint,
+  FK_REF_PERSON_TYPE_ID bigint NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_COMPANY_ID bigint NOT NULL,
+  CONSTRAINT TBL_CONTACT_PERSON_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_CONTACT_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+      REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+           REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+           ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__COMPANY_ID_FKEY FOREIGN KEY (FK_COMPANY_ID)
+       REFERENCES public.TBL_COMPANY (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_CONTACT_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_CONTACT_PERSON TO CBD_SERVICE;
+
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( 'Tabea', 'Reinebold', 'Dr.', 2, 1, 3, 2);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( 'Jan', 'Wacker', '', 1, 1, 4, 2);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( '***', '***', null, null, null, 11, 3);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( '***', '***', null, null, null, 12, 2);
+
+-- ---------------------------------------------
+-- TABLE TBL_EXTERNAL_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_external_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_external_person_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_EXTERNAL_PERSON
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_external_person_id_seq'::regclass),
+  FIRST_NAME character varying(255),
+  LAST_NAME character varying(255),
+  TITLE character varying(255),
+  FK_SALUTATION_ID bigint,
+  FK_REF_PERSON_TYPE_ID bigint,
+  FK_CONTACT_ID bigint NOT NULL,
+  CONSTRAINT TBL_EXTERNAL_PERSON_PKEY PRIMARY KEY (id),
+  CONSTRAINT TBL_EXTERNAL_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+       REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_EXTERNAL_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+         REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_EXTERNAL_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+           REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+           ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_EXTERNAL_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_EXTERNAL_PERSON TO CBD_SERVICE;
+
+INSERT INTO public.TBL_EXTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID) VALUES ( 'Monica', 'Grübel', 'Dipl.-Sportlehrerin', 2, 1, 7);
+INSERT INTO public.TBL_EXTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID) VALUES ( 'Maurice', 'Fürstenberg', 'B.A.', 2, 2, 8);
+
+
+-- ---------------------------------------------
+-- TABLE TBL_INTERNAL_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_internal_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_internal_person_id_seq
+  OWNER TO CBD_SERVICE;
+CREATE TABLE public.TBL_INTERNAL_PERSON
+(
+   ID bigint NOT NULL DEFAULT nextval('tbl_internal_person_id_seq'::regclass),
+   FIRST_NAME character varying(255),
+   LAST_NAME character varying(255),
+   TITLE character varying(255),
+   FK_SALUTATION_ID bigint,
+   FK_REF_PERSON_TYPE_ID bigint,
+   DEPARTMENT character varying(255),
+   UID character varying(255),
+   USER_REF character varying(255),
+   FK_CONTACT_ID bigint NOT NULL,
+   CONSTRAINT TBL_INTERNAL_PERSON_PKEY PRIMARY KEY (ID),
+   CONSTRAINT TBL_INTERNAL_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+   CONSTRAINT TBL_INTERNAL_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+         REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION,
+   CONSTRAINT TBL_INTERNAL_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+         REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_INTERNAL_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_INTERNAL_PERSON TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_internal_person_uid ON public.TBL_INTERNAL_PERSON ( UID ASC );
+CREATE UNIQUE INDEX idx_tbl_internal_person_user_ref ON public.TBL_INTERNAL_PERSON ( USER_REF ASC );
+
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Pauline', 'Freudenberg', 'B.Sc.', 1, 1,'Abteilung Rechnungsstellung', '66cd78c3-6716-4ab3-b834-a199fc796b88', 'PFREUD',  5);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Bernhardt', 'Iffland', '', 2, 2,'Kreativ', '4124e4e7-3488-4492-bf39-75e6a23a1c1a', 'BIFFL', 6);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Horatio', 'Hornblower', 'Capt.', 1, 2,'Royal Navy', 'hhornblo', 'HORNB', 13);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Cornelius', 'Buckley', '', 1, 2,'Royal Navy', null, 'BUCKC', 14);
+-- ---------------------------------------------
+-- TABLE TBL_ASSIGNMENT_MODUL_CONTACT
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_assignment_modul_contact_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_assignment_modul_contact_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_ASSIGNMENT_MODUL_CONTACT
+(
+  id bigint NOT NULL DEFAULT nextval('tbl_assignment_modul_contact_id_seq'::regclass),
+  uuid uuid NOT NULL,
+  fk_contact_id bigint NOT NULL,
+  modul_name character varying(255),
+  assignment_date timestamp,
+  expiring_date timestamp,
+  deletion_lock_until timestamp,
+  assignment_note character varying(2048),
+  CONSTRAINT tbl_assignment_modul_contact_pkey PRIMARY KEY (id),
+  CONSTRAINT tbl_assignment_modul_contact_id_fkey FOREIGN KEY (fk_contact_id)
+      REFERENCES public.tbl_contact (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_assignment_modul_contact
+  OWNER TO cbd_service;
+GRANT ALL ON TABLE public.tbl_assignment_modul_contact TO cbd_service;
+
+INSERT INTO public.tbl_assignment_modul_contact(uuid, fk_contact_id, modul_name, assignment_date, expiring_date, deletion_lock_until, assignment_note) VALUES ( 'dfc2979c-40e3-11ea-b77f-2e728ce88125', 1, 'Betriebstagebuch', '2020-01-19 10:23:54', '2021-01-19 00:00:00', '2021-01-19 00:00:00', 'seit Januar zugeordnet');
+INSERT INTO public.tbl_assignment_modul_contact(uuid, fk_contact_id, modul_name, assignment_date, expiring_date, deletion_lock_until, assignment_note) VALUES ( '4009bce2-40e5-11ea-b77f-2e728ce88125', 1, 'Störinfos', '2020-02-27 10:23:54', '2019-02-27 00:00:00', '2019-02-27 00:00:00', 'seit Februar zugeordnet');
+
+-- -------------------------------------
+-- VIEWS -------------------------------
+-- -------------------------------------
+DROP VIEW IF EXISTS VW_GENERAL_CONTACT CASCADE;
+
+CREATE VIEW VW_GENERAL_CONTACT
+AS
+SELECT g.id,
+	c.uuid,
+	g.name,
+	c.contact_type,
+	g.fk_contact_id,
+	g.company_name,
+	g.company_type,
+	g.company_id,
+	g.fk_salutation_id,
+	g.fk_ref_person_type_id,
+	g.title,
+	g.first_name,
+	g.last_name,
+	g.department,
+	c.note,
+	c.anonymized
+FROM tbl_contact c
+INNER JOIN (
+
+SELECT company.id,
+	company_name as name,
+	fk_contact_id,
+	company_name,
+	company_type,
+	cntct.uuid as company_id,
+	null as fk_salutation_id,
+	null as fk_ref_person_type_id,
+	null as title,
+	null as first_name,
+	null as last_name,
+	null as department
+FROM tbl_company company
+INNER JOIN tbl_contact cntct ON company.fk_contact_id = cntct.id
+
+UNION
+
+SELECT p.id,
+	COALESCE(p.last_name, '')
+	|| CASE WHEN COALESCE(p.last_name, '') <> '' AND COALESCE(p.first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(p.first_name,'') || ' [' || COALESCE(c.company_name, '') || ']' as name,
+	p.fk_contact_id,
+	c.company_name,
+	c.company_type,
+	company_contact.uuid as company_id,
+	p.fk_salutation_id,
+	p.fk_ref_person_type_id,
+	p.title,
+	p.first_name,
+	p.last_name,
+	null as department
+FROM tbl_contact_person p
+INNER JOIN tbl_company c ON c.id = p.fk_company_id
+INNER JOIN tbl_contact company_contact ON c.fk_contact_id = company_contact.id
+
+UNION
+
+SELECT id,
+	COALESCE(last_name, '')
+	|| CASE WHEN COALESCE(last_name, '') <> '' AND COALESCE(first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(first_name, '') as name,
+	fk_contact_id,
+	null as company_name,
+	null as company_type,
+	null as company_id,
+	fk_salutation_id,
+	fk_ref_person_type_id,
+	title,
+	first_name,
+	last_name,
+	department
+FROM tbl_internal_person
+
+UNION
+
+SELECT id,
+	COALESCE(last_name, '')
+	|| CASE WHEN COALESCE(last_name, '') <> '' AND COALESCE(first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(first_name, '') as name,
+	fk_contact_id,
+	null as company_name,
+	null as company_type,
+	null as company_id,
+	fk_salutation_id,
+	fk_ref_person_type_id,
+	title,
+	first_name,
+	last_name,
+	null as department
+FROM tbl_external_person
+	) g
+ON g.fk_contact_id = c.ID;
+
+ALTER VIEW public.VW_GENERAL_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VW_GENERAL_CONTACT TO CBD_SERVICE;
+
+
+DROP VIEW IF EXISTS VW_DETAILED_CONTACT;
+
+CREATE VIEW VW_DETAILED_CONTACT
+AS
+SELECT c.id,
+    c.uuid,
+	c.name,
+	c.contact_type,
+	c.fk_contact_id,
+	c.company_name,
+	c.company_type,
+	c.company_id,
+	c.anonymized,
+	s.uuid as salutation_uuid,
+	t.uuid as person_type_uuid,
+	c.title,
+	c.first_name,
+	c.last_name,
+	c.department,
+	c.note,
+	s.type as salutation_type,
+	t.type as person_type,
+	COALESCE(a.community, '') ||
+	        CASE WHEN COALESCE(a.street, '') || COALESCE(a.housenumber, '') = '' THEN '' ELSE ', ' END ||
+	        COALESCE(a.street, '') ||
+	        CASE WHEN COALESCE(a.housenumber, '') = '' THEN '' ELSE ' ' END ||
+	        COALESCE(a.housenumber, '') as main_address,
+	com.communication_data as email,
+
+	UPPER(
+        COALESCE(c.name, '') || '|@|'
+        || COALESCE(company_name, '') || '|@|'
+        || COALESCE(c.company_type, '') || '|@|'
+        || COALESCE(c.title, '') || '|@|'
+        || COALESCE(c.first_name, '') || '|@|'
+        || COALESCE(c.last_name, '') || '|@|'
+        || COALESCE(c.department, '') || '|@|'
+        || COALESCE(c.note, '') || '|@|'
+        || COALESCE(s.type, '') || '|@|'
+        || COALESCE(t.type, '') || '|@|'
+        || COALESCE(a.street, '') || '|@|'
+        || COALESCE(a.housenumber, '') || '|@|'
+        || COALESCE(a.community, '') || '|@|'
+        || COALESCE(com.communication_data, '')
+    )as searchfield
+FROM VW_GENERAL_CONTACT c
+LEFT OUTER JOIN ref_salutation s ON c.fk_salutation_id = s.id
+LEFT OUTER JOIN tbl_address a ON a.fk_contact_id = c.fk_contact_id and is_main_address = true
+LEFT OUTER JOIN ref_person_type t ON c.fk_ref_person_type_id = t.id
+LEFT OUTER JOIN tbl_communication com ON (com.fk_contact_id = c.fk_contact_id AND com.fk_communication_type =
+    (SELECT ct.id FROM ref_communication_type ct WHERE ct.type_email = true)) ;
+
+ALTER VIEW public.VW_DETAILED_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VW_DETAILED_CONTACT TO CBD_SERVICE;
+
+
+
+
diff --git a/deploy/db/03_clean_example_data.sql b/deploy/db/03_clean_example_data.sql
new file mode 100644
index 0000000..3aa0414
--- /dev/null
+++ b/deploy/db/03_clean_example_data.sql
@@ -0,0 +1,23 @@
+-----------------------------------------------------------------------------------
+-- *******************************************************************************
+-- * Copyright (c) 2019 Contributors to the Eclipse Foundation
+-- *
+-- * See the NOTICE file(s) distributed with this work for additional
+-- * information regarding copyright ownership.
+-- *
+-- * This program and the accompanying materials are made available under the
+-- * terms of the Eclipse Public License v. 2.0 which is available at
+-- * http://www.eclipse.org/legal/epl-2.0.
+-- *
+-- * SPDX-License-Identifier: EPL-2.0
+-- *******************************************************************************
+-----------------------------------------------------------------------------------
+
+DELETE FROM tbl_communication;
+DELETE FROM tbl_assignment_modul_contact;
+DELETE FROM tbl_address;
+DELETE FROM tbl_contact_person;
+DELETE FROM tbl_external_person;
+DELETE FROM tbl_internal_person;
+DELETE FROM tbl_company;
+DELETE FROM tbl_contact;
\ No newline at end of file
diff --git a/deploy/get_started.txt b/deploy/get_started.txt
new file mode 100644
index 0000000..389bd68
--- /dev/null
+++ b/deploy/get_started.txt
@@ -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
+*
+******************************************************************************
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+GET STARTED
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+
+**********************************************************************
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *
+PLEASE BE SURE THAT YOU HAVE FIRST PORTAL INSTALLED AND CONFIGURED ! *
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *
+**********************************************************************
+
+
+---------------- REQUIREMENTS -------------
+* Java 1.8
+* Apache Maven 3.6.1
+* Graphviz
+
+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.6.1 from
+        https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.1/
+- 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 ---------------------
+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 https://www.graphviz.org/download/
+* If not already done, set the PATH variable
+
+ Value of variable: <GRAPHVIZ_DIR>\bin
+
+-------------------- 4 ---------------------
+To get started with the project you have to clone contactBaseData backend and frontend projects.
+
+Backend <project_url>: https://git.eclipse.org/r/openk-coremodules/org.eclipse.openk-coremodules.contactBaseData.backend
+Frontend <project_url>: https://git.eclipse.org/r/openk-coremodules/org.eclipse.openk-coremodules.contactBaseData.frontend
+
+- 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>
+
+Developing only:
+- 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       |
+Frontend -> DEVELOP      |
+-------------------------|
+Stable Branches: master  |
+--------------------------
+
+
+-------------------- 5 ---------------------
+Build the maven project
+
+Building the maven project, will produce a <project_name>.jar file, 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
+
+-------------------- 6 ---------------------
+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
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+NEXT STEP -> READ THE howtoBuild FILE             !
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
\ No newline at end of file
diff --git a/deploy/keycloak/addKeycloakUsersCDB.sh b/deploy/keycloak/addKeycloakUsersCDB.sh
new file mode 100644
index 0000000..b2618ae
--- /dev/null
+++ b/deploy/keycloak/addKeycloakUsersCDB.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+echo ------- Login Keycloak -------
+sh kcadm.sh config credentials --server http://localhost:8380/auth --realm master --user admin --password admin
+realmVar="OpenKRealm"
+# ***************** CREATING NEW USER *****************
+usernameVar="finia_r"
+echo ------- Creating User: $usernameVar -------
+sh kcadm.sh create users -s username=$usernameVar -s firstName=Finia -s lastName=Reader  -s enabled=true -r $realmVar
+sh kcadm.sh set-password -r $realmVar --username $usernameVar --new-password $usernameVar
+echo pwd set
+sh kcadm.sh add-roles --uusername $usernameVar --rolename kon-access --rolename kon-reader -r $realmVar
+echo roles set
+# ***************** CREATING NEW USER *****************
+usernameVar="emilia_w"
+echo ------- Creating User: $usernameVar -------
+sh kcadm.sh create users -s username=$usernameVar -s firstName=Emilia -s lastName=Writer  -s enabled=true -r $realmVar
+sh kcadm.sh set-password -r $realmVar --username $usernameVar --new-password $usernameVar
+echo pwd set
+sh kcadm.sh add-roles --uusername $usernameVar --rolename kon-access --rolename kon-writer -r $realmVar
+echo roles set
+# ***************** CREATING NEW USER *****************
+usernameVar="lea_a"
+echo ------- Creating User: $usernameVar -------
+sh kcadm.sh create users -s username=$usernameVar -s firstName=Lea -s lastName=Admin  -s enabled=true -r $realmVar
+sh kcadm.sh set-password -r $realmVar --username $usernameVar --new-password $usernameVar
+echo pwd set
+sh kcadm.sh add-roles --uusername $usernameVar --rolename kon-access --rolename kon-admin -r $realmVar
+echo roles set
+# ***************** CREATING NEW USER *****************
+usernameVar="leon_r"
+echo ------- Creating User: $usernameVar -------
+sh kcadm.sh create users -s username=$usernameVar -s firstName=Leon -s lastName=Reader  -s enabled=true -r $realmVar
+sh kcadm.sh set-password -r $realmVar --username $usernameVar --new-password $usernameVar
+echo pwd set
+sh kcadm.sh add-roles --uusername $usernameVar --rolename kon-access --rolename kon-reader -r $realmVar
+echo roles set
+# ***************** CREATING NEW USER *****************
+usernameVar="david_w"
+echo ------- Creating User: $usernameVar -------
+sh kcadm.sh create users -s username=$usernameVar -s firstName=David -s lastName=Writer  -s enabled=true -r $realmVar
+sh kcadm.sh set-password -r $realmVar --username $usernameVar --new-password $usernameVar
+echo pwd set
+sh kcadm.sh add-roles --uusername $usernameVar --rolename kon-access --rolename kon-writer -r $realmVar
+echo roles set
+# ***************** CREATING NEW USER *****************
+usernameVar="anton_a"
+echo ------- Creating User: $usernameVar -------
+sh kcadm.sh create users -s username=$usernameVar -s firstName=Anton -s lastName=Admin  -s enabled=true -r $realmVar
+sh kcadm.sh set-password -r $realmVar --username $usernameVar --new-password $usernameVar
+echo pwd set
+sh kcadm.sh add-roles --uusername $usernameVar --rolename kon-access --rolename kon-admin -r $realmVar
+echo roles set
+
+echo ------- Finished -------
diff --git a/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
index c826bb6..1ea0a84 100644
--- a/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
+++ b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
@@ -695,15 +695,15 @@
 
 ==== Deployment of the frontend
 
-See "deploymentSetup.pdf"
+See "howtoRun.pdf"
 
 ==== Deployment of the backend
 
-See "deploymentSetup.pdf"
+See "howtoRun.pdf"
 
 ==== Deployment of the database
 
-See "deploymentSetup.pdf"
+See "howtoRun.pdf"
 
 The component "Flyway" is used to make to distribute structural
 or content related changes to the database.
@@ -716,12 +716,11 @@
 
 ===== DB based configuration
 
-See "deploymentSetup.pdf"
+See "howtoRun.pdf"
 
 
 ===== Configuration of the contact base data backend
 
-
 The backend service is configured in the * .yaml files, which are located in the JAR file.
 
 This yml-file can be divided into different configuration profiles.
@@ -745,12 +744,23 @@
 * *ldap-sync*:
 ** *attribute-mapping*:
 *** [not changeable variable in contact base data modul]: [attribute field name in your LDAP to be mapped].
-Example: "fullname: cn"
+All possible mappings are:
+
+[source,yml]
+uid: uid
+fullname: cn
+lastname: sn
+firstname: givenname
+title: title
+mail: mail
+department: department
+telephone-number: phone
+
 ** *db-id-mapping*:
 *** *telephone-number-id*: the primary ID for "telephone number" row in table REF_COMMUNICATION_TYPE.
 (Default 1) If set to -1 ldapmapping is disable for "telephone number"
 *** *mail-id*: the primary ID for "mail" row in table REF_COMMUNICATION_TYPE.
-(Default 2) If set to -1 ldapmapping is disable for "telephone number"
+(Default 2) If set to -1 ldapmapping is disable for "mail"
 ** *scheduling*:
 *** *enabled*: (true or false) Switches LDAP synchronisation on/off
 *** *cron-expression*: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html[Cron Trigger Tutorial] +
diff --git a/src/main/asciidoc/deployment/deploymentSetup.adoc b/src/main/asciidoc/deployment/deploymentSetup.adoc
deleted file mode 100644
index 938eb27..0000000
--- a/src/main/asciidoc/deployment/deploymentSetup.adoc
+++ /dev/null
@@ -1,201 +0,0 @@
-////
-******************************************************************************
-* 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
-*
-******************************************************************************
-////
-= [ WIRD AUF KSM ANGEPASST NACH RÜCKSPRACHE IM Kontaktstammdaten: Sprint Review (26.02.2020) ] openKonsequenz - How to deploy the module "eLogbook@openK"
-Simon Reis <simon.reis@pta.de>
-:Date: 2020-02-25
-:Revision: 2
-:icons:
-:source-highlighter: highlightjs
-:highlightjs-theme: solarized_dark
-
-<<<
-
-== Deployment
-
-The elogbook application consists of 3 parts regarding the deployment.
-
-. Frontend: "elogbookFE"-Directory
-. Backend: "elogbook.war"
-. Database: The scripts are found in the "db" folder within the backend sources.
-
-=== 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. If you have built the frontend yourself then the content of the "dist"-folder
-within the Frontend development-directory has to be copied into the target-directory of the apache-tomcat.
-If you got the Frontend delivered in form of a archive (elogbookFE.zip) put *its content* into the
-target-directory "elogbookFE" of the apache-tomcat:
-
- <Apache-Tomcat>/webapps/elogbookFE
-
-If the target folder does not exist, it has to be created manually.
-
-==== Deployment of the backend
-The backend REST-services are built in form of a "WAR"-file (to be found
-in the "target"-directory of the MAVEN-directory structure or delivered to you).
-For deployment, this file has to be copied to the directory
-
- <Apache-Tomcat>/webapps
-
-==== Deployment of the database
-Currently there is no automatic mechanism for distributing structural
-or content related changes to the database.
-DB related changes are deployed using database scripts directly in suitable
-DB management applications like *pgAdminIII* or directly in the *postgres-console*.
-These script can be found in the backend project in the directory
-
- <elogbook backend project directory>/db/postgreSQL
-
-
-. If needed, create the Database and the access role "btbservice" with *"01_add_DB.sql"*
-. The script *"01a_drop_DB_1.0.0.sql"* is only needed for dropping all objects in the db!
-. Use the script *"02_create_DB_1.0.0.sql"* to create all database objects
-. You will probably need to modify the last script *"03_config_DB_1.0.0.sql"* before you run it. Configurate
-your branches, grid territories and your responsibilities here!
-
-TIP: If you want to install the system on an oracle dbms, please take the db scripts from
-the */db/oracle* subfolder.
-
-==== Configuration of the system
-
-===== DB based configuration
-
-. 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 backend configuration and to
-gain access to the database:
-
-.context.xml
-[source,xml]
-----
-[...]
-    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
-
-    <!--Manager pathname=""/>
-
-    <Parameter name="environment" override="false" value="Development"/-->
-
-    <Parameter name="OK_ELOGBOOK_ENVIRONMENT" override="false" value="Production"/>
-
-    <Resource name="jdbc/okBetriebstagebuchDS"
-              auth="Container"
-              type="javax.sql.DataSource"
-              driverClassName="org.postgresql.Driver"
-              url="jdbc:postgresql://{dbserver}:5432/{dbname}"
-              username="{dbuser}"
-              password="{dbpassword}"/>
-
-
-    <!-- Uncomment this to enable Comet connection tacking (provides events
-         on session expiration as well as webapp lifecycle) -->
-[...]
-----
-
-For oracle please use...
-
-.contextOracle.xml
-[source,xml]
-----
-[...]
-    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
-
-    <!--Manager pathname=""/>
-
-
-    <Parameter name="environment" override="false" value="Development"/-->
-
-    <!-- Parameter for different Backend configs  -->
-    <Parameter name="OK_ELOGBOOK_ENVIRONMENT" override="false" value="Production"/>
-
-    <Resource name="jdbc/okBetriebstagebuchDSO"
-              auth="Container"
-              type="javax.sql.DataSource"
-              driverClassName="oracle.jdbc.driver.OracleDriver"
-              url="jdbc:oracle:thin:@{orasvr}:1521:{dbname}"
-              username="{dbuser}"
-              password="{dbpassword}"/>
-
-
-    <!-- Uncomment this to enable Comet connection tacking (provides events
-         on session expiration as well as webapp lifecycle) -->
-[...]
-----
-
-*{dbserver}*, *{dbname}*, *{dbuser}* and *{dbpassword}* need to be replaced by the actual values.
-
-CAUTION: The postgres database drivers (postgresql-42.0.0.jar or ojdbc7_g.jar} referenced in the *context.xml* needs to be copied from the lib folder within the
-backend source files to the *<TOMCAT>/lib* folder of the target tomcat installation.
-
-(The jar is located in *deploy/lib/*)
-
-CAUTION: If you want to use an oracle db then you have to change
-the file backendConfigProduction: Set "activePersistencyUnit" to "betriebstagebuchORA".
-(see next chapter "Configuration of the backend").
-
-
-===== Configuration of the backend
-
-After the backend war file has been deployed and unpacked inside of the *<TOMCAT>/webapps* folder there are different
- backend config files to be found in the folder *<TOMCAT>/webapps/elogbook/WEB-INF/classes*
-
-* backendConfigCustom.json
-* backendConfigDevLocal.json
-* backendConfigDevServer.json
-* backendConfigProduction.json
-
-The active configuration is chosen by parameter *OK_ELOGBOOK_ENVIRONMENT* (see context.xml above).
-Possible values are:
-
-* *Custom* (for backendConfigCustom.json)
-* *DevLocal* (for backendConfigDevLocal.json)
-* *DevServer* (for backendConfigDevServer.json)
-* *Production* (for backendConfigProduction.json)
-
-After choosing an environment the corresponding json file has to be configured:
-
-.backendConfigXXX.json
-[source,json]
-----
-{
-  "portalBaseURL" : "http://{hostname}:{port}/portal/rest/beservice",
-  "fileRowToRead": "9",
-  "importFilesFolderPath": "/home/btbservice/importFiles",
-  "activePersistencyUnit": "betriebstagebuch",
-  "applicationAccessRole": "elogbook-access"
-}
-----
-* *portalBaseURL* - The portal base url should point the the address where the portal backend (the *Auth&Auth*-Server)
-                    can be accessed. This is important for the authorization of the backend services.
-* *fileRowToRead* - Defines the line number inside the import-file of the relevant text line.
-* *importFilesFolderPath* - Defines the exchange directory for the import functionality
-* *activePersistencyUnit* - Defines the active part of the file persistenc.xml. Choose *"betriebstagebuchORA"* for the
-                    usage of OracleDB and *"betriebstagebuch"* to use PostgreSQL.
-* *applicationAccessRole* - Defines the role for which users are fetched (For the selection in shift-change-dialog).
-
-
-== 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)
-
-<<<
diff --git a/src/main/asciidoc/howto/howtoBuild.adoc b/src/main/asciidoc/howto/howtoBuild.adoc
index c43f27f..e92236c 100644
--- a/src/main/asciidoc/howto/howtoBuild.adoc
+++ b/src/main/asciidoc/howto/howtoBuild.adoc
@@ -1,5 +1,5 @@
-= [ WIRD AUF KSM ANGEPASST NACH RÜCKSPRACHE IM Kontaktstammdaten: Sprint Review (26.02.2020) ] openKonsequenz - How to build the module "eLogbook@openK"
-:Date: 2017-11-17
+= openKonsequenz - How to build the module "Contact Base Data"
+:Date: 2020-02-28
 :Revision: 1
 :icons:
 :source-highlighter: highlightjs
@@ -10,45 +10,12 @@
 IMPORTANT: Please be sure that you have first *Portal (Auth n Auth)* installed and configured!
 
 == Requirements
-* Apache Tomcat 8.0.30
-* Node.js 6.10.0
+* Node.js 12.14.1
 * 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 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.
-
-* Download Tomcat version 8.0.30 from https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.30/bin/
-and extract it (apache-tomcat-8-0-30.zip).
-* Place the extracted folder on your C drive.
-* Configure Tomcat:
-** 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.
-** To run both backend projects (elogbook and portal) at the same time on Tomcat you have to
- give him the parameters for different backend configs. Just paste the following line in the *context.xml* over the *<Resource … >*:
-
- <Parameter name="OK_ELOGBOOK_ENVIRONMENT" override="false" value="DevLocal"/>
-
-** Dont forget to save it.
-
-
-TIP: For more informations check *Deployment View* Chapter in *http://87.128.212.254:8880/elogbookFE_ADoc/elogbook_architectureDocumentation.html[elogbook_architectureDocumentation]*.
-
-** Tomcat also needs the database driver to be placed in `<tomcat>/lib`. Find it in the project file `deploy/lib/`*postgresql-xxx.jar*.
-
-
-=== 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 Backend is described in `/deploy/`*get_started.txt*. Since you are reading this file you have most likely already
+have build the backend succesfully.
 
 == How to build the Frontend
 
@@ -56,10 +23,10 @@
 
 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.0 from https://nodejs.org/download/release/v6.10.0/ by clicking on a xxx.msi image for windows.
+* Download Node.js 12.14.1 from https://nodejs.org/download/release/v12.14.1/ 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
+* To ensure Node.js has been installed, run the following in your terminal - you should get something like v12.14.1
 
 [source,command]
 ----
@@ -85,7 +52,19 @@
 ----
 {blank}
 
-TIP: Next Step -> Read the *elogbook_howtoRun* file!
+=== Building the Frontend
+
+* Open a command line and navigate to the root folder of the frontend project
+* Run the following commands:
+
+[source,command]
+----
+    $ npm run build
+----
+{blank}
+
+
+TIP: Next Step -> Read the *howtoRun* file!
 
 
 
diff --git a/src/main/asciidoc/howto/howtoRun.adoc b/src/main/asciidoc/howto/howtoRun.adoc
index 2c14dbd..c703116 100644
--- a/src/main/asciidoc/howto/howtoRun.adoc
+++ b/src/main/asciidoc/howto/howtoRun.adoc
@@ -1,5 +1,5 @@
-= [ WIRD AUF KSM ANGEPASST NACH RÜCKSPRACHE IM Kontaktstammdaten: Sprint Review (26.02.2020) ] openKonsequenz - How to run the module "eLogbook@openK"
-:Date: 2017-11-17
+= openKonsequenz - How to run the module "Contact Base Data"
+:Date: 2020-02-28
 :Revision: 1
 :icons:
 :source-highlighter: highlightjs
@@ -10,79 +10,220 @@
 IMPORTANT: Please be sure that you have first *Portal (Auth n Auth)* installed and configured!
 
 == Requirements
-* Browser (Chrome or IE11 suggested)
+* Browser (Chrome or Firefox)
+* `contact-base-data.jar` file after a successfully maven build located in `<backend project root>/target`.
+See `get_started.txt`.
 
 == 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.
 
-* A developing and administrating software for databases
+== Configure Keycloak
+Login into your Keycloak Admin Console and add the following Roles:
 
-** To work with a postgreSQL database is pgAdmin suggested
+* kon-access
+* kon-admin
+* kon-reader
+* kon-writer
 
-*** Download and install pgAdmin (version 3 is used during developing process) from:
+* Option 1: Add/Edit users manually to/in Keycloak (see *Portal (Auth n Auth)* documents (not included here)) with the according roles.
+* Option 2: You can also use the  `deploy/keycloak/addKeycloakUsersCDB.sh` script to add users. Adjust the script accordingly.
+The script has to be copied and executed within the bin folder of the Keycloak installation `[keycloakRootFolder]/bin`.
+
+
+== 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.
+
+* Download Tomcat version 8.x.xx from https://archive.apache.org/dist/tomcat/tomcat-8/
+and extract it (apache-tomcat-8-x-xx.zip).
+* Place the extracted folder on your C drive.
+
+
+== Install and deploy the Database
+
+Use any software for databases which is compatible to postgreSQL, we suggest pgAdmin 3:
+
+. Download and install pgAdmin (version 3 is used during developing process) from:
         https://www.pgadmin.org/download/
-*** Create a database and adapt the `<tomcat>/conf/`*context.xml* file to your database (look at *elogbook_howtoBuild*).
+. Create a database example: `ContactBaseDataDbProd`
+. Create a Role with name `CBD_SERVICE` and a password. You can either use the script
+in  `<backend project root>/deploy/db/01_createRole.sql` (edit the password beforehand) or do it manually with pgAdmin.
+. Execute the sql script `<backend project root>/deploy/db/02_create_tables_with_example_data.sql`
 
-*** To initialize the database schema run the sql scripts:
-
- /db/postgreSQL/02_create_DB_1.0.0.sql
- /db/postgreSQL/03_config_DB_1.0.0.sql
-
-
-TIP: For detailed instructions look at *http://87.128.212.254:8880/elogbookFE_ADoc/elogbook_architectureDocumentation.html[elogbook_architectureDocumentation]*
+The Database is now ready to use and filled with some example data. If you want to clean the example data execute the sql script
+`<backend project root>/deploy/db/03_clean_example_data.sql`
 
 == How to run the Backend
-To run the backend you need to have installed and configured Apache Tomcat (look at *elogbook_howtoBuild*).
 
-=== Set up and start Apache Tomcat
-Tomcat needs the Web Application Archive (war) file, which is produced by building the maven project, to run the application.
+Put the `contact-base-data.jar` (see Requirements) in a folder of your choice.
+Copy the file `application.yml` from `<backend project root>/src/main/resources/application.yml` next to your `contact-base-data.jar`.
+Configure your copied `application.yml` according to your desired and mandatory settings. See next paragraph for an explanation of each
+option.
 
-* Copy the *betriebstagebuch.war* file from the project file `/target` in the `<tomcat>/webapps` file. If there is a folder named *betriebstagebuch*, delete it before.
-* Navigate to `C:\apache-tomcat-8.0.30\bin` and start Tomcat by clicking on *startup.bat*.
-* Tomcat's default port is *8080*.
+=== Configuration of the Contact Base Data Backend
 
-[source,text]
+The backend service is configured with the `application.yml` file.
+
+==== Profiles
+This yml-file can be divided into different configuration profiles.
+When starting the backend-service one has the possibility to specify
+the active profile with the -D flag (more on that later).
+If no active profile is selected the "Default" profile will be used.
+The "Default" profile starts at the beginning of the file and ends at the first "---".
+Profiles are divided by "---" and can be recognised by the keyword "spring: profiles: <profilename>".
+
+If a profile is missing a setting, it'll be taken from the "Default" profile.
+
+[source, txt]
 ----
-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).
+[...]
+
+---
+
+spring:
+profiles: test
+
+[...]
 ----
-{blank}
 
-IMPORTANT: If you change the part number you have also adapt the port in the
-frontend project: File "<PRJ_elogbookFE>/proxy.conf.json"
+==== Configuration Settings
+All possible configuration values located in the in application.yml and their explanation.
 
-TIP: Look at the *http://87.128.212.254:8880/elogbookFE_ADoc/elogbook_interfaceDocumentation.html[elogbook_interfaceDocumentation]* for informations about the services.
+* *spring*:
+** *datasource*: Section for the database connection
+*** url: jdbc:postgresql://serverdomain:port (default: 5432)/NameOfDatabase (Example: ContactBaseDataDbProd)
+*** username: cbd_service
+*** password: <password of cbd_service> see "Install and deploy the Database" point 3
+** *flyway*:
+*** *enabled*: (true or false) If enabled=true then the database migrations
+will be performed automatically when starting the application
+(this parameter should normally be set to "false")
+** *ldap*:
+*** *base*: The base LDAP path
+*** *port*: The LDAP server port
+*** *username*: Admin user of your LDAP
+*** *password*: Admin password
+*** *urls*: The URL of the LDAP server should be in the format ldap://myserver.example.com:10389.
+For SSL access, use the ldaps protocol and the appropriate port, e.g. ldaps://myserver.example.com:636
 
-== How to run the Frontend
-To run the frontend project you need to have installed and updated Node.js and npm Angular-CLI.
+* *ldap-sync*:
+** *db-id-mapping*:
+*** *telephone-number-id*: the primary ID for "telephone number" row in table REF_COMMUNICATION_TYPE.
+(Default: 1) If set to -1 ldapmapping is disable for "telephone number"
+*** *mail-id*: the primary ID for "mail" row in table REF_COMMUNICATION_TYPE.
+(Default: 2) If set to -1 ldapmapping is disable for "mail"
+** *scheduling*:
+*** *enabled*: (true or false) Switches LDAP synchronisation on/off
+*** *cron-expression*: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html[Cron Trigger Tutorial] +
+Spring Cron only takes 5 parameters not 6, the year is exlcuded! +
+Examples: '*/10 * * * * *' = every 10 seconds, '0 0 */3 ? * *' = every 3 hours, '0 0 0 * * ?' = every day at midnight.
+** *attribute-mapping*:
+*** [not changeable variable in contact base data modul]: [attribute field name in your LDAP to be mapped].All possible mappings are:
+[source,yml]
+----
+uid: uid
+fullname: cn
+lastname: sn
+firstname: givenname
+title: title
+mail: mail
+department: department
+telephone-number: phone
+----
 
-=== Compile the Frontend
+* *authnauth-sync*:
+** *attribute-mapping*:
+*** *lastname*:  (true or false) Switches AuthNAuth synchronisation of field Lastname on/off
+*** *firstname*:  (true or false) Switches AuthNAuth synchronisation of field Firstname on/off
+** *scheduling*:
+*** *enabled*: (true or false) Switches AuthNAuth synchronisation on/off
+*** *cron-expression*: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html[Cron Trigger Tutorial] +
+Spring Cron only takes 5 parameters not 6, the year is exlcuded! +
+Examples: '*/10 * * * * *' = every 10 seconds, '0 0 */3 ? * *' = every 3 hours, '0 0 0 * * ?' = every day at midnight.
+** *technical-username*: A technical user from the AuthNAuth modul doesn't have to be an admin
+** *technical-userpassword*: Technical user password
 
-To compile say Angular-CLI to start.
 
-* Open a command line and navigate to the root folder of the frontend project
-* Run the command
+* *server*:
+** *port*: (Default: 9155) Port which is used for this backend server
+** *max-http-header-size*: Maximum size for the http-headers
+
+* *jwt*:
+** *tokenHeader*: Name of the http-header which carries the authentication-token.
+(should be "Authorization")
+** *useStaticJwt*: If set to "true" then the backend will use *jwt.staticJwt*
+as Authorization-token. (This won't work for calls to other modules
+like the Auth'n'Auth-Modul, because the token will be out of date)
+* *services*:
+** *authNAuth*:
+*** *name*: authNAuthService
+
+* *authNAuthService*:
+** *ribbon*:
+*** *listOfServers*: Here one can configure the base
+URL to the Auth'n'Auth-service Example: http://entopkon:8880.
+The server where the Auth'n'Auth modul is installed.
+
+* *feign*:
+** *client*:
+*** *config*:
+**** *default*:
+***** *connectTimeout*: (Default: 60000) Connection timeout for the REST-Calls (in ms).
+***** *readTimeout*: (Default: 60000) Read timeout for the REST-Calls (in ms).
+
+* *cors*:
+** *corsEnabled*: (Default: false) (true or false) Cross-Origin Resource Sharing on/off
+
+=== Starting the Backend
+
+To execute the backend with the "Default" profile just run the command:
 
 [source,command]
 ----
-   $  npm start
+    $ java -jar ./contact-base-data.jar qserver
 ----
-{blank}
+To execute the backend with for example the profile "qserver" run the command:
 
-* Open a browser and type:
-
-[source,http]
+[source,command]
 ----
-    http://localhost:4200
+    $ java -Dspring.profiles.active=qserver -jar ./contact-base-data.jar qserver
 ----
-{blank}
 
-IMPORTANT: The reason you maybe don´t see the application running properly, is that you have not even logged in.
-To do so, run first the Portal project, where you can log in and then open the elogbook.
+IMPORTANT: Make sure you have set "corsEnabled" to true in your Production environment since
+Frontend (Tomcat) and Backend (Spring Application) will run on different ports!
 
+TIP: It's recommend to install the execution of the Backend as a System Service (Win/Linux).
+
+== How to run the Frontend
+
+=== Configure your Webserver
+Frontend (Tomcat) and Backend (Spring Application) will run on different ports you need to configure
+your webserver to proxy the request coming form the Frontend to the Backend.
+The following is an example configuration for an Apache HTTP Server (Webserver) for port 80.
+
+[source,conf]
+----
+
+<VirtualHost *:80>
+
+        # Kontaktstammdaten
+        ProxyPass /contactdatabase/api http://localhost:9155
+
+</VirtualHost>
+
+----
+
+`http://localhost:9155` is the location of the Backend. The port has to be adjusted according to your settings made in
+see section "How to run the Backend" -> "Configuration of the Contact Base Data Backend" -> "Configuration Settings" -> "Server:" "Port:"
+
+
+=== Deploying the Frontend
+
+. Create a folder named `contactdatabase` in `<tomcat>/webapps` folder
+. After building the Frontend (see `howtoBuild` file) copy the content of the `dist` folder to `<tomcat>/webapps/contactdatabase`
+. Start your Tomcat
+
+Now log in with the "Portal Application" and open the "Contact Base Data" module. If it shows the overview and the its example data
+the application was successfully deployed.
 
 
diff --git a/src/main/asciidoc/userDocumentation/userDocumentation.adoc.html b/src/main/asciidoc/userDocumentation/userDocumentation.adoc.html
deleted file mode 100644
index ad8806d..0000000
--- a/src/main/asciidoc/userDocumentation/userDocumentation.adoc.html
+++ /dev/null
@@ -1,2177 +0,0 @@
-  <html>
-    <head>
-      <meta charset="utf-8">
-      <title>Benutzerhandbuch: KontaktstammdatenCreate Repository</title>
-      <style>
-        #wrapper {width: 960px; margin: 0 auto;}
-        /* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
-/* Uncomment @import statement to use as custom stylesheet */
-/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
-article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}
-audio,video{display:inline-block}
-audio:not([controls]){display:none;height:0}
-html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
-a{background:none}
-a:focus{outline:thin dotted}
-a:active,a:hover{outline:0}
-h1{font-size:2em;margin:.67em 0}
-abbr[title]{border-bottom:1px dotted}
-b,strong{font-weight:bold}
-dfn{font-style:italic}
-hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
-mark{background:#ff0;color:#000}
-code,kbd,pre,samp{font-family:monospace;font-size:1em}
-pre{white-space:pre-wrap}
-q{quotes:"\201C" "\201D" "\2018" "\2019"}
-small{font-size:80%}
-sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
-sup{top:-.5em}
-sub{bottom:-.25em}
-img{border:0}
-svg:not(:root){overflow:hidden}
-figure{margin:0}
-fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
-legend{border:0;padding:0}
-button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
-button,input{line-height:normal}
-button,select{text-transform:none}
-button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
-button[disabled],html input[disabled]{cursor:default}
-input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
-button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
-textarea{overflow:auto;vertical-align:top}
-table{border-collapse:collapse;border-spacing:0}
-*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
-html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
-a:hover{cursor:pointer}
-img,object,embed{max-width:100%;height:auto}
-object,embed{height:100%}
-img{-ms-interpolation-mode:bicubic}
-.left{float:left!important}
-.right{float:right!important}
-.text-left{text-align:left!important}
-.text-right{text-align:right!important}
-.text-center{text-align:center!important}
-.text-justify{text-align:justify!important}
-.hide{display:none}
-img,object,svg{display:inline-block;vertical-align:middle}
-textarea{height:auto;min-height:50px}
-select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
-.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
-a{color:#2156a5;text-decoration:underline;line-height:inherit}
-a:hover,a:focus{color:#1d4b8f}
-a img{border:0}
-p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
-p aside{font-size:.875em;line-height:1.35;font-style:italic}
-h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
-h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
-h1{font-size:2.125em}
-h2{font-size:1.6875em}
-h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
-h4,h5{font-size:1.125em}
-h6{font-size:1em}
-hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
-em,i{font-style:italic;line-height:inherit}
-strong,b{font-weight:bold;line-height:inherit}
-small{font-size:60%;line-height:inherit}
-code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
-ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
-ul,ol{margin-left:1.5em}
-ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
-ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
-ul.square{list-style-type:square}
-ul.circle{list-style-type:circle}
-ul.disc{list-style-type:disc}
-ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
-dl dt{margin-bottom:.3125em;font-weight:bold}
-dl dd{margin-bottom:1.25em}
-abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
-abbr{text-transform:none}
-blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
-blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
-@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
-h1{font-size:2.75em}
-h2{font-size:2.3125em}
-h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
-h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
-table thead,table tfoot{background:#f7f8f7}
-table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
-table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
-table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
-h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
-h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
-.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
-.clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
-pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
-pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
-pre>code{display:block}
-pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
-em em{font-style:normal}
-strong strong{font-weight:400}
-.keyseq{color:rgba(51,51,51,.8)}
-kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
-.keyseq kbd:first-child{margin-left:0}
-.keyseq kbd:last-child{margin-right:0}
-.menuseq,.menuref{color:#000}
-.menuseq b:not(.caret),.menuref{font-weight:inherit}
-.menuseq{word-spacing:-.02em}
-.menuseq b.caret{font-size:1.25em;line-height:.8}
-.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
-b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
-b.button::before{content:"[";padding:0 3px 0 2px}
-b.button::after{content:"]";padding:0 2px 0 3px}
-p a>code:hover{color:rgba(0,0,0,.9)}
-#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
-#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
-#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
-#content{margin-top:1.25em}
-#content::before{content:none}
-#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
-#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
-#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
-#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
-#header .details span:first-child{margin-left:-.125em}
-#header .details span.email a{color:rgba(0,0,0,.85)}
-#header .details br{display:none}
-#header .details br+span::before{content:"\00a0\2013\00a0"}
-#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
-#header .details br+span#revremark::before{content:"\00a0|\00a0"}
-#header #revnumber{text-transform:capitalize}
-#header #revnumber::after{content:"\00a0"}
-#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
-#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
-#toc>ul{margin-left:.125em}
-#toc ul.sectlevel0>li>a{font-style:italic}
-#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
-#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
-#toc li{line-height:1.3334;margin-top:.3334em}
-#toc a{text-decoration:none}
-#toc a:active{text-decoration:underline}
-#toctitle{color:#7a2518;font-size:1.2em}
-@media screen and (min-width:768px){#toctitle{font-size:1.375em}
-body.toc2{padding-left:15em;padding-right:0}
-#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
-#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
-#toc.toc2>ul{font-size:.9em;margin-bottom:0}
-#toc.toc2 ul ul{margin-left:0;padding-left:1em}
-#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
-body.toc2.toc-right{padding-left:0;padding-right:15em}
-body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
-@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
-#toc.toc2{width:20em}
-#toc.toc2 #toctitle{font-size:1.375em}
-#toc.toc2>ul{font-size:.95em}
-#toc.toc2 ul ul{padding-left:1.25em}
-body.toc2.toc-right{padding-left:0;padding-right:20em}}
-#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
-#content #toc>:first-child{margin-top:0}
-#content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
-#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
-#content{margin-bottom:.625em}
-.sect1{padding-bottom:.625em}
-@media screen and (min-width:768px){#content{margin-bottom:1.25em}
-.sect1{padding-bottom:1.25em}}
-.sect1:last-child{padding-bottom:0}
-.sect1+.sect1{border-top:1px solid #e7e7e9}
-#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
-#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
-#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
-#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
-#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
-details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
-details>summary:first-of-type{cursor:pointer;display:list-item;outline:none;margin-bottom:.75em}
-.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
-table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
-.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
-table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
-.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
-.admonitionblock>table td.icon{text-align:center;width:80px}
-.admonitionblock>table td.icon img{max-width:none}
-.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
-.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
-.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
-.exampleblock>.content>:first-child{margin-top:0}
-.exampleblock>.content>:last-child{margin-bottom:0}
-.sidebarblock{border-style:solid;border-width:1px;border-color:#dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;-webkit-border-radius:4px;border-radius:4px}
-.sidebarblock>:first-child{margin-top:0}
-.sidebarblock>:last-child{margin-bottom:0}
-.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
-.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
-@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
-@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
-.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
-.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
-.listingblock>.content{position:relative}
-.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
-.listingblock:hover code[data-lang]::before{display:block}
-.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
-.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
-.listingblock pre.highlightjs{padding:0}
-.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
-.listingblock pre.prettyprint{border-width:0}
-.prettyprint{background:#f7f7f8}
-pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
-pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
-pre.prettyprint li code[data-lang]::before{opacity:1}
-pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
-table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
-table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
-table.linenotable td.code{padding-left:.75em}
-table.linenotable td.linenos{border-right:1px solid currentColor;opacity:.35;padding-right:.5em}
-pre.pygments .lineno{border-right:1px solid currentColor;opacity:.35;display:inline-block;margin-right:.75em}
-pre.pygments .lineno::before{content:"";margin-right:-.125em}
-.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
-.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
-.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
-.quoteblock blockquote{margin:0;padding:0;border:0}
-.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
-.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
-.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
-.verseblock{margin:0 1em 1.25em}
-.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
-.verseblock pre strong{font-weight:400}
-.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
-.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
-.quoteblock .attribution br,.verseblock .attribution br{display:none}
-.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
-.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
-.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
-.quoteblock.abstract{margin:0 1em 1.25em;display:block}
-.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
-.quoteblock.excerpt,.quoteblock .quoteblock{margin:0 0 1.25em;padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
-.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
-p.tableblock:last-child{margin-bottom:0}
-td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
-table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
-table.frame-all{border-width:1px}
-table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
-table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
-th.halign-left,td.halign-left{text-align:left}
-th.halign-right,td.halign-right{text-align:right}
-th.halign-center,td.halign-center{text-align:center}
-th.valign-top,td.valign-top{vertical-align:top}
-th.valign-bottom,td.valign-bottom{vertical-align:bottom}
-th.valign-middle,td.valign-middle{vertical-align:middle}
-table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
-tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
-p.tableblock>code:only-child{background:none;padding:0}
-p.tableblock{font-size:1em}
-ol{margin-left:1.75em}
-ul li ol{margin-left:1.5em}
-dl dd{margin-left:1.125em}
-dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
-ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
-ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
-ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
-ul.unstyled,ol.unstyled{margin-left:0}
-ul.checklist{margin-left:.625em}
-ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
-ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
-ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
-ul.inline>li{margin-left:1.25em}
-.unstyled dl dt{font-weight:400;font-style:normal}
-ol.arabic{list-style-type:decimal}
-ol.decimal{list-style-type:decimal-leading-zero}
-ol.loweralpha{list-style-type:lower-alpha}
-ol.upperalpha{list-style-type:upper-alpha}
-ol.lowerroman{list-style-type:lower-roman}
-ol.upperroman{list-style-type:upper-roman}
-ol.lowergreek{list-style-type:lower-greek}
-.hdlist>table,.colist>table{border:0;background:none}
-.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
-td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
-td.hdlist1{font-weight:bold;padding-bottom:1.25em}
-.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
-.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
-.colist td:not([class]):first-child img{max-width:none}
-.colist td:not([class]):last-child{padding:.25em 0}
-.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
-.imageblock.left{margin:.25em .625em 1.25em 0}
-.imageblock.right{margin:.25em 0 1.25em .625em}
-.imageblock>.title{margin-bottom:0}
-.imageblock.thumb,.imageblock.th{border-width:6px}
-.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
-.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
-.image.left{margin-right:.625em}
-.image.right{margin-left:.625em}
-a.image{text-decoration:none;display:inline-block}
-a.image object{pointer-events:none}
-sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
-sup.footnote a,sup.footnoteref a{text-decoration:none}
-sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
-#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
-#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
-#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
-#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
-#footnotes .footnote:last-of-type{margin-bottom:0}
-#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
-.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
-.gist .file-data>table td.line-data{width:99%}
-div.unbreakable{page-break-inside:avoid}
-.big{font-size:larger}
-.small{font-size:smaller}
-.underline{text-decoration:underline}
-.overline{text-decoration:overline}
-.line-through{text-decoration:line-through}
-.aqua{color:#00bfbf}
-.aqua-background{background:#00fafa}
-.black{color:#000}
-.black-background{background:#000}
-.blue{color:#0000bf}
-.blue-background{background:#0000fa}
-.fuchsia{color:#bf00bf}
-.fuchsia-background{background:#fa00fa}
-.gray{color:#606060}
-.gray-background{background:#7d7d7d}
-.green{color:#006000}
-.green-background{background:#007d00}
-.lime{color:#00bf00}
-.lime-background{background:#00fa00}
-.maroon{color:#600000}
-.maroon-background{background:#7d0000}
-.navy{color:#000060}
-.navy-background{background:#00007d}
-.olive{color:#606000}
-.olive-background{background:#7d7d00}
-.purple{color:#600060}
-.purple-background{background:#7d007d}
-.red{color:#bf0000}
-.red-background{background:#fa0000}
-.silver{color:#909090}
-.silver-background{background:#bcbcbc}
-.teal{color:#006060}
-.teal-background{background:#007d7d}
-.white{color:#bfbfbf}
-.white-background{background:#fafafa}
-.yellow{color:#bfbf00}
-.yellow-background{background:#fafa00}
-span.icon>.fa{cursor:default}
-a span.icon>.fa{cursor:inherit}
-.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
-.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
-.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
-.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
-.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
-.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
-.conum[data-value] *{color:#fff!important}
-.conum[data-value]+b{display:none}
-.conum[data-value]::after{content:attr(data-value)}
-pre .conum[data-value]{position:relative;top:-.125em}
-b.conum *{color:inherit!important}
-.conum:not([data-value]):empty{display:none}
-dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
-h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
-p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
-p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
-p{margin-bottom:1.25rem}
-.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
-.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
-.print-only{display:none!important}
-@page{margin:1.25cm .75cm}
-@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
-html{font-size:80%}
-a{color:inherit!important;text-decoration:underline!important}
-a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
-a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
-abbr[title]::after{content:" (" attr(title) ")"}
-pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
-thead{display:table-header-group}
-svg{max-width:100%}
-p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
-h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
-#toc,.sidebarblock,.exampleblock>.content{background:none!important}
-#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
-body.book #header{text-align:center}
-body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
-body.book #header .details{border:0!important;display:block;padding:0!important}
-body.book #header .details span:first-child{margin-left:0!important}
-body.book #header .details br{display:block}
-body.book #header .details br+span::before{content:none!important}
-body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
-body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
-.listingblock code[data-lang]::before{display:block}
-#footer{padding:0 .9375em}
-.hide-on-print{display:none!important}
-.print-only{display:block!important}
-.hide-for-print{display:none!important}
-.show-for-print{display:inherit!important}}
-@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
-.sect1{padding:0!important}
-.sect1+.sect1{border:0}
-#footer{background:none}
-#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
-@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
-
-      </style>
-      <link href='https://fonts.googleapis.com/css?family=Noto+Serif' rel='stylesheet' type='text/css'>
-      <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic' rel='stylesheet' type='text/css'>
-      <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
-      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/default.min.css">
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/asciidoc.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/yaml.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/dockerfile.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/makefile.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/go.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/rust.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/haskell.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/typescript.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/scss.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/less.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/handlebars.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/groovy.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/scala.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/bash.min.js"></script>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/ini.min.js"></script>
-      <script>hljs.initHighlightingOnLoad();</script>
-    </head>
-    <body>
-      <div id="wrapper">
-        <div class="article">
-          <h1>Benutzerhandbuch: Kontaktstammdaten</h1>
-<div id="preamble">
-<div class="sectionbody">
-<div style="page-break-after: always;"></div>
-<div class="ulist">
-<ul>
-<li>
-<p>Version: 1.0.1</p>
-</li>
-<li>
-<p>Datum: 25.02.2020</p>
-</li>
-<li>
-<p>Status: Final</p>
-</li>
-</ul>
-</div>
-<div style="page-break-after: always;"></div>
-<!-- toc disabled -->
-<div style="page-break-after: always;"></div>
-</div>
-<div id="toc" class="toc">
-<div id="toctitle">Table of Contents</div>
-<ul class="sectlevel1">
-<li><a href="#_sinn_und_zweck_des_moduls_kontaktstammdaten">1. Sinn und Zweck des Moduls Kontaktstammdaten</a></li>
-<li><a href="#uebersicht-benutzerrollen">2. Benutzerrollen und Aufgaben</a>
-<ul class="sectlevel2">
-<li><a href="#lesende-rolle">2.1. Lesende Rolle</a></li>
-<li><a href="#schreibende-rolle">2.2. Schreibende Rolle</a></li>
-<li><a href="#admin-rolle">2.3. Administrator</a></li>
-</ul>
-</li>
-<li><a href="#_verwaltung_der_kontakte">3. Verwaltung der Kontakte</a>
-<ul class="sectlevel2">
-<li><a href="#uebersicht-aller-kontakte">3.1. Übersicht</a></li>
-<li><a href="#uebersicht-bearbeitungssymbole">3.2. Kontakt anlegen, anzeigen, bearbeiten und löschen</a></li>
-<li><a href="#_kontakttypen">3.3. Kontakttypen</a></li>
-<li><a href="#_weitere_informationen_zu_einem_kontakt">3.4. Weitere Informationen zu einem Kontakt</a></li>
-</ul>
-</li>
-<li><a href="#dsgvo-funktionen">4. DSGVO-Funktionen</a>
-<ul class="sectlevel2">
-<li><a href="#dsgvo-erfassen">4.1. Erfassung der DSGVO-Informationen zu einem Kontakt</a></li>
-<li><a href="#dsgvo-suche">4.2. Abgelaufene Kontakte identifizieren</a></li>
-<li><a href="#dsgvo-anonymisieren">4.3. Kontakt anonymisieren</a></li>
-</ul>
-</li>
-<li><a href="#verwaltung-stammdaten">5. Verwaltung der Stammdaten</a>
-<ul class="sectlevel2">
-<li><a href="#_anreden">5.1. Anreden</a></li>
-<li><a href="#_adresstypen">5.2. Adresstypen</a></li>
-<li><a href="#_kommunikationstypen">5.3. Kommunikationstypen</a></li>
-<li><a href="#_personentypen">5.4. Personentypen</a></li>
-</ul>
-</li>
-<li><a href="#meldungen-hinweise">6. Hinweise und Meldungen nach Benutzeraktionen</a>
-<ul class="sectlevel2">
-<li><a href="#_erfolg_einer_aktion">6.1. Erfolg einer Aktion</a></li>
-<li><a href="#_handlungsanweisung">6.2. Handlungsanweisung</a></li>
-<li><a href="#_fehlermeldungen">6.3. Fehlermeldungen</a></li>
-</ul>
-</li>
-<li><a href="#_allgemeine_funktionen">7. Allgemeine Funktionen</a>
-<ul class="sectlevel2">
-<li><a href="#_an_und_abmelden">7.1. An- und abmelden</a></li>
-<li><a href="#_home_button">7.2. Home-Button</a></li>
-<li><a href="#suche-suche">7.3. Suche</a></li>
-<li><a href="#sortieren">7.4. Sortieren</a></li>
-<li><a href="#_hilfe">7.5. Hilfe</a></li>
-<li><a href="#_synchronisierung_mit_verzeichnisdiensten">7.6. Synchronisierung mit Verzeichnisdiensten</a></li>
-</ul>
-</li>
-<li><a href="#_kompatibilität">8. Kompatibilität</a></li>
-</ul>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_sinn_und_zweck_des_moduls_kontaktstammdaten"><a class="anchor" href="#_sinn_und_zweck_des_moduls_kontaktstammdaten"></a>1. Sinn und Zweck des Moduls Kontaktstammdaten</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Das Modul Kontaktstammdaten ist ein Domain-Modul der openKONSEQUENZ-Plattform.</p>
-</div>
-<div class="paragraph">
-<p>Das Modul Kontaktstammdaten übernimmt die Verwaltung aller Kontaktdaten
-in einer openKONSEQUENZ-Installation. D.h. es synchronisiert sich mit den
-Benutzern des Auth&amp;Auth-Moduls oder mit dem Unternehmens-LDAP. Des Weiteren
-verwaltet es alle (Internen und Externen) Personen sowie Unternehmen, die in den
-User Modulen benötigt werden.</p>
-</div>
-<div class="paragraph">
-<p>Das Modul Kontaktstammdaten ist somit die zentrale Stelle zur Verwaltung
-aller Kontakte und personenbezogener Daten in einer openKONSEQUENZ-Installation.
-Es setzt die DSGVO-Vorgaben um.</p>
-</div>
-<div style="page-break-after: always;"></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="uebersicht-benutzerrollen"><a class="anchor" href="#uebersicht-benutzerrollen"></a>2. Benutzerrollen und Aufgaben</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Zur Bearbeitung von Kontaktstammdaten sind folgende Benutzerrollen
-definiert.</p>
-</div>
-<div class="sect2">
-<h3 id="lesende-rolle"><a class="anchor" href="#lesende-rolle"></a>2.1. Lesende Rolle</h3>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="#uebersicht-aller-kontakte">Darf alle Kontakte sehen</a></p>
-</li>
-<li>
-<p><a href="#suche-suche">Darf nach Kontakten suchen</a></p>
-</li>
-</ul>
-</div>
-</div>
-<div class="sect2">
-<h3 id="schreibende-rolle"><a class="anchor" href="#schreibende-rolle"></a>2.2. Schreibende Rolle</h3>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="#lesende-rolle">Darf alles, was die Lesende Rolle darf</a></p>
-</li>
-<li>
-<p><a href="#kontakt-erstellen">Darf neue Kontakte anlegen</a></p>
-</li>
-<li>
-<p><a href="#kontakt-bearbeiten">Darf bestehende Kontakte bearbeiten</a></p>
-</li>
-<li>
-<p><a href="#ansprechparter-loeschen">Darf Ansprechpartner eines Unternehmens entfernen</a></p>
-</li>
-<li>
-<p><a href="#dsgvo-funktionen">Darf DSGVO-Funktionen ausführen</a></p>
-</li>
-</ul>
-</div>
-</div>
-<div class="sect2">
-<h3 id="admin-rolle"><a class="anchor" href="#admin-rolle"></a>2.3. Administrator</h3>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="#schreibende-rolle">Darf alles, was die Schreibende Rolle darf</a></p>
-</li>
-<li>
-<p><a href="#verwaltung-stammdaten">Darf Stammdaten anlegen, bearbeiten, löschen</a></p>
-</li>
-</ul>
-</div>
-<div style="page-break-after: always;"></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_verwaltung_der_kontakte"><a class="anchor" href="#_verwaltung_der_kontakte"></a>3. Verwaltung der Kontakte</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="uebersicht-aller-kontakte"><a class="anchor" href="#uebersicht-aller-kontakte"></a>3.1. Übersicht</h3>
-<div class="paragraph">
-<p>Die Übersichtsseite stellt standardmäßig alle Kontakte
-in einer Tabelle dar.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/kontakte_uebersichtstabelle.png" alt="kontakte uebersichtstabelle">
-</div>
-<div class="title">Figure 1. Übersicht der Kontakte</div>
-</div>
-<div class="paragraph">
-<p>Die Übersichtstabelle zeigt zu jedem Kontakt folgende Informationen an:</p>
-</div>
-<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 1. Felder in der Tabellenübersicht</caption>
-<colgroup>
-<col style="width: 50%;">
-<col style="width: 50%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Feld</th>
-<th class="tableblock halign-left valign-top">Erläuterung</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
-<ul>
-<li>
-<p>Name des Kontakts (Personen- oder Firmen-Name)</p>
-</li>
-</ul>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">E-Mail</p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
-<ul>
-<li>
-<p>E-Mail-Adresse des Kontakts</p>
-</li>
-</ul>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Kontakttyp</p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
-<ul>
-<li>
-<p>Unternehmen</p>
-</li>
-<li>
-<p>Interne Person</p>
-</li>
-<li>
-<p>Externe Person</p>
-</li>
-<li>
-<p>Ansprechpartner</p>
-</li>
-</ul>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Notiz</p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
-<ul>
-<li>
-<p>Bemerkung bzw. Hinweis zu einem Kontakt</p>
-</li>
-</ul>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Hauptadresse</p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
-<ul>
-<li>
-<p>Primäre Anschrift</p>
-</li>
-</ul>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">(ohne Überschrift)</p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
-<ul>
-<li>
-<p>Benutzeraktionen, siehe <a href="#uebersicht-bearbeitungssymbole">Symbole</a></p>
-</li>
-</ul>
-</div></div></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="sect2">
-<h3 id="uebersicht-bearbeitungssymbole"><a class="anchor" href="#uebersicht-bearbeitungssymbole"></a>3.2. Kontakt anlegen, anzeigen, bearbeiten und löschen</h3>
-<div class="paragraph">
-<p>Jeder Kontakt kann direkt aus der Tabelle zur Anzeige oder zur Bearbeitung
-geöffnet werden.</p>
-</div>
-<div class="sect3">
-<h4 id="_kontakt_anzeigen"><a class="anchor" href="#_kontakt_anzeigen"></a>3.2.1. Kontakt anzeigen</h4>
-<div class="paragraph">
-<p>Über folgendes Symbol öffnet sich der entsprechende Kontakt zur Anzeige.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/auge-symbol.png" alt="auge symbol">
-</div>
-<div class="title">Figure 2. Auge-Symbol zum Anzeigen eines Kontakts</div>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Das Auge-Symbol ist nur bei der "Lesenden Rolle" sichtbar.
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="kontakt-bearbeiten"><a class="anchor" href="#kontakt-bearbeiten"></a>3.2.2. Kontakt bearbeiten</h4>
-<div class="paragraph">
-<p>Über folgendes Symbol öffnet sich der entsprechende Kontakt
-zur Bearbeitung.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/stift-symbol.png" alt="stift symbol">
-</div>
-<div class="title">Figure 3. Stift-Symbol zum Bearbeiten eines Kontakts</div>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Das Stift-Symbol ist nur bei der "Schreibenden Rolle" und der Rolle "Administrator" sichtbar.
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_kontakt_löschen"><a class="anchor" href="#_kontakt_löschen"></a>3.2.3. Kontakt löschen</h4>
-<div class="paragraph">
-<p>Kontakte können nicht entfernt, sondern lediglich <a href="#dsgvo-anonymisieren">anonymisiert</a> werden.
-Die einzige Ausnahme bilden die <a href="#ansprechparter-loeschen">Ansprechpartner eines Unternehmens</a>,
-die entfernt werden können.</p>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Anonymisieren und löschen ist nur bei der "Schreibenden Rolle" und der Rolle "Administrator" sichtbar.
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="kontakt-erstellen"><a class="anchor" href="#kontakt-erstellen"></a>3.2.4. Kontakt anlegen</h4>
-<div class="paragraph">
-<p>Ist ein Benutzer mit der Benutzerrolle "Schreibende Rolle" angemeldet,
-so besteht die Möglichkeit über die Schaltfläche "Neuen Kontakt anlegen" einen
-neuen Kontakt hinzuzufügen.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/auswahl-kontakt-anlegen.png" alt="auswahl kontakt anlegen">
-</div>
-<div class="title">Figure 4. Schaltfläche zum Erstellen von Kontakten</div>
-</div>
-<div class="paragraph">
-<p>Hier muss der Bearbeiter den Kontakttyp bestimmen:</p>
-</div>
-<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 2. Kontakttypen</caption>
-<colgroup>
-<col style="width: 50%;">
-<col style="width: 50%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Kontakttyp</th>
-<th class="tableblock halign-left valign-top">Erläuterung</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Interner Kontakt</p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
-<ul>
-<li>
-<p>Eine natürliche Person, die dem Unternehmen angehört</p>
-</li>
-</ul>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Externer Kontakt</p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
-<ul>
-<li>
-<p>Eine natürliche Person, die dem Unternehmen nicht angehört</p>
-</li>
-</ul>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Unternehmen</p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
-<ul>
-<li>
-<p>Eine juristische Person</p>
-</li>
-</ul>
-</div></div></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>Anschließend öffnet sich die Eingabemaske für den ausgewählten Kontakttypen.</p>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_kontakttypen"><a class="anchor" href="#_kontakttypen"></a>3.3. Kontakttypen</h3>
-<div class="sect3">
-<h4 id="_interne_person"><a class="anchor" href="#_interne_person"></a>3.3.1. Interne Person</h4>
-<div class="paragraph">
-<p>Die Basisinformationen eines Kontakts befindet sich im oberen
-Teil des Benutzerdialogs.</p>
-</div>
-<div class="paragraph">
-<p>Pflichtfelder sind farblich markiert. Zunächst sind diese rot. Erst wenn die
-Inhalte entsprechend eingetragen sind, ändert sich die Markierung auf grün.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/interne-person-1.png" alt="interne person 1">
-</div>
-<div class="title">Figure 5. Basis-Informationen eines Kontakts am Beispiel einer internen Person</div>
-</div>
-<div class="paragraph">
-<p>Eine interne Person besitzt folgende Attribute:</p>
-</div>
-<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 3. Attribute einer internen Person</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Attribut</th>
-<th class="tableblock halign-left valign-top">Pflichtfeld</th>
-<th class="tableblock halign-left valign-top">Inhaltsart</th>
-<th class="tableblock halign-left valign-top">Beschreibung</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Vorname</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Vorname der natürlichen Person</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">ja</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Nachname der natürlichen Person</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Titel</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">z.B. Prof. oder Dr.</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Anrede</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahlfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahl einer Anrede, z.B. Herr oder Frau</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Personentyp</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahlfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahl eines Personentyps</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">LDAP User</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Bezeichnung des Benutzers im Unternehmens-LDAP. Im linken Feld kann durch Erfassung eines Namens im LDAP gesucht werden. Der ausgewählte Benutzer (im rechten Feld) wird zur Synchronisation verwendet.</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Portal User</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Bezeichnung des Benutzers im Portal. Im linken Feld kann durch Erfassung eines Namens im Portal gesucht werden. Der ausgewählte Benutzer (im rechten Feld) wird zur Synchronisation verwendet.</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Abteilung</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Abteilung der Person</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Notiz</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Beliebige Hinweise zur Person</p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>Um den Kontakt zu speichern, muss die folgende Schaltfläche betätigt werden.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/speichern.png" alt="speichern">
-</div>
-<div class="title">Figure 6. Schaltfläche zum Speichern</div>
-</div>
-<div class="paragraph">
-<p>Wenn die neu erfassten Daten nicht gespeichert werden sollen, dann ist folgende Schaltfläche zu drücken:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/abbrechen.png" alt="abbrechen">
-</div>
-<div class="title">Figure 7. Schaltfläche zum Abbrechen (ohne speichern)</div>
-</div>
-<div class="paragraph">
-<p>Anschließend erscheint ein Dialog, der mit "Ja" zu bestätigen ist.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/dialog-nach-abbrechen.png" alt="dialog nach abbrechen">
-</div>
-<div class="title">Figure 8. Dialog nach Abbrechen</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_externe_person"><a class="anchor" href="#_externe_person"></a>3.3.2. Externe Person</h4>
-<div class="paragraph">
-<p>Die Basisinformationen eines Kontakts befindet sich im oberen
-Teil des Benutzerdialogs.</p>
-</div>
-<div class="paragraph">
-<p>Pflichtfelder sind farblich markiert. Zunächst sind diese rot. Erst wenn die
-Inhalte entsprechend eingetragen sind, ändert sich die Markierung auf grün.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/externe-person-1.png" alt="externe person 1">
-</div>
-<div class="title">Figure 9. Basis-Informationen eines Kontakts am Beispiel einer externen Person</div>
-</div>
-<div class="paragraph">
-<p>Eine externe Person besitzt folgende Attribute:</p>
-</div>
-<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 4. Attribute einer externen Person</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Attribut</th>
-<th class="tableblock halign-left valign-top">Pflichtfeld</th>
-<th class="tableblock halign-left valign-top">Inhaltsart</th>
-<th class="tableblock halign-left valign-top">Beschreibung</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Vorname</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Vorname der natürlichen Person</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">ja</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Nachname der natürlichen Person</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Titel</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">z.B. Prof. oder Dr.</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Anrede</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahlfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahl einer Anrede, z.B. Herr oder Frau</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Personentyp</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahlfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahl eines Personentyps</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Notiz</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Beliebige Hinweise zur Person</p></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="sect3">
-<h4 id="_unternehmen"><a class="anchor" href="#_unternehmen"></a>3.3.3. Unternehmen</h4>
-<div class="paragraph">
-<p>Die Basisinformationen eines Kontakts befindet sich im oberen
-Teil des Benutzerdialogs.</p>
-</div>
-<div class="paragraph">
-<p>Pflichtfelder sind farblich markiert. Zunächst sind diese rot. Erst wenn die
-Inhalte entsprechend eingetragen sind, ändert sich die Markierung auf grün.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/unternehmen.png" alt="unternehmen">
-</div>
-<div class="title">Figure 10. Basis-Informationen eines Kontakts am Beispiel eines Unternehmens</div>
-</div>
-<div class="paragraph">
-<p>Ein Unternehmen besitzt folgende Attribute:</p>
-</div>
-<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 5. Attribute eines Unternehmens</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Attribut</th>
-<th class="tableblock halign-left valign-top">Pflichtfeld</th>
-<th class="tableblock halign-left valign-top">Inhaltsart</th>
-<th class="tableblock halign-left valign-top">Beschreibung</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">ja</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Nachname der natürlichen Person</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Rechtsform</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">z.B. GmbH oder AG</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Handelsregisternummer</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Nummer in der Form HR A 11111</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Notiz</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Beliebige Hinweise zum unternehmen</p></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="sect3">
-<h4 id="_ansprechpartner"><a class="anchor" href="#_ansprechpartner"></a>3.3.4. Ansprechpartner</h4>
-<div class="paragraph">
-<p>Der Ansprechpartner ist kein eigener Kontakttyp. Dieser kann ausschließlich
- <a href="#ansprechpartner-unternehmen">über das Unternehmen erfasst werden, zudem der Ansprechpartner gehört.</a></p>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_weitere_informationen_zu_einem_kontakt"><a class="anchor" href="#_weitere_informationen_zu_einem_kontakt"></a>3.4. Weitere Informationen zu einem Kontakt</h3>
-<div class="paragraph">
-<p>Die Detailinformationen zu einem Kontakt befinden sich im unteren
-Teil der Erfassungsmaske in aufklappbaren Bereichen:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/unternehmen-2.png" alt="unternehmen 2">
-</div>
-<div class="title">Figure 11. Detail-Informationen eines Kontakts</div>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Bei der Neu-Anlage eines Kontakts sind die Details zunächst nicht sichtbar. Erst nach dem Speichern und dem erneuten Aufruf des neuen Kontakts werden die folgenden Detailinformationen angezeigt.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Dieser Bereich ist in folgende Abschnitte unterteilt:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Adressen</p>
-</li>
-<li>
-<p>Kommunikationskanäle</p>
-</li>
-<li>
-<p>Modulzuordnung</p>
-</li>
-<li>
-<p>Ansprechpartner (nur bei Unternehmen)</p>
-</li>
-</ul>
-</div>
-<div class="sect3">
-<h4 id="_adressen"><a class="anchor" href="#_adressen"></a>3.4.1. Adressen</h4>
-<div class="paragraph">
-<p>Die Adressliste beinhaltet alle Adressen der internen Person. Eine Adresse besteht aus folgenden Attributen:</p>
-</div>
-<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 6. Attribute einer Adresse (Kontakt-Detailinformationen)</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Attribut</th>
-<th class="tableblock halign-left valign-top">Pflichtfeld</th>
-<th class="tableblock halign-left valign-top">Inhaltsart</th>
-<th class="tableblock halign-left valign-top">Beschreibung</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Adresstyp</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">ja</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahlfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahl eines Adresstyps</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Hauptadresse</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Checkbox</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Kennzeichen, ob dies die Hauptadresse ist (nur relevant, wenn mehrere Adressen vorhanden)</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Postleitzahl</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Zahl</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Adressdaten</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Ort</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Adressdaten</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Adresse (Zusatz)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Adressdaten</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Straße</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Adressdaten</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Hausnummer</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Adressdaten</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">WGS84-Zone</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">World Geodetic System 1984 für Positionsangaben</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Längengrad</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Geographische Länge: Ein Winkel, der ausgehend vom Nullmeridian (0°) bis 180° in östlicher und 180° in westlicher Richtung angegeben wird</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Breitengrad</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Geographische Breite: Angabe in Grad, Minuten und Sekunden</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Google Maps URL</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">URL zu Google Maps mit den entsprechenden Parametern</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Notiz</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Beliebige Hinweise zur Person</p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>Der geöffnete Bereich sieht folgendermaßen aus:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/adresseliste-gefuellt.png" alt="adresseliste gefuellt">
-</div>
-<div class="title">Figure 12. Tabellenansicht der Adressen unter einem Kontakt</div>
-</div>
-<div class="paragraph">
-<p>Über die Schaltfläche "Neue Adresse anlegen" kann eine Adresse angelegt werden.
-Anschließend öffnet sich die folgende Maske, die auch bei der Bearbeitung zum Einsatz kommt:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/adresse-anlegen.png" alt="adresse anlegen">
-</div>
-<div class="title">Figure 13. Maske zur Anlage einer Adresse unter einem Kontakt</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_kommunikationskanäle"><a class="anchor" href="#_kommunikationskanäle"></a>3.4.2. Kommunikationskanäle</h4>
-<div class="paragraph">
-<p>Die Kommunikationskanäle beinhalten alle Kontaktinformationen. Ein Kommunikationskanal besteht aus folgenden Attributen:</p>
-</div>
-<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 7. Attribute eines Kommunikationskanals (Kontakt-Detailinformationen)</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Attribut</th>
-<th class="tableblock halign-left valign-top">Pflichtfeld</th>
-<th class="tableblock halign-left valign-top">Inhaltsart</th>
-<th class="tableblock halign-left valign-top">Beschreibung</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Typ</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">ja</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahlfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahl eines Kommunikationskanals</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Daten</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Kontaktinformationen des entsprechenden Kommunikationskanals</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Notiz</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Beliebige Hinweise zum Kommunikationskanal</p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>Der geöffnete Bereich sieht folgendermaßen aus:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/kommunikationskanal-gefuellt.png" alt="kommunikationskanal gefuellt">
-</div>
-<div class="title">Figure 14. Tabellenansicht der Kommunikationskanäle unter einem Kontakt</div>
-</div>
-<div class="paragraph">
-<p>Über die Schaltfläche "Neuen Kommunikationskanal anlegen" kann ein Kommunikationskanal angelegt werden.
-Anschließend öffnet sich die folgende Maske, die auch bei der Bearbeitung zum Einsatz kommt:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/kommunikationskanal-anlegen.png" alt="kommunikationskanal anlegen">
-</div>
-<div class="title">Figure 15. Maske zur Anlage eines Kommunikationskanals unter einem Kontakt</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="zugeordnete-module"><a class="anchor" href="#zugeordnete-module"></a>3.4.3. Zugeordnete Module</h4>
-<div class="paragraph">
-<p>Die Modulzuordnung legt fest, in welchen Modulen der Kontakt genutzt wird.
-Des Weiteren kann hinterlegt werden, wie lange die Kontaktdaten mindestens
-aufbewahrt werden müssen und wann diese ablaufen.</p>
-</div>
-<div class="paragraph">
-<p>Eine Modulzuordnung besteht aus folgenden Attributen:</p>
-</div>
-<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 8. Attribute einer Modulzuordnung (Kontakt-Detailinformationen)</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Attribut</th>
-<th class="tableblock halign-left valign-top">Pflichtfeld</th>
-<th class="tableblock halign-left valign-top">Inhaltsart</th>
-<th class="tableblock halign-left valign-top">Beschreibung</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Modulname</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">ja</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahlfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahl eines openKONSEQUENZ-Moduls</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Ablaufdatum</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Datum</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Zeitpunkt, ab wann die Kontaktdaten gemäß DSGVO gelöscht werden müssen</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Löschsperre bis</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Datum</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Zeitpunkt, bis wann die Kontaktdaten gemäß DSGVO nicht gelöscht werden dürfen</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Notiz</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Beliebige Hinweise zum Modul</p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>Der geöffnete Bereich sieht folgendermaßen aus:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/modulzuordnung-gefuellt.png" alt="modulzuordnung gefuellt">
-</div>
-<div class="title">Figure 16. Tabellenansicht der Modulzuordnungen unter einem Kontakt</div>
-</div>
-<div class="paragraph">
-<p>Über die Schaltfläche "Neue Modulzuordnung anlegen" kann eine Modulzuordnung angelegt werden.
-Anschließend öffnet sich die folgende Maske, die auch bei der Bearbeitung zum Einsatz kommt:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/modul-zuordnen.png" alt="modul zuordnen">
-</div>
-<div class="title">Figure 17. Maske zur Anlage einer Modulzuordnung unter einem Kontakt</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="ansprechpartner-unternehmen"><a class="anchor" href="#ansprechpartner-unternehmen"></a>3.4.4. Ansprechpartner (nur bei Unternehmen)</h4>
-<div class="paragraph">
-<p>Die Ansprechpartner sind Personen, die zu einem Unternehmen gehören. Deshalb gibt es diese Daten nur bei dem Kontakttyp Unternehmen.
-Ein Ansprechpartner besitzt folgende Attribute:</p>
-</div>
-<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 9. Attribute eines Ansprechpartners (Kontakt-Detailinformationen)</caption>
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Attribut</th>
-<th class="tableblock halign-left valign-top">Pflichtfeld</th>
-<th class="tableblock halign-left valign-top">Inhaltsart</th>
-<th class="tableblock halign-left valign-top">Beschreibung</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Vorname</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Vorname des Ansprechpartners</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">ja</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Nachname des Ansprechpartners</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Titel</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">z.B. Prof. oder Dr.</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Anrede</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahlfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahl einer Anrede, z.B. Herr oder Frau</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Personentyp</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahlfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Auswahl eines Personentyps</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Notiz</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">nein</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Textfeld</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Beliebige Hinweise zum Ansprechpartner</p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>Der geöffnete Bereich sieht folgendermaßen aus:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/ansprechpartner-gefuellt.png" alt="ansprechpartner gefuellt">
-</div>
-<div class="title">Figure 18. Tabellenansicht der Ansprechpartner unter einem Kontakt</div>
-</div>
-<div class="paragraph">
-<p>Über die Schaltfläche "Neuen Ansprechpartner anlegen" kann ein Ansprechpartner angelegt werden.
-Anschließend öffnet sich die folgende Maske, die auch bei der Bearbeitung zum Einsatz kommt:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/ansprechpartner-anlegen.png" alt="ansprechpartner anlegen">
-</div>
-<div class="title">Figure 19. Maske zur Anlage eines Ansprechpartners unter einem Kontakt</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="ansprechparter-loeschen"><a class="anchor" href="#ansprechparter-loeschen"></a>3.4.5. Löschen von weiteren Informationen eines Kontakts</h4>
-<div class="paragraph">
-<p>Über das folgende Symbol in der Tabelle kann der entsprechende Eintrag
-(Adresse, Kommunikationskanal, Modulzuordnung oder Ansprechpartner)
-gelöscht werden.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/loesch-symbol.png" alt="loesch symbol">
-</div>
-<div class="title">Figure 20. Löschen-Symbol</div>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Das Mülleimer-Symbol ist nur bei der "Schreibenden Rolle" und bei der Rolle "Administrator" sichtbar.
-</td>
-</tr>
-</table>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Die Löschfunktion steht nur beim Kontakttyp "Ansprechpartner" zur Verfügung. Andere Kontakte können nicht gelöscht werden.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Nach Klick auf das Löschen-Symbol erscheint ein Dialog, der mit "Ja" zu bestätigen ist.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/meldung-loeschen.png" alt="meldung loeschen">
-</div>
-<div class="title">Figure 21. Dialog nach Klick auf Löschen</div>
-</div>
-<div style="page-break-after: always;"></div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="dsgvo-funktionen"><a class="anchor" href="#dsgvo-funktionen"></a>4. DSGVO-Funktionen</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Das Modul Kontaktstammdaten ermöglicht für eine openKONSEQUENZ-Installation
-die zentrale Umsetzung der DSGVO-Aufgaben:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Alle Informationen zu einem Kontakt finden</p>
-</li>
-<li>
-<p>Gültigkeitszeiträume für Personendaten festlegen</p>
-</li>
-<li>
-<p>Sperrfristen für Personendaten festlegen</p>
-</li>
-<li>
-<p>Abgelaufene Kontakte identifizieren</p>
-</li>
-<li>
-<p>Kontakte anonymisieren</p>
-</li>
-</ul>
-</div>
-<div class="sect2">
-<h3 id="dsgvo-erfassen"><a class="anchor" href="#dsgvo-erfassen"></a>4.1. Erfassung der DSGVO-Informationen zu einem Kontakt</h3>
-<div class="paragraph">
-<p>Kontaktdaten können grundsätzlich in mehreren openKONSEQUENZ-Modulen verwendet werden.
-Deshalb ist es bei jedem Kontakt (Interne und externe Person) möglich, die einzelnen
-Module bei den Detailinformationen unter <a href="#zugeordnete-module">Zugeordnete Module</a>
-zu erfassen.</p>
-</div>
-<div class="paragraph">
-<p>In diesem Vorgang können zu jeder Modulzuordnung weitere DSGVO-relevante Informationen
-hinterlegt werden:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>openKONSEQUENZ-Modul: Modul, dass diesen Kontakt verwendet</p>
-</li>
-<li>
-<p>Zuweisungsdatum: Wann der Kontakt erstmalig dem Modul verwendet wurde</p>
-</li>
-<li>
-<p>Ablaufdatum: Zeitpunkt nachdem der Kontakt zu anonymisieren ist</p>
-</li>
-<li>
-<p>Löschsperre bis: Zeitpunkt bis wann der Kontakt nicht anonymisiert werden darf</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Ein Beispiel für einen Kontakt mit mehreren Modulzuordnungen:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/dsgvo-module.png" alt="dsgvo module">
-</div>
-<div class="title">Figure 22. Beispiel Modulzuordnungen</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="dsgvo-suche"><a class="anchor" href="#dsgvo-suche"></a>4.2. Abgelaufene Kontakte identifizieren</h3>
-<div class="paragraph">
-<p>In der Hauptübersicht befindet sich eine DSGVO-Suchfunktion. Mit dieser Suche
-können folgende DSGVO-Informationen abgefragt werden:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Auswahl Module</p>
-</li>
-<li>
-<p>Ablaufdatum überschritten</p>
-</li>
-<li>
-<p>Löschsperre abgelaufen</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Des Weiteren kann diese Suche mit den Such-Kriterien der Standardsuche kombiniert werden.
-Das folgende Beispiel zeigt eine Suche nach abgelaufenen Kontakten:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/dsgvo-suche.png" alt="dsgvo suche">
-</div>
-<div class="title">Figure 23. DSGVO-Suche</div>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Es erfolgt keine automatische Anonymisierung nachdem das Ablaufdatum und/oder die Löschsperre abgelaufen sind.
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="dsgvo-anonymisieren"><a class="anchor" href="#dsgvo-anonymisieren"></a>4.3. Kontakt anonymisieren</h3>
-<div class="paragraph">
-<p>Kontakte einer openKONSEQUENZ-Installation werden ausschließlich über das Modul
-Kontaktstammdaten anonymisiert. Dabei ist folgendes zu beachten:</p>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Das Anonymisieren von Kontakten erfolgt immer manuell und für jeden Kontakt einzeln.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Des Weiteren sind entsprechende Berechtigungen notwendig:</p>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Für das Anonymisieren von Kontakten ist die "Schreibende Rolle" oder die Rolle "Administrator" notwendig.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Sind alle Voraussetzung erfüllt, wird der Kontakt wird über das <a href="#kontakt-bearbeiten">Bearbeiten-Symbol</a> in der Haupttabelle
-aufgerufen, anschließend öffnet sich die Erfassungsmaske zur Bearbeitung eines
-Kontakts:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/dsgvo-anonymisieren-vorher.png" alt="dsgvo anonymisieren vorher">
-</div>
-<div class="title">Figure 24. Kontaktansicht mit Anonymisieren-Button</div>
-</div>
-<div class="paragraph">
-<p>Über die Schaltfläche "Anonymisieren" erfolgt das Unkenntlichmachen des Kontakts.
-Dazu wird der Name auf "* * *" geändert und alle anderen Felder geleert.</p>
-</div>
-<div class="paragraph">
-<p>Zuvor muss aber noch der folgende Dialog bestätigt werden:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/dsgvo-anonymisieren-hinweis.png" alt="dsgvo anonymisieren hinweis">
-</div>
-<div class="title">Figure 25. Hinweis vor dem Anonymisieren</div>
-</div>
-<div class="paragraph">
-<p>Ist dies erfolgt, öffnet sich anschließend die Hauptansicht und der anonymisierte
-Kontakt ist nicht mehr auffindbar.</p>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Ein anonymisierter Kontakt kann nicht wiederhergestellt werden.
-</td>
-</tr>
-</table>
-</div>
-<div style="page-break-after: always;"></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="verwaltung-stammdaten"><a class="anchor" href="#verwaltung-stammdaten"></a>5. Verwaltung der Stammdaten</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Die Funktionen zur Verwaltung der Stammdaten verbirgt sich hinter dem folgenden
-Symbol in der Menüleiste:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/admin-menue-symbol.png" alt="admin menue symbol">
-</div>
-<div class="title">Figure 26. Symbol zum Aufruf der Stammdaten-Verwaltung</div>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Die Stammdaten-Verwaltung ist nur für die Rolle "Administrator" verfügbar.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Es können folgende Stammdaten bearbeitet werden:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Anreden</p>
-</li>
-<li>
-<p>Adresstypen</p>
-</li>
-<li>
-<p>Kommunikationstypen</p>
-</li>
-<li>
-<p>Personentypen</p>
-</li>
-</ul>
-</div>
-<div class="sect2">
-<h3 id="_anreden"><a class="anchor" href="#_anreden"></a>5.1. Anreden</h3>
-<div class="paragraph">
-<p>Nach dem Aufruf der Anreden-Verwaltung erscheint die Übersicht mit allen bereits
-angelegten Anreden:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/uebersicht-anrede.png" alt="uebersicht anrede">
-</div>
-<div class="title">Figure 27. Tabellenansicht der Anreden</div>
-</div>
-<div class="paragraph">
-<p>Über die Schaltfläche "Neu" kann ein Eintrag angelegt werden.
-Anschließend öffnet sich die folgende Maske, die auch bei der Bearbeitung zum Einsatz kommt:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/anrede-anlegen.png" alt="anrede anlegen">
-</div>
-<div class="title">Figure 28. Maske zur Anlage von Anreden</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_adresstypen"><a class="anchor" href="#_adresstypen"></a>5.2. Adresstypen</h3>
-<div class="paragraph">
-<p>Nach dem Aufruf der Adresstypen-Verwaltung erscheint die Übersicht mit allen bereits
-angelegten Adresstypen:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/adresstypen-uebersicht.png" alt="adresstypen uebersicht">
-</div>
-<div class="title">Figure 29. Tabellenansicht der Adresstypen</div>
-</div>
-<div class="paragraph">
-<p>Über die Schaltfläche "Neu" kann ein Eintrag angelegt werden.
-Anschließend öffnet sich die folgende Maske, die auch bei der Bearbeitung zum Einsatz kommt:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/adresstyp-anlegen.png" alt="adresstyp anlegen">
-</div>
-<div class="title">Figure 30. Maske zur Anlage eines Adresstyps</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_kommunikationstypen"><a class="anchor" href="#_kommunikationstypen"></a>5.3. Kommunikationstypen</h3>
-<div class="paragraph">
-<p>Nach dem Aufruf der Kommunikationstypen-Verwaltung erscheint die Übersicht mit allen bereits
-angelegten Kommunikationstypen:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/kommunikationstypen-uebersicht.png" alt="kommunikationstypen uebersicht">
-</div>
-<div class="title">Figure 31. Tabellenansicht der Kommunikationstypen</div>
-</div>
-<div class="paragraph">
-<p>Über die Schaltfläche "Neu" kann ein Eintrag angelegt werden.
-Anschließend öffnet sich die folgende Maske, die auch bei der Bearbeitung zum Einsatz kommt:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/kommunikationstypen-anlegen.png" alt="kommunikationstypen anlegen">
-</div>
-<div class="title">Figure 32. Maske zur Anlage eines Kommunikationstypens</div>
-</div>
-<div class="paragraph">
-<p>Einige Einträge sind in der Standardkonfiguration enthalten und dürfen somit
-nicht geändert werden. Diese sind in der Übersichtstabelle mit einem Auge-Symbol
-gekennzeichnet. Wird der entsprechende Eintrag über dieses Symbol geöffnet,
-so können keine Anpassungen vorgenommen werden.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/kommunikationstyp-nur-ansicht.png" alt="kommunikationstyp nur ansicht">
-</div>
-<div class="title">Figure 33. Maske zur Ansicht eines Kommunikationstyps</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_personentypen"><a class="anchor" href="#_personentypen"></a>5.4. Personentypen</h3>
-<div class="paragraph">
-<p>Nach dem Aufruf der Personentypen-Verwaltung erscheint die Übersicht mit allen bereits
-angelegten Personentypen:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/personentypen-uebersicht.png" alt="personentypen uebersicht">
-</div>
-<div class="title">Figure 34. Tabellenansicht der Personentypen</div>
-</div>
-<div class="paragraph">
-<p>Über die Schaltfläche "Neu" kann ein Eintrag angelegt werden.
-Anschließend öffnet sich die folgende Maske, die auch bei der Bearbeitung zum Einsatz kommt:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/personentypen-anlegen.png" alt="personentypen anlegen">
-</div>
-<div class="title">Figure 35. Maske zur Anlage eines Personentyps</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="meldungen-hinweise"><a class="anchor" href="#meldungen-hinweise"></a>6. Hinweise und Meldungen nach Benutzeraktionen</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Nach Benutzeraktionen erscheinen in bestimmten Fällen Meldungen des Systems,
-um den Benutzer:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Handlungsanweisungen zu geben,</p>
-</li>
-<li>
-<p>über Fehler des Systems zu informieren.</p>
-</li>
-</ul>
-</div>
-<div class="sect2">
-<h3 id="_erfolg_einer_aktion"><a class="anchor" href="#_erfolg_einer_aktion"></a>6.1. Erfolg einer Aktion</h3>
-<div class="paragraph">
-<p>Ist eine Benutzeraktion erfolgreich, so erscheint keine Meldung.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_handlungsanweisung"><a class="anchor" href="#_handlungsanweisung"></a>6.2. Handlungsanweisung</h3>
-<div class="paragraph">
-<p>In einigen Situationen muss der Benutzer weitere Aktionen ausführen, damit die
-Handlung erfolgreich abgeschlossen werden kann. Diese gelb hinterlegten Hinweise
-erscheinen im folgenden Fall:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Fehlenden Informationen (Pflichtfelder füllen)</p>
-</li>
-<li>
-<p>LDAP- und Auth&amp;Auth-User dürfen für einen Kontakt nicht gleichzeitig synchronisiert werden</p>
-</li>
-</ul>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/meldung-hinweis.png" alt="meldung hinweis">
-</div>
-<div class="title">Figure 36. Hinweis Pflichtfelder</div>
-</div>
-<div class="paragraph">
-<p>Diese Meldungen bleiben für fünf Sekunden sichtbar und verschwinden dann wieder
-automatisch.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_fehlermeldungen"><a class="anchor" href="#_fehlermeldungen"></a>6.3. Fehlermeldungen</h3>
-<div class="paragraph">
-<p>Wenn Aktionen aufgrund technischer Gegebenheiten nicht erfolgreich durchgeführt
-werden können, erscheinen rot hinterlegte Fehlermeldungen. Das kann u.a. in
-folgenden Situationen passieren:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Speichern fehlgeschlagen</p>
-</li>
-<li>
-<p>Web Services nicht verfügbar</p>
-</li>
-</ul>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/meldung-fehler.png" alt="meldung fehler">
-</div>
-<div class="title">Figure 37. Fehlermeldung</div>
-</div>
-<div class="paragraph">
-<p>Diese Meldungen bleiben solange sichtbar bis sie durch den Benutzer über das
-kleine x geschlossen werden. In diesen Fällen ist der Administrator zu
-informieren.</p>
-</div>
-<div style="page-break-after: always;"></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_allgemeine_funktionen"><a class="anchor" href="#_allgemeine_funktionen"></a>7. Allgemeine Funktionen</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_an_und_abmelden"><a class="anchor" href="#_an_und_abmelden"></a>7.1. An- und abmelden</h3>
-<div class="sect3">
-<h4 id="_modul_kontaktstammdaten_aus_portal_starten"><a class="anchor" href="#_modul_kontaktstammdaten_aus_portal_starten"></a>7.1.1. Modul "Kontaktstammdaten" aus Portal starten</h4>
-<div class="paragraph">
-<p>Nach erfolgreicher Anmeldung am openKONSEQUENZ-Portal und mit entsprechender
-Berechtigung für das Modul "Kontaktstammdaten" ist die Kachel für das Modul
-sichtbar. Mit einem Klick auf die Kachel startet das Modul "Kontaktstammdaten"
-in einem neuen Fenster.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/oeffnen-modul.png" alt="oeffnen modul">
-</div>
-<div class="title">Figure 38. Kachel zum Starten des Moduls "Kontaktstammdaten"</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_abmelden"><a class="anchor" href="#_abmelden"></a>7.1.2. Abmelden</h4>
-<div class="paragraph">
-<p>Die Schaltfläche zum Abmelden befindet sich hinter dem Benutzernamen.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/abmelden.png" alt="abmelden">
-</div>
-<div class="title">Figure 39. Abmelden vom openKONSEQUENZ-System</div>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Beim Klick auf "Abmelden" erfolgt nicht nur die Abmeldung vom Modul
-Kontaktstammdaten, sondern die Abmeldung vom Portal. D.h. alle parallel geöffneten
-openKONSEQUENZ-Module (wie z.B. Betriebstagebuch, Geplante Netzmaßnahme) werden
-automatisch mit abgemeldet.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Um die parallel geöffneten openKONSEQUENZ-Module nicht mit abzumelden, ist
-lediglich das Browserfenster mit dem Modul Kontaktstammdaten zu schließen.</p>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_home_button"><a class="anchor" href="#_home_button"></a>7.2. Home-Button</h3>
-<div class="paragraph">
-<p>Über den folgenden Home-Button in der Menüleiste kann jederzeit zur Tabellenansicht
-zurückgekehrt werden.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/haus-symbol.png" alt="haus symbol">
-</div>
-<div class="title">Figure 40. Home-Button</div>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<img src="../images/icons/caution.png" alt="Caution">
-</td>
-<td class="content">
-Der Aufruf des Home-Buttons setzt die Suche, Filter und Sortierfunktion wieder zurück, sodass die Standardansicht wiederhergestellt ist.
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="suche-suche"><a class="anchor" href="#suche-suche"></a>7.3. Suche</h3>
-<div class="paragraph">
-<p>In der Übersicht ist eine Such-Funktion integriert, die eingegebenen Zeichen in
-den Datensätzen der Kontaktstammdaten sucht. Bei der Suche werden alle Felder
-berücksichtigt.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/suche-beispiel.png" alt="suche beispiel">
-</div>
-<div class="title">Figure 41. Suchfunktion</div>
-</div>
-<div class="paragraph">
-<p>Das Auswahlfeld "Kontakttypen" bestimmt den Suchumfang:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Alle Kontakttypen</p>
-</li>
-<li>
-<p>Interne Personen</p>
-</li>
-<li>
-<p>Externe Personen</p>
-</li>
-<li>
-<p>Unternehmen</p>
-</li>
-<li>
-<p>Ansprechpartner</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Die Suche wird direkt beim Eintippen des Suchbegriffs bzw. bei der Auswahl
-eines Filterkriteriums ausgeführt.</p>
-</div>
-<div class="paragraph">
-<p>Darüber hinaus steht eine <a href="#dsgvo-suche">DSGVO-Suche</a> zur Verfügung.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="sortieren"><a class="anchor" href="#sortieren"></a>7.4. Sortieren</h3>
-<div class="paragraph">
-<p>Die Sortierung in der Haupttabelle erfolgt über zwei Auswahlfelder:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/auswahl-sortierung.png" alt="auswahl sortierung">
-</div>
-<div class="title">Figure 42. Auswahl des Attributs für die Sortierung</div>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/auswahl-sortierung-2.png" alt="auswahl sortierung 2">
-</div>
-<div class="title">Figure 43. Auswahl der Reihenfolge</div>
-</div>
-<div class="paragraph">
-<p>Nach Auswahl der entsprechenden Felder erfolgt die Suche automatisch.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_hilfe"><a class="anchor" href="#_hilfe"></a>7.5. Hilfe</h3>
-<div class="paragraph">
-<p>Diese Benutzerdokumentation ist über das Hilfe-Symbol in der Kopfzeile erreichbar:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="../images/hilfe.png" alt="hilfe">
-</div>
-<div class="title">Figure 44. Hilfe-Symbol</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_synchronisierung_mit_verzeichnisdiensten"><a class="anchor" href="#_synchronisierung_mit_verzeichnisdiensten"></a>7.6. Synchronisierung mit Verzeichnisdiensten</h3>
-<div class="paragraph">
-<p>Die Aktivierung der Synchronisierung der Kontaktstammdaten mit den Verzeichnisdiensten
-LDAP und/oder Auth&amp;Auth erfolgt durch den Administrator.</p>
-</div>
-<div style="page-break-after: always;"></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_kompatibilität"><a class="anchor" href="#_kompatibilität"></a>8. Kompatibilität</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Die Anwendung ist für folgende Endgeräte optimiert:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Desktop-PC</p>
-</li>
-<li>
-<p>Tablet</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Es unterstützt folgende Browser:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Google Chrome</p>
-</li>
-<li>
-<p>Firefox</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Die Bildschirmauflösung bzw. die Fenstergröße des Browsers sollte folgende
-Werte nicht unterschreiten:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>1.024 x 768 Pixel</p>
-</li>
-</ul>
-</div>
-<div style="page-break-after: always;"></div>
-</div>
-</div>
-        </div>
-      </div>
-    </body>
-  </html>
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/constants/Constants.java b/src/main/java/org/eclipse/openk/contactbasedata/constants/Constants.java
index 01ae819..c3a97b1 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/constants/Constants.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/constants/Constants.java
@@ -30,8 +30,8 @@
         // empty Constructor for the sake of SONAR
     }
     public static final String DB_VERSION_NOT_PRESENT = "DB-Version-not_present";
-    public static final String CONTACT_TYPE_INTERNAL_PERSON = "I_P";
-    public static final String CONTACT_TYPE_EXTERNAL_PERSON = "E_P";
-    public static final String CONTACT_TYPE_CONTACT_PERSON = "C_P";
-    public static final String CONTACT_TYPE_COMPANY = "COM";
+    public static final String CONTACT_TYPE_CONTACT_PERSON = "1CP";
+    public static final String CONTACT_TYPE_EXTERNAL_PERSON = "2EP";
+    public static final String CONTACT_TYPE_INTERNAL_PERSON = "3IP";
+    public static final String CONTACT_TYPE_COMPANY = "4CO";
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/model/VwDetailedContact.java b/src/main/java/org/eclipse/openk/contactbasedata/model/VwDetailedContact.java
index 4471017..a1fd7bd 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/model/VwDetailedContact.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/model/VwDetailedContact.java
@@ -43,9 +43,7 @@
     private String note;
     private String salutationType;
     private String personType;
-    private String street;
-    private String housenumber;
-    private String community;
+    private String mainAddress;
     private String email;
     private String searchfield;
     private Boolean anonymized;
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 9857de6..ed49424 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -52,6 +52,7 @@
   technical-userpassword: admin
 
 server:
+  port: 9155
   max-http-header-size: 262144
 
 jwt:
diff --git a/src/main/resources/db/migration/V0_20__CREATE_CBD_DB.sql b/src/main/resources/db/migration/V0_20__CREATE_CBD_DB.sql
new file mode 100644
index 0000000..b1818ab
--- /dev/null
+++ b/src/main/resources/db/migration/V0_20__CREATE_CBD_DB.sql
@@ -0,0 +1,709 @@
+-----------------------------------------------------------------------------------
+-- *******************************************************************************
+-- * Copyright (c) 2019 Contributors to the Eclipse Foundation
+-- *
+-- * See the NOTICE file(s) distributed with this work for additional
+-- * information regarding copyright ownership.
+-- *
+-- * This program and the accompanying materials are made available under the
+-- * terms of the Eclipse Public License v. 2.0 which is available at
+-- * http://www.eclipse.org/legal/epl-2.0.
+-- *
+-- * SPDX-License-Identifier: EPL-2.0
+-- *******************************************************************************
+-----------------------------------------------------------------------------------
+
+-- CREATE ROLE CBD_SERVICE LOGIN
+-- NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
+-- ALTER ROLE CBD_SERVICE with password 'cbd_service';
+-- Insert new Columns into table REF_COMMUNICATION_TYPE ('EDITABLE, 'MAPPING_LDAP')
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.VERSION CASCADE;
+
+DROP TABLE IF EXISTS public.TBL_ADDRESS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_ADDRESS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_COMMUNICATION CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_COMMUNICATION_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_CONTACT_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_CONTACT_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_COMPANY CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_COMPANY_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_EXTERNAL_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_EXTERNAL_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_INTERNAL_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_INTERNAL_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_CONTACT CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_CONTACT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_ADDRESS_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_ADDRESS_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_PERSON_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_PERSON_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COMMUNICATION_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COMMUNICATION_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_SALUTATION CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_SALUTATION_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_ASSIGNMENT_MODUL_CONTACT CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_ASSIGNMENT_MODUL_CONTACT_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE VERSION
+-- ---------------------------------------------
+CREATE TABLE public.VERSION
+(
+  ID integer NOT NULL,
+  VERSION character varying(50) NOT NULL,
+  CONSTRAINT REF_VERSION_PKEY PRIMARY KEY (id)
+);
+
+ALTER TABLE public.VERSION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VERSION TO CBD_SERVICE;
+
+INSERT INTO public.VERSION (ID, VERSION) VALUES ( 1, '00-DEV' );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_CONTACT
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_contact_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_contact_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_CONTACT
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_contact_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  CONTACT_TYPE character varying(3),
+  NOTE character varying(255),
+  ANONYMIZED boolean,
+  CONSTRAINT TBL_CONTACT_PKEY PRIMARY KEY (ID)
+);
+
+
+
+ALTER TABLE public.TBL_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_CONTACT TO CBD_SERVICE;
+
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ae3f2ec1-ccc5-4269-a48f-dd40e37fa14e', 'COM', 'company 1 (id=1)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'fc7f598b-0d51-46bb-9563-99851fe6a3ad', 'COM', 'company 2 (id=2)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '556b91be-6d57-432f-93ed-65604dd6e5cd', 'C_P', 'contact person 1 (id=3)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '116380e3-25c5-4179-b40a-8abebe10fe07', 'C_P', 'contact person 2 (id=4)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '7782179b-fb79-4370-8f71-f4c71470d006', 'I_P', 'internal person 1 (id=5)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '8963aa38-d021-4dc9-bd70-d3734ccd20c4', 'I_P', 'internal person 2 (id=6)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'c862d604-5766-43d6-a7e8-a4bac2bd01e1', 'E_P', 'external person 1 (id=7)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'fa3d981b-a7d6-4965-a623-cdbc69404153', 'E_P', 'external person 2 (id=8)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ceba21e9-e685-483b-840e-ad167860a696', 'COM', 'anonymous company A (id=9)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '7889c814-9752-4e4e-a9fe-b46f36a38ccd', 'COM', 'anonymous company B (id=10)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '618a01a3-f348-44cc-9ddd-c9df946b0212', 'C_P', 'anoymous contact person A1 (id=11)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '4ed82474-3878-457a-baef-c28b8e486f25', 'C_P', 'anoymous contact persion A2 (id=12)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '8fe41b90-d10c-4a70-8fde-0990286ad3c6', 'I_P', 'internal person 3 (id=13)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ab804610-d6a4-4803-a4a1-3f6cb742b2a4', 'I_P', 'internal person 4 (id=14)', null );
+
+
+CREATE UNIQUE INDEX idx_tbl_contact_contact_type ON public.TBL_CONTACT  ( ID ASC );
+CREATE UNIQUE INDEX idx_cntct_uuid ON public.TBL_CONTACT (UUID);
+CREATE INDEX idx_cntct_anonym ON public.TBL_CONTACT (ANONYMIZED);
+
+
+-- ---------------------------------------------
+-- TABLE REF_ADDRESS_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_address_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_address_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_ADDRESS_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_address_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_ADDRESS_TYPE_PKEY PRIMARY KEY (ID)
+);
+
+ALTER TABLE public.REF_ADDRESS_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_ADDRESS_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_address_type_uuid ON public.REF_ADDRESS_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '3802e681-9396-434e-b19c-5fedcec40ba7', 'Geschäftsadresse', 'Adresse des Hauptfirmensitzes' );
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( 'f43ed6ac-9e7a-40f6-acc9-ec6b73eebf79', 'Privatadresse', 'private Anschrift' );
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '70fd0811-f674-4f3a-96a7-7ae29fc95188', 'Lieferadresse', 'Adresse für Lieferungen' );
+
+
+-- ---------------------------------------------
+-- TABLE REF_PERSON_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_person_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_person_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_PERSON_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_person_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_PERSON_TYPE_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_PERSON_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_PERSON_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_person_type_uuid ON public.REF_PERSON_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '47ce68b7-6d44-453e-b421-19020fd791b5', 'Rechtsanwalt', '' );
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( 'a7522c72-14d0-4e9d-afe3-bfcb3ffbec10', 'Geschäftsführer', '' );
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '2eb4885e-7363-4918-90ed-b7d5d84cfd3f', 'Rechnungsempfänger', 'Person, der Rechnungen zukommen' );
+
+
+-- ---------------------------------------------
+-- TABLE REF_COMMUNICATION_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_communication_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_communication_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_COMMUNICATION_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_communication_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  TYPE_EMAIL boolean,
+  CONSTRAINT REF_COMMUNICATION_TYPE_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_COMMUNICATION_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_COMMUNICATION_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_communication_type_uuid ON public.REF_COMMUNICATION_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '4757ca3a-72c2-4f13-a2f6-ce092e3eadf4', 'E-Mail', 'E-Mail Adresse', true );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '77028572-ff57-4c1d-999a-78fa3fcbc1cd', 'Festnetz', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( 'f7d5b343-00c2-4d7f-8e03-009aad3d90f7', 'Mobil', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '2bfe40f9-c4eb-4d2e-855f-6b0883912846', 'Fax', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( 'd00d1a61-c8e7-43b2-959f-66e986731441', 'WhatsApp', '', false );
+
+-- ---------------------------------------------
+-- TABLE REF_SALUTATION
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_salutation_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_salutation_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_SALUTATION
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_salutation_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_SALUTATION_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_SALUTATION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_SALUTATION TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_salutation_uuid ON public.REF_SALUTATION ( UUID ASC );
+
+INSERT INTO public.REF_SALUTATION (UUID, TYPE, DESCRIPTION) VALUES ( '90119f18-5562-425d-9a36-3dd58ea125e5', 'Herr', 'Anrede männlich' );
+INSERT INTO public.REF_SALUTATION (UUID, TYPE, DESCRIPTION) VALUES ( '4e873baa-e4f5-4585-8b16-2db8fac66538', 'Frau', 'Anrede weiblich' );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_ADDRESS
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_address_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_address_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_ADDRESS
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_address_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_ADDRESS_TYPE bigint,
+  IS_MAIN_ADDRESS boolean,
+  POSTCODE character varying(30),
+  COMMUNITY character varying(255),
+  COMMUNITY_SUFFIX character varying(255),
+  STREET character varying(255),
+  HOUSENUMBER character varying(30),
+  WGS_84_ZONE character varying(255),
+  LATITUDE character varying(255),
+  LONGITUDE character varying(255),
+  URL_MAP character varying(255),
+  NOTE character varying(255),
+
+  CONSTRAINT TBL_ADDRESS_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_ADDRESS__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_ADDRESS__ADDRESS_TYPE_ID_FKEY FOREIGN KEY (FK_ADDRESS_TYPE)
+       REFERENCES public.REF_ADDRESS_TYPE (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_ADDRESS
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_ADDRESS TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_address_uuid ON public.TBL_ADDRESS ( UUID ASC );
+
+INSERT INTO public.TBL_ADDRESS (UUID, FK_CONTACT_ID, FK_ADDRESS_TYPE, IS_MAIN_ADDRESS, POSTCODE, COMMUNITY, COMMUNITY_SUFFIX, STREET, HOUSENUMBER, WGS_84_ZONE, LATITUDE, LONGITUDE, URL_MAP, NOTE) VALUES ( '37e800fe-64f0-4834-8b83-8453cbb936a5', 2, 1, true, '12345', 'Heringsdorf','', 'Flunderweg', '5', '', '53 NL', '3 WB','www.xyz', 'nur über Seeweg erreichbar');
+INSERT INTO public.TBL_ADDRESS (UUID, FK_CONTACT_ID, FK_ADDRESS_TYPE, IS_MAIN_ADDRESS, POSTCODE, COMMUNITY, COMMUNITY_SUFFIX, STREET, HOUSENUMBER, WGS_84_ZONE, LATITUDE, LONGITUDE, URL_MAP, NOTE) VALUES ( '8a1202ae-2532-474e-8367-a1f0e13e9fbd', 1, 2, false, '67890', 'Stralsund','', 'Schollendamm', '18', '', '53 N', '2 WB','www.xyz', 'Hochwassergefahr');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_COMMUNICATION
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_communication_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_communication_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_COMMUNICATION
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_communication_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_COMMUNICATION_TYPE bigint,
+  COMMUNICATION_DATA character varying(1024),
+  NOTE character varying(255),
+
+  CONSTRAINT TBL_COMMUNICATION_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_COMMUNICATION__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_COMMUNICATION__COMMUNICATION_TYPE_ID_FKEY FOREIGN KEY (FK_COMMUNICATION_TYPE)
+       REFERENCES public.REF_COMMUNICATION_TYPE (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_COMMUNICATION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_COMMUNICATION TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_communication_uuid ON public.TBL_COMMUNICATION ( UUID ASC );
+
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '25f6d7cc-b168-4dd5-a36d-6f14b2f956e9', 2, 2, 'bitte melden Sie sich bei uns', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'a5fa380e-8f33-4ea7-9416-e03d11b91cae', 1, 3, 'bitte melden zwecks Terminabstimmung', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'c0dcef80-ca07-48b7-a3ed-2c99c4388928', 1, 1, 'info@bigbang.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'd19d9e10-d2dd-4383-84ec-2fe96421c0a3', 2, 1, 'info@pharmapeekltd.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '234b63e4-d8db-48ab-899f-0320903c01af', 3, 1, 'reinbold.tab@pharmapeek.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '11e25c02-de00-430d-b6cd-f02f7c60e026', 5, 1, 'PaulineF@gmx.net', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '9ca29c3b-e189-4ce9-9401-15001c769627', 6, 1, 'mo@gmail.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '05505b1a-61df-45c0-b006-64165cbadfa2', 7, 1, 'MGruebelSport@fogger.mil', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'b52dabaf-d156-4fd0-a07c-510673112a15', 8, 1, 'Mini.osterbrink@yahoo.ie', 'Info...');
+
+-- ---------------------------------------------
+-- TABLE TBL_COMPANY
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_company_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_company_id_seq
+  OWNER TO CBD_SERVICE;
+
+
+CREATE TABLE public.TBL_COMPANY
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_company_id_seq'::regclass),
+  COMPANY_NAME character varying(255),
+  COMPANY_TYPE character varying(30),
+  HR_NUMBER character varying(255),
+  FK_CONTACT_ID bigint NOT NULL,
+  CONSTRAINT TBL_COMPANY_PKEY PRIMARY KEY (id),
+  CONSTRAINT TBL_COMPANY__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_COMPANY
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_COMPANY TO CBD_SERVICE;
+
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( 'BigBang Logistic', 'Logistik', '123', 1 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( 'Pharma Peek', 'Pharma', '345', 2 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( '***', '***', null, 9 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( '***', '***', null, 10 );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_CONTACT_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_contact_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_contact_person_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_CONTACT_PERSON
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_contact_person_id_seq'::regclass),
+  FIRST_NAME character varying(255),
+  LAST_NAME character varying(255),
+  TITLE character varying(255),
+  FK_SALUTATION_ID bigint,
+  FK_REF_PERSON_TYPE_ID bigint NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_COMPANY_ID bigint NOT NULL,
+  CONSTRAINT TBL_CONTACT_PERSON_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_CONTACT_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+      REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+           REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+           ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__COMPANY_ID_FKEY FOREIGN KEY (FK_COMPANY_ID)
+       REFERENCES public.TBL_COMPANY (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_CONTACT_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_CONTACT_PERSON TO CBD_SERVICE;
+
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( 'Tabea', 'Reinebold', 'Dr.', 2, 1, 3, 2);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( 'Jan', 'Wacker', '', 1, 1, 4, 2);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( '***', '***', null, null, null, 11, 3);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( '***', '***', null, null, null, 12, 2);
+
+-- ---------------------------------------------
+-- TABLE TBL_EXTERNAL_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_external_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_external_person_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_EXTERNAL_PERSON
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_external_person_id_seq'::regclass),
+  FIRST_NAME character varying(255),
+  LAST_NAME character varying(255),
+  TITLE character varying(255),
+  FK_SALUTATION_ID bigint,
+  FK_REF_PERSON_TYPE_ID bigint,
+  FK_CONTACT_ID bigint NOT NULL,
+  CONSTRAINT TBL_EXTERNAL_PERSON_PKEY PRIMARY KEY (id),
+  CONSTRAINT TBL_EXTERNAL_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+       REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_EXTERNAL_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+         REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_EXTERNAL_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+           REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+           ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_EXTERNAL_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_EXTERNAL_PERSON TO CBD_SERVICE;
+
+INSERT INTO public.TBL_EXTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID) VALUES ( 'Monica', 'Grübel', 'Dipl.-Sportlehrerin', 2, 1, 7);
+INSERT INTO public.TBL_EXTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID) VALUES ( 'Maurice', 'Fürstenberg', 'B.A.', 2, 2, 8);
+
+
+-- ---------------------------------------------
+-- TABLE TBL_INTERNAL_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_internal_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_internal_person_id_seq
+  OWNER TO CBD_SERVICE;
+CREATE TABLE public.TBL_INTERNAL_PERSON
+(
+   ID bigint NOT NULL DEFAULT nextval('tbl_internal_person_id_seq'::regclass),
+   FIRST_NAME character varying(255),
+   LAST_NAME character varying(255),
+   TITLE character varying(255),
+   FK_SALUTATION_ID bigint,
+   FK_REF_PERSON_TYPE_ID bigint,
+   DEPARTMENT character varying(255),
+   UID character varying(255),
+   USER_REF character varying(255),
+   FK_CONTACT_ID bigint NOT NULL,
+   CONSTRAINT TBL_INTERNAL_PERSON_PKEY PRIMARY KEY (ID),
+   CONSTRAINT TBL_INTERNAL_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+   CONSTRAINT TBL_INTERNAL_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+         REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION,
+   CONSTRAINT TBL_INTERNAL_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+         REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_INTERNAL_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_INTERNAL_PERSON TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_internal_person_uid ON public.TBL_INTERNAL_PERSON ( UID ASC );
+CREATE UNIQUE INDEX idx_tbl_internal_person_user_ref ON public.TBL_INTERNAL_PERSON ( USER_REF ASC );
+
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Pauline', 'Freudenberg', 'B.Sc.', 1, 1,'Abteilung Rechnungsstellung', '66cd78c3-6716-4ab3-b834-a199fc796b88', 'PFREUD',  5);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Bernhardt', 'Iffland', '', 2, 2,'Kreativ', '4124e4e7-3488-4492-bf39-75e6a23a1c1a', 'BIFFL', 6);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Horatio', 'Hornblower', 'Capt.', 1, 2,'Royal Navy', 'hhornblo', 'HORNB', 13);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Cornelius', 'Buckley', '', 1, 2,'Royal Navy', null, 'BUCKC', 14);
+-- ---------------------------------------------
+-- TABLE TBL_ASSIGNMENT_MODUL_CONTACT
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_assignment_modul_contact_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_assignment_modul_contact_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_ASSIGNMENT_MODUL_CONTACT
+(
+  id bigint NOT NULL DEFAULT nextval('tbl_assignment_modul_contact_id_seq'::regclass),
+  uuid uuid NOT NULL,
+  fk_contact_id bigint NOT NULL,
+  modul_name character varying(255),
+  assignment_date timestamp,
+  expiring_date timestamp,
+  deletion_lock_until timestamp,
+  assignment_note character varying(2048),
+  CONSTRAINT tbl_assignment_modul_contact_pkey PRIMARY KEY (id),
+  CONSTRAINT tbl_assignment_modul_contact_id_fkey FOREIGN KEY (fk_contact_id)
+      REFERENCES public.tbl_contact (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_assignment_modul_contact
+  OWNER TO cbd_service;
+GRANT ALL ON TABLE public.tbl_assignment_modul_contact TO cbd_service;
+
+INSERT INTO public.tbl_assignment_modul_contact(uuid, fk_contact_id, modul_name, assignment_date, expiring_date, deletion_lock_until, assignment_note) VALUES ( 'dfc2979c-40e3-11ea-b77f-2e728ce88125', 1, 'Betriebstagebuch', '2020-01-19 10:23:54', '2021-01-19 00:00:00', '2021-01-19 00:00:00', 'seit Januar zugeordnet');
+INSERT INTO public.tbl_assignment_modul_contact(uuid, fk_contact_id, modul_name, assignment_date, expiring_date, deletion_lock_until, assignment_note) VALUES ( '4009bce2-40e5-11ea-b77f-2e728ce88125', 1, 'Störinfos', '2020-02-27 10:23:54', '2019-02-27 00:00:00', '2019-02-27 00:00:00', 'seit Februar zugeordnet');
+
+-- -------------------------------------
+-- VIEWS -------------------------------
+-- -------------------------------------
+DROP VIEW IF EXISTS VW_GENERAL_CONTACT CASCADE;
+
+CREATE VIEW VW_GENERAL_CONTACT
+AS
+SELECT g.id,
+	c.uuid,
+	g.name,
+	c.contact_type,
+	g.fk_contact_id,
+	g.company_name,
+	g.company_type,
+	g.company_id,
+	g.fk_salutation_id,
+	g.fk_ref_person_type_id,
+	g.title,
+	g.first_name,
+	g.last_name,
+	g.department,
+	c.note,
+	c.anonymized
+FROM tbl_contact c
+INNER JOIN (
+
+SELECT company.id,
+	company_name as name,
+	fk_contact_id,
+	company_name,
+	company_type,
+	cntct.uuid as company_id,
+	null as fk_salutation_id,
+	null as fk_ref_person_type_id,
+	null as title,
+	null as first_name,
+	null as last_name,
+	null as department
+FROM tbl_company company
+INNER JOIN tbl_contact cntct ON company.fk_contact_id = cntct.id
+
+UNION
+
+SELECT p.id,
+	COALESCE(p.last_name, '')
+	|| CASE WHEN COALESCE(p.last_name, '') <> '' AND COALESCE(p.first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(p.first_name,'') || ' [' || COALESCE(c.company_name, '') || ']' as name,
+	p.fk_contact_id,
+	c.company_name,
+	c.company_type,
+	company_contact.uuid as company_id,
+	p.fk_salutation_id,
+	p.fk_ref_person_type_id,
+	p.title,
+	p.first_name,
+	p.last_name,
+	null as department
+FROM tbl_contact_person p
+INNER JOIN tbl_company c ON c.id = p.fk_company_id
+INNER JOIN tbl_contact company_contact ON c.fk_contact_id = company_contact.id
+
+UNION
+
+SELECT id,
+	COALESCE(last_name, '')
+	|| CASE WHEN COALESCE(last_name, '') <> '' AND COALESCE(first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(first_name, '') as name,
+	fk_contact_id,
+	null as company_name,
+	null as company_type,
+	null as company_id,
+	fk_salutation_id,
+	fk_ref_person_type_id,
+	title,
+	first_name,
+	last_name,
+	department
+FROM tbl_internal_person
+
+UNION
+
+SELECT id,
+	COALESCE(last_name, '')
+	|| CASE WHEN COALESCE(last_name, '') <> '' AND COALESCE(first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(first_name, '') as name,
+	fk_contact_id,
+	null as company_name,
+	null as company_type,
+	null as company_id,
+	fk_salutation_id,
+	fk_ref_person_type_id,
+	title,
+	first_name,
+	last_name,
+	null as department
+FROM tbl_external_person
+	) g
+ON g.fk_contact_id = c.ID;
+
+ALTER VIEW public.VW_GENERAL_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VW_GENERAL_CONTACT TO CBD_SERVICE;
+
+
+DROP VIEW IF EXISTS VW_DETAILED_CONTACT;
+
+CREATE VIEW VW_DETAILED_CONTACT
+AS
+SELECT c.id,
+    c.uuid,
+	c.name,
+	c.contact_type,
+	c.fk_contact_id,
+	c.company_name,
+	c.company_type,
+	c.company_id,
+	c.anonymized,
+	s.uuid as salutation_uuid,
+	t.uuid as person_type_uuid,
+	c.title,
+	c.first_name,
+	c.last_name,
+	c.department,
+	c.note,
+	s.type as salutation_type,
+	t.type as person_type,
+	COALESCE(a.community, '') ||
+	        CASE WHEN COALESCE(a.street, '') || COALESCE(a.housenumber, '') = '' THEN '' ELSE ', ' END ||
+	        COALESCE(a.street, '') || ' ' || COALESCE(a.housenumber, '') as main_address,
+	com.communication_data as email,
+
+	UPPER(
+        COALESCE(c.name, '') || '|@|'
+        || COALESCE(company_name, '') || '|@|'
+        || COALESCE(c.company_type, '') || '|@|'
+        || COALESCE(c.title, '') || '|@|'
+        || COALESCE(c.first_name, '') || '|@|'
+        || COALESCE(c.last_name, '') || '|@|'
+        || COALESCE(c.department, '') || '|@|'
+        || COALESCE(c.note, '') || '|@|'
+        || COALESCE(s.type, '') || '|@|'
+        || COALESCE(t.type, '') || '|@|'
+        || COALESCE(a.street, '') || '|@|'
+        || COALESCE(a.housenumber, '') || '|@|'
+        || COALESCE(a.community, '') || '|@|'
+        || COALESCE(com.communication_data, '')
+    )as searchfield
+FROM VW_GENERAL_CONTACT c
+LEFT OUTER JOIN ref_salutation s ON c.fk_salutation_id = s.id
+LEFT OUTER JOIN tbl_address a ON a.fk_contact_id = c.fk_contact_id and is_main_address = true
+LEFT OUTER JOIN ref_person_type t ON c.fk_ref_person_type_id = t.id
+LEFT OUTER JOIN tbl_communication com ON (com.fk_contact_id = c.fk_contact_id AND com.fk_communication_type =
+    (SELECT ct.id FROM ref_communication_type ct WHERE ct.type_email = true)) ;
+
+ALTER VIEW public.VW_DETAILED_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VW_DETAILED_CONTACT TO CBD_SERVICE;
+
+
+
+
diff --git a/src/main/resources/db/migration/V0_21__CREATE_CBD_DB.sql b/src/main/resources/db/migration/V0_21__CREATE_CBD_DB.sql
new file mode 100644
index 0000000..2f0dd26
--- /dev/null
+++ b/src/main/resources/db/migration/V0_21__CREATE_CBD_DB.sql
@@ -0,0 +1,711 @@
+-----------------------------------------------------------------------------------
+-- *******************************************************************************
+-- * Copyright (c) 2019 Contributors to the Eclipse Foundation
+-- *
+-- * See the NOTICE file(s) distributed with this work for additional
+-- * information regarding copyright ownership.
+-- *
+-- * This program and the accompanying materials are made available under the
+-- * terms of the Eclipse Public License v. 2.0 which is available at
+-- * http://www.eclipse.org/legal/epl-2.0.
+-- *
+-- * SPDX-License-Identifier: EPL-2.0
+-- *******************************************************************************
+-----------------------------------------------------------------------------------
+
+-- CREATE ROLE CBD_SERVICE LOGIN
+-- NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
+-- ALTER ROLE CBD_SERVICE with password 'cbd_service';
+-- Insert new Columns into table REF_COMMUNICATION_TYPE ('EDITABLE, 'MAPPING_LDAP')
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.VERSION CASCADE;
+
+DROP TABLE IF EXISTS public.TBL_ADDRESS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_ADDRESS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_COMMUNICATION CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_COMMUNICATION_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_CONTACT_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_CONTACT_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_COMPANY CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_COMPANY_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_EXTERNAL_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_EXTERNAL_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_INTERNAL_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_INTERNAL_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_CONTACT CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_CONTACT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_ADDRESS_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_ADDRESS_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_PERSON_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_PERSON_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COMMUNICATION_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COMMUNICATION_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_SALUTATION CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_SALUTATION_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_ASSIGNMENT_MODUL_CONTACT CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_ASSIGNMENT_MODUL_CONTACT_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE VERSION
+-- ---------------------------------------------
+CREATE TABLE public.VERSION
+(
+  ID integer NOT NULL,
+  VERSION character varying(50) NOT NULL,
+  CONSTRAINT REF_VERSION_PKEY PRIMARY KEY (id)
+);
+
+ALTER TABLE public.VERSION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VERSION TO CBD_SERVICE;
+
+INSERT INTO public.VERSION (ID, VERSION) VALUES ( 1, '00-DEV' );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_CONTACT
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_contact_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_contact_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_CONTACT
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_contact_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  CONTACT_TYPE character varying(3),
+  NOTE character varying(255),
+  ANONYMIZED boolean,
+  CONSTRAINT TBL_CONTACT_PKEY PRIMARY KEY (ID)
+);
+
+
+
+ALTER TABLE public.TBL_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_CONTACT TO CBD_SERVICE;
+
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ae3f2ec1-ccc5-4269-a48f-dd40e37fa14e', 'COM', 'company 1 (id=1)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'fc7f598b-0d51-46bb-9563-99851fe6a3ad', 'COM', 'company 2 (id=2)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '556b91be-6d57-432f-93ed-65604dd6e5cd', 'C_P', 'contact person 1 (id=3)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '116380e3-25c5-4179-b40a-8abebe10fe07', 'C_P', 'contact person 2 (id=4)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '7782179b-fb79-4370-8f71-f4c71470d006', 'I_P', 'internal person 1 (id=5)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '8963aa38-d021-4dc9-bd70-d3734ccd20c4', 'I_P', 'internal person 2 (id=6)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'c862d604-5766-43d6-a7e8-a4bac2bd01e1', 'E_P', 'external person 1 (id=7)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'fa3d981b-a7d6-4965-a623-cdbc69404153', 'E_P', 'external person 2 (id=8)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ceba21e9-e685-483b-840e-ad167860a696', 'COM', 'anonymous company A (id=9)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '7889c814-9752-4e4e-a9fe-b46f36a38ccd', 'COM', 'anonymous company B (id=10)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '618a01a3-f348-44cc-9ddd-c9df946b0212', 'C_P', 'anoymous contact person A1 (id=11)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '4ed82474-3878-457a-baef-c28b8e486f25', 'C_P', 'anoymous contact persion A2 (id=12)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '8fe41b90-d10c-4a70-8fde-0990286ad3c6', 'I_P', 'internal person 3 (id=13)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ab804610-d6a4-4803-a4a1-3f6cb742b2a4', 'I_P', 'internal person 4 (id=14)', null );
+
+
+CREATE UNIQUE INDEX idx_tbl_contact_contact_type ON public.TBL_CONTACT  ( ID ASC );
+CREATE UNIQUE INDEX idx_cntct_uuid ON public.TBL_CONTACT (UUID);
+CREATE INDEX idx_cntct_anonym ON public.TBL_CONTACT (ANONYMIZED);
+
+
+-- ---------------------------------------------
+-- TABLE REF_ADDRESS_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_address_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_address_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_ADDRESS_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_address_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_ADDRESS_TYPE_PKEY PRIMARY KEY (ID)
+);
+
+ALTER TABLE public.REF_ADDRESS_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_ADDRESS_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_address_type_uuid ON public.REF_ADDRESS_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '3802e681-9396-434e-b19c-5fedcec40ba7', 'Geschäftsadresse', 'Adresse des Hauptfirmensitzes' );
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( 'f43ed6ac-9e7a-40f6-acc9-ec6b73eebf79', 'Privatadresse', 'private Anschrift' );
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '70fd0811-f674-4f3a-96a7-7ae29fc95188', 'Lieferadresse', 'Adresse für Lieferungen' );
+
+
+-- ---------------------------------------------
+-- TABLE REF_PERSON_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_person_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_person_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_PERSON_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_person_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_PERSON_TYPE_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_PERSON_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_PERSON_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_person_type_uuid ON public.REF_PERSON_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '47ce68b7-6d44-453e-b421-19020fd791b5', 'Rechtsanwalt', '' );
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( 'a7522c72-14d0-4e9d-afe3-bfcb3ffbec10', 'Geschäftsführer', '' );
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '2eb4885e-7363-4918-90ed-b7d5d84cfd3f', 'Rechnungsempfänger', 'Person, der Rechnungen zukommen' );
+
+
+-- ---------------------------------------------
+-- TABLE REF_COMMUNICATION_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_communication_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_communication_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_COMMUNICATION_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_communication_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  TYPE_EMAIL boolean,
+  CONSTRAINT REF_COMMUNICATION_TYPE_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_COMMUNICATION_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_COMMUNICATION_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_communication_type_uuid ON public.REF_COMMUNICATION_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '4757ca3a-72c2-4f13-a2f6-ce092e3eadf4', 'E-Mail', 'E-Mail Adresse', true );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '77028572-ff57-4c1d-999a-78fa3fcbc1cd', 'Festnetz', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( 'f7d5b343-00c2-4d7f-8e03-009aad3d90f7', 'Mobil', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '2bfe40f9-c4eb-4d2e-855f-6b0883912846', 'Fax', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( 'd00d1a61-c8e7-43b2-959f-66e986731441', 'WhatsApp', '', false );
+
+-- ---------------------------------------------
+-- TABLE REF_SALUTATION
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_salutation_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_salutation_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_SALUTATION
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_salutation_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_SALUTATION_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_SALUTATION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_SALUTATION TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_salutation_uuid ON public.REF_SALUTATION ( UUID ASC );
+
+INSERT INTO public.REF_SALUTATION (UUID, TYPE, DESCRIPTION) VALUES ( '90119f18-5562-425d-9a36-3dd58ea125e5', 'Herr', 'Anrede männlich' );
+INSERT INTO public.REF_SALUTATION (UUID, TYPE, DESCRIPTION) VALUES ( '4e873baa-e4f5-4585-8b16-2db8fac66538', 'Frau', 'Anrede weiblich' );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_ADDRESS
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_address_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_address_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_ADDRESS
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_address_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_ADDRESS_TYPE bigint,
+  IS_MAIN_ADDRESS boolean,
+  POSTCODE character varying(30),
+  COMMUNITY character varying(255),
+  COMMUNITY_SUFFIX character varying(255),
+  STREET character varying(255),
+  HOUSENUMBER character varying(30),
+  WGS_84_ZONE character varying(255),
+  LATITUDE character varying(255),
+  LONGITUDE character varying(255),
+  URL_MAP character varying(255),
+  NOTE character varying(255),
+
+  CONSTRAINT TBL_ADDRESS_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_ADDRESS__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_ADDRESS__ADDRESS_TYPE_ID_FKEY FOREIGN KEY (FK_ADDRESS_TYPE)
+       REFERENCES public.REF_ADDRESS_TYPE (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_ADDRESS
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_ADDRESS TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_address_uuid ON public.TBL_ADDRESS ( UUID ASC );
+
+INSERT INTO public.TBL_ADDRESS (UUID, FK_CONTACT_ID, FK_ADDRESS_TYPE, IS_MAIN_ADDRESS, POSTCODE, COMMUNITY, COMMUNITY_SUFFIX, STREET, HOUSENUMBER, WGS_84_ZONE, LATITUDE, LONGITUDE, URL_MAP, NOTE) VALUES ( '37e800fe-64f0-4834-8b83-8453cbb936a5', 2, 1, true, '12345', 'Heringsdorf','', 'Flunderweg', '5', '', '53 NL', '3 WB','www.xyz', 'nur über Seeweg erreichbar');
+INSERT INTO public.TBL_ADDRESS (UUID, FK_CONTACT_ID, FK_ADDRESS_TYPE, IS_MAIN_ADDRESS, POSTCODE, COMMUNITY, COMMUNITY_SUFFIX, STREET, HOUSENUMBER, WGS_84_ZONE, LATITUDE, LONGITUDE, URL_MAP, NOTE) VALUES ( '8a1202ae-2532-474e-8367-a1f0e13e9fbd', 1, 2, false, '67890', 'Stralsund','', 'Schollendamm', '18', '', '53 N', '2 WB','www.xyz', 'Hochwassergefahr');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_COMMUNICATION
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_communication_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_communication_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_COMMUNICATION
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_communication_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_COMMUNICATION_TYPE bigint,
+  COMMUNICATION_DATA character varying(1024),
+  NOTE character varying(255),
+
+  CONSTRAINT TBL_COMMUNICATION_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_COMMUNICATION__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_COMMUNICATION__COMMUNICATION_TYPE_ID_FKEY FOREIGN KEY (FK_COMMUNICATION_TYPE)
+       REFERENCES public.REF_COMMUNICATION_TYPE (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_COMMUNICATION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_COMMUNICATION TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_communication_uuid ON public.TBL_COMMUNICATION ( UUID ASC );
+
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '25f6d7cc-b168-4dd5-a36d-6f14b2f956e9', 2, 2, 'bitte melden Sie sich bei uns', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'a5fa380e-8f33-4ea7-9416-e03d11b91cae', 1, 3, 'bitte melden zwecks Terminabstimmung', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'c0dcef80-ca07-48b7-a3ed-2c99c4388928', 1, 1, 'info@bigbang.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'd19d9e10-d2dd-4383-84ec-2fe96421c0a3', 2, 1, 'info@pharmapeekltd.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '234b63e4-d8db-48ab-899f-0320903c01af', 3, 1, 'reinbold.tab@pharmapeek.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '11e25c02-de00-430d-b6cd-f02f7c60e026', 5, 1, 'PaulineF@gmx.net', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '9ca29c3b-e189-4ce9-9401-15001c769627', 6, 1, 'mo@gmail.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '05505b1a-61df-45c0-b006-64165cbadfa2', 7, 1, 'MGruebelSport@fogger.mil', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'b52dabaf-d156-4fd0-a07c-510673112a15', 8, 1, 'Mini.osterbrink@yahoo.ie', 'Info...');
+
+-- ---------------------------------------------
+-- TABLE TBL_COMPANY
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_company_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_company_id_seq
+  OWNER TO CBD_SERVICE;
+
+
+CREATE TABLE public.TBL_COMPANY
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_company_id_seq'::regclass),
+  COMPANY_NAME character varying(255),
+  COMPANY_TYPE character varying(30),
+  HR_NUMBER character varying(255),
+  FK_CONTACT_ID bigint NOT NULL,
+  CONSTRAINT TBL_COMPANY_PKEY PRIMARY KEY (id),
+  CONSTRAINT TBL_COMPANY__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_COMPANY
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_COMPANY TO CBD_SERVICE;
+
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( 'BigBang Logistic', 'Logistik', '123', 1 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( 'Pharma Peek', 'Pharma', '345', 2 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( '***', '***', null, 9 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( '***', '***', null, 10 );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_CONTACT_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_contact_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_contact_person_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_CONTACT_PERSON
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_contact_person_id_seq'::regclass),
+  FIRST_NAME character varying(255),
+  LAST_NAME character varying(255),
+  TITLE character varying(255),
+  FK_SALUTATION_ID bigint,
+  FK_REF_PERSON_TYPE_ID bigint NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_COMPANY_ID bigint NOT NULL,
+  CONSTRAINT TBL_CONTACT_PERSON_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_CONTACT_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+      REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+           REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+           ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__COMPANY_ID_FKEY FOREIGN KEY (FK_COMPANY_ID)
+       REFERENCES public.TBL_COMPANY (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_CONTACT_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_CONTACT_PERSON TO CBD_SERVICE;
+
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( 'Tabea', 'Reinebold', 'Dr.', 2, 1, 3, 2);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( 'Jan', 'Wacker', '', 1, 1, 4, 2);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( '***', '***', null, null, null, 11, 3);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( '***', '***', null, null, null, 12, 2);
+
+-- ---------------------------------------------
+-- TABLE TBL_EXTERNAL_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_external_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_external_person_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_EXTERNAL_PERSON
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_external_person_id_seq'::regclass),
+  FIRST_NAME character varying(255),
+  LAST_NAME character varying(255),
+  TITLE character varying(255),
+  FK_SALUTATION_ID bigint,
+  FK_REF_PERSON_TYPE_ID bigint,
+  FK_CONTACT_ID bigint NOT NULL,
+  CONSTRAINT TBL_EXTERNAL_PERSON_PKEY PRIMARY KEY (id),
+  CONSTRAINT TBL_EXTERNAL_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+       REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_EXTERNAL_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+         REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_EXTERNAL_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+           REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+           ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_EXTERNAL_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_EXTERNAL_PERSON TO CBD_SERVICE;
+
+INSERT INTO public.TBL_EXTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID) VALUES ( 'Monica', 'Grübel', 'Dipl.-Sportlehrerin', 2, 1, 7);
+INSERT INTO public.TBL_EXTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID) VALUES ( 'Maurice', 'Fürstenberg', 'B.A.', 2, 2, 8);
+
+
+-- ---------------------------------------------
+-- TABLE TBL_INTERNAL_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_internal_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_internal_person_id_seq
+  OWNER TO CBD_SERVICE;
+CREATE TABLE public.TBL_INTERNAL_PERSON
+(
+   ID bigint NOT NULL DEFAULT nextval('tbl_internal_person_id_seq'::regclass),
+   FIRST_NAME character varying(255),
+   LAST_NAME character varying(255),
+   TITLE character varying(255),
+   FK_SALUTATION_ID bigint,
+   FK_REF_PERSON_TYPE_ID bigint,
+   DEPARTMENT character varying(255),
+   UID character varying(255),
+   USER_REF character varying(255),
+   FK_CONTACT_ID bigint NOT NULL,
+   CONSTRAINT TBL_INTERNAL_PERSON_PKEY PRIMARY KEY (ID),
+   CONSTRAINT TBL_INTERNAL_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+   CONSTRAINT TBL_INTERNAL_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+         REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION,
+   CONSTRAINT TBL_INTERNAL_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+         REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_INTERNAL_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_INTERNAL_PERSON TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_internal_person_uid ON public.TBL_INTERNAL_PERSON ( UID ASC );
+CREATE UNIQUE INDEX idx_tbl_internal_person_user_ref ON public.TBL_INTERNAL_PERSON ( USER_REF ASC );
+
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Pauline', 'Freudenberg', 'B.Sc.', 1, 1,'Abteilung Rechnungsstellung', '66cd78c3-6716-4ab3-b834-a199fc796b88', 'PFREUD',  5);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Bernhardt', 'Iffland', '', 2, 2,'Kreativ', '4124e4e7-3488-4492-bf39-75e6a23a1c1a', 'BIFFL', 6);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Horatio', 'Hornblower', 'Capt.', 1, 2,'Royal Navy', 'hhornblo', 'HORNB', 13);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Cornelius', 'Buckley', '', 1, 2,'Royal Navy', null, 'BUCKC', 14);
+-- ---------------------------------------------
+-- TABLE TBL_ASSIGNMENT_MODUL_CONTACT
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_assignment_modul_contact_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_assignment_modul_contact_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_ASSIGNMENT_MODUL_CONTACT
+(
+  id bigint NOT NULL DEFAULT nextval('tbl_assignment_modul_contact_id_seq'::regclass),
+  uuid uuid NOT NULL,
+  fk_contact_id bigint NOT NULL,
+  modul_name character varying(255),
+  assignment_date timestamp,
+  expiring_date timestamp,
+  deletion_lock_until timestamp,
+  assignment_note character varying(2048),
+  CONSTRAINT tbl_assignment_modul_contact_pkey PRIMARY KEY (id),
+  CONSTRAINT tbl_assignment_modul_contact_id_fkey FOREIGN KEY (fk_contact_id)
+      REFERENCES public.tbl_contact (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_assignment_modul_contact
+  OWNER TO cbd_service;
+GRANT ALL ON TABLE public.tbl_assignment_modul_contact TO cbd_service;
+
+INSERT INTO public.tbl_assignment_modul_contact(uuid, fk_contact_id, modul_name, assignment_date, expiring_date, deletion_lock_until, assignment_note) VALUES ( 'dfc2979c-40e3-11ea-b77f-2e728ce88125', 1, 'Betriebstagebuch', '2020-01-19 10:23:54', '2021-01-19 00:00:00', '2021-01-19 00:00:00', 'seit Januar zugeordnet');
+INSERT INTO public.tbl_assignment_modul_contact(uuid, fk_contact_id, modul_name, assignment_date, expiring_date, deletion_lock_until, assignment_note) VALUES ( '4009bce2-40e5-11ea-b77f-2e728ce88125', 1, 'Störinfos', '2020-02-27 10:23:54', '2019-02-27 00:00:00', '2019-02-27 00:00:00', 'seit Februar zugeordnet');
+
+-- -------------------------------------
+-- VIEWS -------------------------------
+-- -------------------------------------
+DROP VIEW IF EXISTS VW_GENERAL_CONTACT CASCADE;
+
+CREATE VIEW VW_GENERAL_CONTACT
+AS
+SELECT g.id,
+	c.uuid,
+	g.name,
+	c.contact_type,
+	g.fk_contact_id,
+	g.company_name,
+	g.company_type,
+	g.company_id,
+	g.fk_salutation_id,
+	g.fk_ref_person_type_id,
+	g.title,
+	g.first_name,
+	g.last_name,
+	g.department,
+	c.note,
+	c.anonymized
+FROM tbl_contact c
+INNER JOIN (
+
+SELECT company.id,
+	company_name as name,
+	fk_contact_id,
+	company_name,
+	company_type,
+	cntct.uuid as company_id,
+	null as fk_salutation_id,
+	null as fk_ref_person_type_id,
+	null as title,
+	null as first_name,
+	null as last_name,
+	null as department
+FROM tbl_company company
+INNER JOIN tbl_contact cntct ON company.fk_contact_id = cntct.id
+
+UNION
+
+SELECT p.id,
+	COALESCE(p.last_name, '')
+	|| CASE WHEN COALESCE(p.last_name, '') <> '' AND COALESCE(p.first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(p.first_name,'') || ' [' || COALESCE(c.company_name, '') || ']' as name,
+	p.fk_contact_id,
+	c.company_name,
+	c.company_type,
+	company_contact.uuid as company_id,
+	p.fk_salutation_id,
+	p.fk_ref_person_type_id,
+	p.title,
+	p.first_name,
+	p.last_name,
+	null as department
+FROM tbl_contact_person p
+INNER JOIN tbl_company c ON c.id = p.fk_company_id
+INNER JOIN tbl_contact company_contact ON c.fk_contact_id = company_contact.id
+
+UNION
+
+SELECT id,
+	COALESCE(last_name, '')
+	|| CASE WHEN COALESCE(last_name, '') <> '' AND COALESCE(first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(first_name, '') as name,
+	fk_contact_id,
+	null as company_name,
+	null as company_type,
+	null as company_id,
+	fk_salutation_id,
+	fk_ref_person_type_id,
+	title,
+	first_name,
+	last_name,
+	department
+FROM tbl_internal_person
+
+UNION
+
+SELECT id,
+	COALESCE(last_name, '')
+	|| CASE WHEN COALESCE(last_name, '') <> '' AND COALESCE(first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(first_name, '') as name,
+	fk_contact_id,
+	null as company_name,
+	null as company_type,
+	null as company_id,
+	fk_salutation_id,
+	fk_ref_person_type_id,
+	title,
+	first_name,
+	last_name,
+	null as department
+FROM tbl_external_person
+	) g
+ON g.fk_contact_id = c.ID;
+
+ALTER VIEW public.VW_GENERAL_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VW_GENERAL_CONTACT TO CBD_SERVICE;
+
+
+DROP VIEW IF EXISTS VW_DETAILED_CONTACT;
+
+CREATE VIEW VW_DETAILED_CONTACT
+AS
+SELECT c.id,
+    c.uuid,
+	c.name,
+	c.contact_type,
+	c.fk_contact_id,
+	c.company_name,
+	c.company_type,
+	c.company_id,
+	c.anonymized,
+	s.uuid as salutation_uuid,
+	t.uuid as person_type_uuid,
+	c.title,
+	c.first_name,
+	c.last_name,
+	c.department,
+	c.note,
+	s.type as salutation_type,
+	t.type as person_type,
+	COALESCE(a.community, '') ||
+	        CASE WHEN COALESCE(a.street, '') || COALESCE(a.housenumber, '') = '' THEN '' ELSE ', ' END ||
+	        COALESCE(a.street, '') ||
+	        CASE WHEN COALESCE(a.housenumber, '') = '' THEN '' ELSE ' ' END ||
+	        COALESCE(a.housenumber, '') as main_address,
+	com.communication_data as email,
+
+	UPPER(
+        COALESCE(c.name, '') || '|@|'
+        || COALESCE(company_name, '') || '|@|'
+        || COALESCE(c.company_type, '') || '|@|'
+        || COALESCE(c.title, '') || '|@|'
+        || COALESCE(c.first_name, '') || '|@|'
+        || COALESCE(c.last_name, '') || '|@|'
+        || COALESCE(c.department, '') || '|@|'
+        || COALESCE(c.note, '') || '|@|'
+        || COALESCE(s.type, '') || '|@|'
+        || COALESCE(t.type, '') || '|@|'
+        || COALESCE(a.street, '') || '|@|'
+        || COALESCE(a.housenumber, '') || '|@|'
+        || COALESCE(a.community, '') || '|@|'
+        || COALESCE(com.communication_data, '')
+    )as searchfield
+FROM VW_GENERAL_CONTACT c
+LEFT OUTER JOIN ref_salutation s ON c.fk_salutation_id = s.id
+LEFT OUTER JOIN tbl_address a ON a.fk_contact_id = c.fk_contact_id and is_main_address = true
+LEFT OUTER JOIN ref_person_type t ON c.fk_ref_person_type_id = t.id
+LEFT OUTER JOIN tbl_communication com ON (com.fk_contact_id = c.fk_contact_id AND com.fk_communication_type =
+    (SELECT ct.id FROM ref_communication_type ct WHERE ct.type_email = true)) ;
+
+ALTER VIEW public.VW_DETAILED_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VW_DETAILED_CONTACT TO CBD_SERVICE;
+
+
+
+
diff --git a/src/main/resources/db/migration/V0_22__CREATE_CBD_DB.sql b/src/main/resources/db/migration/V0_22__CREATE_CBD_DB.sql
new file mode 100644
index 0000000..7ce1585
--- /dev/null
+++ b/src/main/resources/db/migration/V0_22__CREATE_CBD_DB.sql
@@ -0,0 +1,711 @@
+-----------------------------------------------------------------------------------
+-- *******************************************************************************
+-- * Copyright (c) 2019 Contributors to the Eclipse Foundation
+-- *
+-- * See the NOTICE file(s) distributed with this work for additional
+-- * information regarding copyright ownership.
+-- *
+-- * This program and the accompanying materials are made available under the
+-- * terms of the Eclipse Public License v. 2.0 which is available at
+-- * http://www.eclipse.org/legal/epl-2.0.
+-- *
+-- * SPDX-License-Identifier: EPL-2.0
+-- *******************************************************************************
+-----------------------------------------------------------------------------------
+
+-- CREATE ROLE CBD_SERVICE LOGIN
+-- NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
+-- ALTER ROLE CBD_SERVICE with password 'cbd_service';
+-- Insert new Columns into table REF_COMMUNICATION_TYPE ('EDITABLE, 'MAPPING_LDAP')
+
+-- ---------------------------------------------
+-- DROPS
+-- ---------------------------------------------
+DROP TABLE IF EXISTS public.VERSION CASCADE;
+
+DROP TABLE IF EXISTS public.TBL_ADDRESS CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_ADDRESS_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_COMMUNICATION CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_COMMUNICATION_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_CONTACT_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_CONTACT_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_COMPANY CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_COMPANY_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_EXTERNAL_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_EXTERNAL_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_INTERNAL_PERSON CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_INTERNAL_PERSON_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_CONTACT CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_CONTACT_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_ADDRESS_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_ADDRESS_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_PERSON_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_PERSON_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_COMMUNICATION_TYPE CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_COMMUNICATION_TYPE_ID_SEQ;
+
+DROP TABLE IF EXISTS public.REF_SALUTATION CASCADE;
+DROP SEQUENCE IF EXISTS public.REF_SALUTATION_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_ASSIGNMENT_MODUL_CONTACT CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_ASSIGNMENT_MODUL_CONTACT_ID_SEQ;
+
+-- ---------------------------------------------
+-- TABLE VERSION
+-- ---------------------------------------------
+CREATE TABLE public.VERSION
+(
+  ID integer NOT NULL,
+  VERSION character varying(50) NOT NULL,
+  CONSTRAINT REF_VERSION_PKEY PRIMARY KEY (id)
+);
+
+ALTER TABLE public.VERSION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VERSION TO CBD_SERVICE;
+
+INSERT INTO public.VERSION (ID, VERSION) VALUES ( 1, '00-DEV' );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_CONTACT
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_contact_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_contact_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_CONTACT
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_contact_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  CONTACT_TYPE character varying(3),
+  NOTE character varying(255),
+  ANONYMIZED boolean,
+  CONSTRAINT TBL_CONTACT_PKEY PRIMARY KEY (ID)
+);
+
+
+
+ALTER TABLE public.TBL_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_CONTACT TO CBD_SERVICE;
+
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ae3f2ec1-ccc5-4269-a48f-dd40e37fa14e', '4CO', 'company 1 (id=1)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'fc7f598b-0d51-46bb-9563-99851fe6a3ad', '4CO', 'company 2 (id=2)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '556b91be-6d57-432f-93ed-65604dd6e5cd', '1CP', 'contact person 1 (id=3)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '116380e3-25c5-4179-b40a-8abebe10fe07', '1CP', 'contact person 2 (id=4)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '7782179b-fb79-4370-8f71-f4c71470d006', '3IP', 'internal person 1 (id=5)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '8963aa38-d021-4dc9-bd70-d3734ccd20c4', '3IP', 'internal person 2 (id=6)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'c862d604-5766-43d6-a7e8-a4bac2bd01e1', '2EP', 'external person 1 (id=7)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'fa3d981b-a7d6-4965-a623-cdbc69404153', '2EP', 'external person 2 (id=8)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ceba21e9-e685-483b-840e-ad167860a696', '4CO', 'anonymous company A (id=9)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '7889c814-9752-4e4e-a9fe-b46f36a38ccd', '4CO', 'anonymous company B (id=10)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '618a01a3-f348-44cc-9ddd-c9df946b0212', '1CP', 'anoymous contact person A1 (id=11)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '4ed82474-3878-457a-baef-c28b8e486f25', '1CP', 'anoymous contact persion A2 (id=12)', true );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( '8fe41b90-d10c-4a70-8fde-0990286ad3c6', '3IP', 'internal person 3 (id=13)', null );
+INSERT INTO public.TBL_CONTACT (UUID, CONTACT_TYPE, NOTE, ANONYMIZED) VALUES ( 'ab804610-d6a4-4803-a4a1-3f6cb742b2a4', '3IP', 'internal person 4 (id=14)', null );
+
+
+CREATE UNIQUE INDEX idx_tbl_contact_contact_type ON public.TBL_CONTACT  ( ID ASC );
+CREATE UNIQUE INDEX idx_cntct_uuid ON public.TBL_CONTACT (UUID);
+CREATE INDEX idx_cntct_anonym ON public.TBL_CONTACT (ANONYMIZED);
+
+
+-- ---------------------------------------------
+-- TABLE REF_ADDRESS_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_address_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_address_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_ADDRESS_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_address_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_ADDRESS_TYPE_PKEY PRIMARY KEY (ID)
+);
+
+ALTER TABLE public.REF_ADDRESS_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_ADDRESS_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_address_type_uuid ON public.REF_ADDRESS_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '3802e681-9396-434e-b19c-5fedcec40ba7', 'Geschäftsadresse', 'Adresse des Hauptfirmensitzes' );
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( 'f43ed6ac-9e7a-40f6-acc9-ec6b73eebf79', 'Privatadresse', 'private Anschrift' );
+INSERT INTO public.REF_ADDRESS_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '70fd0811-f674-4f3a-96a7-7ae29fc95188', 'Lieferadresse', 'Adresse für Lieferungen' );
+
+
+-- ---------------------------------------------
+-- TABLE REF_PERSON_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_person_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_person_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_PERSON_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_person_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_PERSON_TYPE_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_PERSON_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_PERSON_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_person_type_uuid ON public.REF_PERSON_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '47ce68b7-6d44-453e-b421-19020fd791b5', 'Rechtsanwalt', '' );
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( 'a7522c72-14d0-4e9d-afe3-bfcb3ffbec10', 'Geschäftsführer', '' );
+INSERT INTO public.REF_PERSON_TYPE (UUID, TYPE, DESCRIPTION) VALUES ( '2eb4885e-7363-4918-90ed-b7d5d84cfd3f', 'Rechnungsempfänger', 'Person, der Rechnungen zukommen' );
+
+
+-- ---------------------------------------------
+-- TABLE REF_COMMUNICATION_TYPE
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_communication_type_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_communication_type_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_COMMUNICATION_TYPE
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_communication_type_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  TYPE_EMAIL boolean,
+  CONSTRAINT REF_COMMUNICATION_TYPE_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_COMMUNICATION_TYPE
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_COMMUNICATION_TYPE TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_communication_type_uuid ON public.REF_COMMUNICATION_TYPE ( UUID ASC );
+
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '4757ca3a-72c2-4f13-a2f6-ce092e3eadf4', 'E-Mail', 'E-Mail Adresse', true );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '77028572-ff57-4c1d-999a-78fa3fcbc1cd', 'Festnetz', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( 'f7d5b343-00c2-4d7f-8e03-009aad3d90f7', 'Mobil', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( '2bfe40f9-c4eb-4d2e-855f-6b0883912846', 'Fax', '', false );
+INSERT INTO public.REF_COMMUNICATION_TYPE (UUID, TYPE, DESCRIPTION, TYPE_EMAIL) VALUES ( 'd00d1a61-c8e7-43b2-959f-66e986731441', 'WhatsApp', '', false );
+
+-- ---------------------------------------------
+-- TABLE REF_SALUTATION
+-- ---------------------------------------------
+CREATE SEQUENCE public.ref_salutation_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.ref_salutation_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.REF_SALUTATION
+(
+  ID bigint NOT NULL DEFAULT nextval('ref_salutation_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  TYPE character varying(30),
+  DESCRIPTION character varying(255),
+  CONSTRAINT REF_SALUTATION_PKEY PRIMARY KEY (ID)
+);
+ALTER TABLE public.REF_SALUTATION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.REF_SALUTATION TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_ref_salutation_uuid ON public.REF_SALUTATION ( UUID ASC );
+
+INSERT INTO public.REF_SALUTATION (UUID, TYPE, DESCRIPTION) VALUES ( '90119f18-5562-425d-9a36-3dd58ea125e5', 'Herr', 'Anrede männlich' );
+INSERT INTO public.REF_SALUTATION (UUID, TYPE, DESCRIPTION) VALUES ( '4e873baa-e4f5-4585-8b16-2db8fac66538', 'Frau', 'Anrede weiblich' );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_ADDRESS
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_address_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_address_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_ADDRESS
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_address_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_ADDRESS_TYPE bigint,
+  IS_MAIN_ADDRESS boolean,
+  POSTCODE character varying(30),
+  COMMUNITY character varying(255),
+  COMMUNITY_SUFFIX character varying(255),
+  STREET character varying(255),
+  HOUSENUMBER character varying(30),
+  WGS_84_ZONE character varying(255),
+  LATITUDE character varying(255),
+  LONGITUDE character varying(255),
+  URL_MAP character varying(255),
+  NOTE character varying(255),
+
+  CONSTRAINT TBL_ADDRESS_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_ADDRESS__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_ADDRESS__ADDRESS_TYPE_ID_FKEY FOREIGN KEY (FK_ADDRESS_TYPE)
+       REFERENCES public.REF_ADDRESS_TYPE (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_ADDRESS
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_ADDRESS TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_address_uuid ON public.TBL_ADDRESS ( UUID ASC );
+
+INSERT INTO public.TBL_ADDRESS (UUID, FK_CONTACT_ID, FK_ADDRESS_TYPE, IS_MAIN_ADDRESS, POSTCODE, COMMUNITY, COMMUNITY_SUFFIX, STREET, HOUSENUMBER, WGS_84_ZONE, LATITUDE, LONGITUDE, URL_MAP, NOTE) VALUES ( '37e800fe-64f0-4834-8b83-8453cbb936a5', 2, 1, true, '12345', 'Heringsdorf','', 'Flunderweg', '5', '', '53 NL', '3 WB','www.xyz', 'nur über Seeweg erreichbar');
+INSERT INTO public.TBL_ADDRESS (UUID, FK_CONTACT_ID, FK_ADDRESS_TYPE, IS_MAIN_ADDRESS, POSTCODE, COMMUNITY, COMMUNITY_SUFFIX, STREET, HOUSENUMBER, WGS_84_ZONE, LATITUDE, LONGITUDE, URL_MAP, NOTE) VALUES ( '8a1202ae-2532-474e-8367-a1f0e13e9fbd', 1, 2, false, '67890', 'Stralsund','', 'Schollendamm', '18', '', '53 N', '2 WB','www.xyz', 'Hochwassergefahr');
+
+
+-- ---------------------------------------------
+-- TABLE TBL_COMMUNICATION
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_communication_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_communication_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_COMMUNICATION
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_communication_id_seq'::regclass),
+  UUID uuid NOT NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_COMMUNICATION_TYPE bigint,
+  COMMUNICATION_DATA character varying(1024),
+  NOTE character varying(255),
+
+  CONSTRAINT TBL_COMMUNICATION_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_COMMUNICATION__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_COMMUNICATION__COMMUNICATION_TYPE_ID_FKEY FOREIGN KEY (FK_COMMUNICATION_TYPE)
+       REFERENCES public.REF_COMMUNICATION_TYPE (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_COMMUNICATION
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_COMMUNICATION TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_communication_uuid ON public.TBL_COMMUNICATION ( UUID ASC );
+
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '25f6d7cc-b168-4dd5-a36d-6f14b2f956e9', 2, 2, 'bitte melden Sie sich bei uns', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'a5fa380e-8f33-4ea7-9416-e03d11b91cae', 1, 3, 'bitte melden zwecks Terminabstimmung', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'c0dcef80-ca07-48b7-a3ed-2c99c4388928', 1, 1, 'info@bigbang.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'd19d9e10-d2dd-4383-84ec-2fe96421c0a3', 2, 1, 'info@pharmapeekltd.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '234b63e4-d8db-48ab-899f-0320903c01af', 3, 1, 'reinbold.tab@pharmapeek.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '11e25c02-de00-430d-b6cd-f02f7c60e026', 5, 1, 'PaulineF@gmx.net', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '9ca29c3b-e189-4ce9-9401-15001c769627', 6, 1, 'mo@gmail.com', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( '05505b1a-61df-45c0-b006-64165cbadfa2', 7, 1, 'MGruebelSport@fogger.mil', 'Info...');
+INSERT INTO public.TBL_COMMUNICATION (UUID, FK_CONTACT_ID, FK_COMMUNICATION_TYPE, COMMUNICATION_DATA, NOTE) VALUES ( 'b52dabaf-d156-4fd0-a07c-510673112a15', 8, 1, 'Mini.osterbrink@yahoo.ie', 'Info...');
+
+-- ---------------------------------------------
+-- TABLE TBL_COMPANY
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_company_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_company_id_seq
+  OWNER TO CBD_SERVICE;
+
+
+CREATE TABLE public.TBL_COMPANY
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_company_id_seq'::regclass),
+  COMPANY_NAME character varying(255),
+  COMPANY_TYPE character varying(30),
+  HR_NUMBER character varying(255),
+  FK_CONTACT_ID bigint NOT NULL,
+  CONSTRAINT TBL_COMPANY_PKEY PRIMARY KEY (id),
+  CONSTRAINT TBL_COMPANY__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT(ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_COMPANY
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_COMPANY TO CBD_SERVICE;
+
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( 'BigBang Logistic', 'Logistik', '123', 1 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( 'Pharma Peek', 'Pharma', '345', 2 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( '***', '***', null, 9 );
+INSERT INTO public.TBL_COMPANY (COMPANY_NAME, COMPANY_TYPE, HR_NUMBER, FK_CONTACT_ID) VALUES ( '***', '***', null, 10 );
+
+
+-- ---------------------------------------------
+-- TABLE TBL_CONTACT_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_contact_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_contact_person_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_CONTACT_PERSON
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_contact_person_id_seq'::regclass),
+  FIRST_NAME character varying(255),
+  LAST_NAME character varying(255),
+  TITLE character varying(255),
+  FK_SALUTATION_ID bigint,
+  FK_REF_PERSON_TYPE_ID bigint NULL,
+  FK_CONTACT_ID bigint NOT NULL,
+  FK_COMPANY_ID bigint NOT NULL,
+  CONSTRAINT TBL_CONTACT_PERSON_PKEY PRIMARY KEY (ID),
+  CONSTRAINT TBL_CONTACT_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+      REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+           REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+           ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_CONTACT_PERSON__COMPANY_ID_FKEY FOREIGN KEY (FK_COMPANY_ID)
+       REFERENCES public.TBL_COMPANY (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_CONTACT_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_CONTACT_PERSON TO CBD_SERVICE;
+
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( 'Tabea', 'Reinebold', 'Dr.', 2, 1, 3, 2);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( 'Jan', 'Wacker', '', 1, 1, 4, 2);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( '***', '***', null, null, null, 11, 3);
+INSERT INTO public.TBL_CONTACT_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID, FK_COMPANY_ID) VALUES ( '***', '***', null, null, null, 12, 2);
+
+-- ---------------------------------------------
+-- TABLE TBL_EXTERNAL_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_external_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_external_person_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_EXTERNAL_PERSON
+(
+  ID bigint NOT NULL DEFAULT nextval('tbl_external_person_id_seq'::regclass),
+  FIRST_NAME character varying(255),
+  LAST_NAME character varying(255),
+  TITLE character varying(255),
+  FK_SALUTATION_ID bigint,
+  FK_REF_PERSON_TYPE_ID bigint,
+  FK_CONTACT_ID bigint NOT NULL,
+  CONSTRAINT TBL_EXTERNAL_PERSON_PKEY PRIMARY KEY (id),
+  CONSTRAINT TBL_EXTERNAL_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+       REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+       ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_EXTERNAL_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+         REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION,
+  CONSTRAINT TBL_EXTERNAL_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+           REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+           ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_EXTERNAL_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_EXTERNAL_PERSON TO CBD_SERVICE;
+
+INSERT INTO public.TBL_EXTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID) VALUES ( 'Monica', 'Grübel', 'Dipl.-Sportlehrerin', 2, 1, 7);
+INSERT INTO public.TBL_EXTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, FK_CONTACT_ID) VALUES ( 'Maurice', 'Fürstenberg', 'B.A.', 2, 2, 8);
+
+
+-- ---------------------------------------------
+-- TABLE TBL_INTERNAL_PERSON
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_internal_person_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_internal_person_id_seq
+  OWNER TO CBD_SERVICE;
+CREATE TABLE public.TBL_INTERNAL_PERSON
+(
+   ID bigint NOT NULL DEFAULT nextval('tbl_internal_person_id_seq'::regclass),
+   FIRST_NAME character varying(255),
+   LAST_NAME character varying(255),
+   TITLE character varying(255),
+   FK_SALUTATION_ID bigint,
+   FK_REF_PERSON_TYPE_ID bigint,
+   DEPARTMENT character varying(255),
+   UID character varying(255),
+   USER_REF character varying(255),
+   FK_CONTACT_ID bigint NOT NULL,
+   CONSTRAINT TBL_INTERNAL_PERSON_PKEY PRIMARY KEY (ID),
+   CONSTRAINT TBL_INTERNAL_PERSON__CONTACT_ID_FKEY FOREIGN KEY (FK_CONTACT_ID)
+      REFERENCES public.TBL_CONTACT (ID) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION,
+   CONSTRAINT TBL_INTERNAL_PERSON__SALUTATION_ID_FKEY FOREIGN KEY (FK_SALUTATION_ID)
+         REFERENCES public.REF_SALUTATION (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION,
+   CONSTRAINT TBL_INTERNAL_PERSON__PERSON_TYPE_ID_FKEY FOREIGN KEY (FK_REF_PERSON_TYPE_ID)
+         REFERENCES public.REF_PERSON_TYPE (ID) MATCH SIMPLE
+         ON UPDATE NO ACTION ON DELETE NO ACTION
+);
+ALTER TABLE public.TBL_INTERNAL_PERSON
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.TBL_INTERNAL_PERSON TO CBD_SERVICE;
+
+CREATE UNIQUE INDEX idx_tbl_internal_person_uid ON public.TBL_INTERNAL_PERSON ( UID ASC );
+CREATE UNIQUE INDEX idx_tbl_internal_person_user_ref ON public.TBL_INTERNAL_PERSON ( USER_REF ASC );
+
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Pauline', 'Freudenberg', 'B.Sc.', 1, 1,'Abteilung Rechnungsstellung', '66cd78c3-6716-4ab3-b834-a199fc796b88', 'PFREUD',  5);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Bernhardt', 'Iffland', '', 2, 2,'Kreativ', '4124e4e7-3488-4492-bf39-75e6a23a1c1a', 'BIFFL', 6);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Horatio', 'Hornblower', 'Capt.', 1, 2,'Royal Navy', 'hhornblo', 'HORNB', 13);
+INSERT INTO public.TBL_INTERNAL_PERSON (FIRST_NAME, LAST_NAME, TITLE, FK_SALUTATION_ID, FK_REF_PERSON_TYPE_ID, DEPARTMENT, UID, USER_REF, FK_CONTACT_ID) VALUES ( 'Cornelius', 'Buckley', '', 1, 2,'Royal Navy', null, 'BUCKC', 14);
+-- ---------------------------------------------
+-- TABLE TBL_ASSIGNMENT_MODUL_CONTACT
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_assignment_modul_contact_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_assignment_modul_contact_id_seq
+  OWNER TO CBD_SERVICE;
+
+CREATE TABLE public.TBL_ASSIGNMENT_MODUL_CONTACT
+(
+  id bigint NOT NULL DEFAULT nextval('tbl_assignment_modul_contact_id_seq'::regclass),
+  uuid uuid NOT NULL,
+  fk_contact_id bigint NOT NULL,
+  modul_name character varying(255),
+  assignment_date timestamp,
+  expiring_date timestamp,
+  deletion_lock_until timestamp,
+  assignment_note character varying(2048),
+  CONSTRAINT tbl_assignment_modul_contact_pkey PRIMARY KEY (id),
+  CONSTRAINT tbl_assignment_modul_contact_id_fkey FOREIGN KEY (fk_contact_id)
+      REFERENCES public.tbl_contact (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_assignment_modul_contact
+  OWNER TO cbd_service;
+GRANT ALL ON TABLE public.tbl_assignment_modul_contact TO cbd_service;
+
+INSERT INTO public.tbl_assignment_modul_contact(uuid, fk_contact_id, modul_name, assignment_date, expiring_date, deletion_lock_until, assignment_note) VALUES ( 'dfc2979c-40e3-11ea-b77f-2e728ce88125', 1, 'Betriebstagebuch', '2020-01-19 10:23:54', '2021-01-19 00:00:00', '2021-01-19 00:00:00', 'seit Januar zugeordnet');
+INSERT INTO public.tbl_assignment_modul_contact(uuid, fk_contact_id, modul_name, assignment_date, expiring_date, deletion_lock_until, assignment_note) VALUES ( '4009bce2-40e5-11ea-b77f-2e728ce88125', 1, 'Störinfos', '2020-02-27 10:23:54', '2019-02-27 00:00:00', '2019-02-27 00:00:00', 'seit Februar zugeordnet');
+
+-- -------------------------------------
+-- VIEWS -------------------------------
+-- -------------------------------------
+DROP VIEW IF EXISTS VW_GENERAL_CONTACT CASCADE;
+
+CREATE VIEW VW_GENERAL_CONTACT
+AS
+SELECT g.id,
+	c.uuid,
+	g.name,
+	c.contact_type,
+	g.fk_contact_id,
+	g.company_name,
+	g.company_type,
+	g.company_id,
+	g.fk_salutation_id,
+	g.fk_ref_person_type_id,
+	g.title,
+	g.first_name,
+	g.last_name,
+	g.department,
+	c.note,
+	c.anonymized
+FROM tbl_contact c
+INNER JOIN (
+
+SELECT company.id,
+	company_name as name,
+	fk_contact_id,
+	company_name,
+	company_type,
+	cntct.uuid as company_id,
+	null as fk_salutation_id,
+	null as fk_ref_person_type_id,
+	null as title,
+	null as first_name,
+	null as last_name,
+	null as department
+FROM tbl_company company
+INNER JOIN tbl_contact cntct ON company.fk_contact_id = cntct.id
+
+UNION
+
+SELECT p.id,
+	COALESCE(p.last_name, '')
+	|| CASE WHEN COALESCE(p.last_name, '') <> '' AND COALESCE(p.first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(p.first_name,'') || ' [' || COALESCE(c.company_name, '') || ']' as name,
+	p.fk_contact_id,
+	c.company_name,
+	c.company_type,
+	company_contact.uuid as company_id,
+	p.fk_salutation_id,
+	p.fk_ref_person_type_id,
+	p.title,
+	p.first_name,
+	p.last_name,
+	null as department
+FROM tbl_contact_person p
+INNER JOIN tbl_company c ON c.id = p.fk_company_id
+INNER JOIN tbl_contact company_contact ON c.fk_contact_id = company_contact.id
+
+UNION
+
+SELECT id,
+	COALESCE(last_name, '')
+	|| CASE WHEN COALESCE(last_name, '') <> '' AND COALESCE(first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(first_name, '') as name,
+	fk_contact_id,
+	null as company_name,
+	null as company_type,
+	null as company_id,
+	fk_salutation_id,
+	fk_ref_person_type_id,
+	title,
+	first_name,
+	last_name,
+	department
+FROM tbl_internal_person
+
+UNION
+
+SELECT id,
+	COALESCE(last_name, '')
+	|| CASE WHEN COALESCE(last_name, '') <> '' AND COALESCE(first_name) <> '' THEN ', ' ELSE '' END
+	|| COALESCE(first_name, '') as name,
+	fk_contact_id,
+	null as company_name,
+	null as company_type,
+	null as company_id,
+	fk_salutation_id,
+	fk_ref_person_type_id,
+	title,
+	first_name,
+	last_name,
+	null as department
+FROM tbl_external_person
+	) g
+ON g.fk_contact_id = c.ID;
+
+ALTER VIEW public.VW_GENERAL_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VW_GENERAL_CONTACT TO CBD_SERVICE;
+
+
+DROP VIEW IF EXISTS VW_DETAILED_CONTACT;
+
+CREATE VIEW VW_DETAILED_CONTACT
+AS
+SELECT c.id,
+    c.uuid,
+	c.name,
+	c.contact_type,
+	c.fk_contact_id,
+	c.company_name,
+	c.company_type,
+	c.company_id,
+	c.anonymized,
+	s.uuid as salutation_uuid,
+	t.uuid as person_type_uuid,
+	c.title,
+	c.first_name,
+	c.last_name,
+	c.department,
+	c.note,
+	s.type as salutation_type,
+	t.type as person_type,
+	COALESCE(a.community, '') ||
+	        CASE WHEN COALESCE(a.street, '') || COALESCE(a.housenumber, '') = '' THEN '' ELSE ', ' END ||
+	        COALESCE(a.street, '') ||
+	        CASE WHEN COALESCE(a.housenumber, '') = '' THEN '' ELSE ' ' END ||
+	        COALESCE(a.housenumber, '') as main_address,
+	com.communication_data as email,
+
+	UPPER(
+        COALESCE(c.name, '') || '|@|'
+        || COALESCE(company_name, '') || '|@|'
+        || COALESCE(c.company_type, '') || '|@|'
+        || COALESCE(c.title, '') || '|@|'
+        || COALESCE(c.first_name, '') || '|@|'
+        || COALESCE(c.last_name, '') || '|@|'
+        || COALESCE(c.department, '') || '|@|'
+        || COALESCE(c.note, '') || '|@|'
+        || COALESCE(s.type, '') || '|@|'
+        || COALESCE(t.type, '') || '|@|'
+        || COALESCE(a.street, '') || '|@|'
+        || COALESCE(a.housenumber, '') || '|@|'
+        || COALESCE(a.community, '') || '|@|'
+        || COALESCE(com.communication_data, '')
+    )as searchfield
+FROM VW_GENERAL_CONTACT c
+LEFT OUTER JOIN ref_salutation s ON c.fk_salutation_id = s.id
+LEFT OUTER JOIN tbl_address a ON a.fk_contact_id = c.fk_contact_id and is_main_address = true
+LEFT OUTER JOIN ref_person_type t ON c.fk_ref_person_type_id = t.id
+LEFT OUTER JOIN tbl_communication com ON (com.fk_contact_id = c.fk_contact_id AND com.fk_communication_type =
+    (SELECT ct.id FROM ref_communication_type ct WHERE ct.type_email = true)) ;
+
+ALTER VIEW public.VW_DETAILED_CONTACT
+  OWNER TO CBD_SERVICE;
+GRANT ALL ON TABLE public.VW_DETAILED_CONTACT TO CBD_SERVICE;
+
+
+
+
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
index ed5fc35..8ce842f 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
@@ -534,7 +534,7 @@
         contactPersonDto.setCompanyType(Constants.CONTACT_TYPE_CONTACT_PERSON);
         contactPersonDto.setTitle("Prof. Dr.");
         contactPersonDto.setContactUuid(UUID.randomUUID());
-        contactPersonDto.setContactType("C_P");
+        contactPersonDto.setContactType("1CP");
         contactPersonDto.setContactNote("eine Notiz");
         contactPersonDto.setSalutationUuid(UUID.randomUUID());
         contactPersonDto.setPersonTypeUuid(UUID.randomUUID());
@@ -561,7 +561,7 @@
         tblContact.setId(5L);
         tblContact.setUuid(UUID.randomUUID());
         tblContact.setNote("Notiz");
-        tblContact.setContactType("E_P");
+        tblContact.setContactType("2EP");
 
         return tblContact;
     }
@@ -570,7 +570,7 @@
         ContactDto contactDto = new ContactDto();
         contactDto.setUuid(UUID.randomUUID());
         contactDto.setNote("Notiz");
-        contactDto.setContactType("E_P");
+        contactDto.setContactType("2EP");
 
         return contactDto;
     }