From db9eff390ce8ecd54f61f41d3b23936dac0ffb3c Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Sat, 9 Sep 2017 12:54:16 +0200
Subject: [PATCH] Please cherry-pick: - renamed companyDataId -> basicDataId
 (already done in underlaying entity) - implemented addBranchOffice() which
 will call newly added private methods to   create a BranchOffice instance and
 validate if the address is already found   in an other bean's cache - for
 this, allBranchOffices() needs to be published in interface - implemented
 afterBranchOfficeAddedEvent() event observer which will add the   newly added
 branch office to the backing bean's cache - now displaying link to company's
 website correctly or, if not provided, a   replacement message - same with
 email link, maybe one day I move this out to a custom JSF tag? - added
 missing i18n strings - generalized duplicate i18n strings - added missing
 navigation cases
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Signed-off-by: Roland Häder <roland@mxchange.org>
---
 .../localization/bundle_de_DE.properties      |  68 ++++---
 .../localization/bundle_en_US.properties      |  65 ++++---
 .../PizzaBusinessDataWebRequestBean.java      |  12 +-
 .../PizzaAdminBranchOfficeWebRequestBean.java | 173 +++++++++++++++++-
 .../PizzaBranchOfficeWebRequestBean.java      |  32 +++-
 ...PizzaBranchOfficeWebRequestController.java |   9 +
 web/WEB-INF/faces-config.xml                  |  36 +++-
 .../columns/admin_contact_data_columns.tpl    |   2 +-
 .../admin_contact_data_columns_mini.tpl       |   2 +-
 .../contact/admin_form_contact_data.tpl       |   2 +-
 .../form_data/fax/admin_form_fax_data.tpl     |   2 +-
 .../landline/admin_form_landline_data.tpl     |   2 +-
 .../mobile/admin_form_mobile_data.tpl         |   2 +-
 .../admin/panel_grids/fax/admin_fax_data.tpl  |   2 +-
 .../landline/admin_landline_data.tpl          |   2 +-
 .../panel_grids/mobile/admin_mobile_data.tpl  |   2 +-
 .../admin_form_basic_company_data.tpl         |  26 +--
 .../admin_form_branch_offices_data.tpl        |  16 +-
 .../admin_basic_company_data_list.xhtml       |  16 +-
 .../admin_branch_offices_list.xhtml           |  34 ++--
 web/admin/contact/admin_contact_list.xhtml    |   2 +-
 web/admin/country/admin_country_list.xhtml    |   2 +-
 web/admin/fax/admin_fax_list.xhtml            |   2 +-
 web/admin/fax/admin_fax_show.xhtml            |   2 +-
 web/admin/landline/admin_landline_list.xhtml  |   2 +-
 web/admin/landline/admin_landline_show.xhtml  |   2 +-
 web/admin/mobile/admin_mobile_list.xhtml      |   2 +-
 web/admin/mobile/admin_mobile_show.xhtml      |   2 +-
 .../admin_mobile_provider_list.xhtml          |   4 +-
 web/admin/user/admin_user_list.xhtml          |   2 +-
 30 files changed, 388 insertions(+), 139 deletions(-)

diff --git a/src/java/org/mxchange/localization/bundle_de_DE.properties b/src/java/org/mxchange/localization/bundle_de_DE.properties
index 8e0fe3d5..67b48249 100644
--- a/src/java/org/mxchange/localization/bundle_de_DE.properties
+++ b/src/java/org/mxchange/localization/bundle_de_DE.properties
@@ -282,7 +282,7 @@ ADMIN_ENTER_COUNTRY_EXTERNAL_DIAL_PREFIX=Vorwahl f\u00fcr Gespr\u00e4che ausserh
 ADMIN_ENTER_COUNTRY_PHONE_CODE=Vorwahl f\u00fcr das Land:
 ADMIN_ENTER_COUNTRY_PHONE_CODE_EXAMPLE=(Beispiel: 49 f\u00fcr Deutschland)
 BUTTON_ADMIN_ADD_COUNTRY=L\u00e4nderdaten hinzuf\u00fcgen
-ADMIN_LIST_COUNTRY_DATA_COUNTRY_ID=Id-Nummer:
+ADMIN_ID_NUMBER=Id-Nummer:
 ADMIN_LIST_COUNTRY_DATA_COUNTRY_CODE=L\u00e4ndercode:
 ADMIN_LIST_COUNTRY_DATA_COUNTRY_EXTERNAL_DIAL_PREFIX=Vorwahl ausserorts:
 ADMIN_LIST_COUNTRY_DATA_COUNTRY_NAME=Land:
@@ -311,11 +311,10 @@ BUTTON_ADMIN_ADD_MOBILE_PROVIDER=Handyanbieter hinzuf\u00fcgen
 ADMIN_ADD_MOBILE_PROVIDER_NOTICES=Hinweise zum Hinzuf\u00fcgen von Handyanbietern:
 ADMIN_ADD_MOBILE_PROVIDER_PATTERN=Das Textmuster darf nur ein %s enthalten und dies muss die komplette Handynummer sein. Z.B. %s@smsmail.anbieter.example
 ADMIN_ENTER_MOBILE_PROVIDER_PATTERN_EXAMPLE=(Beispiel: %s@smsmail.anbieter.example)
-ADMIN_LIST_MOBILE_PROVIDER_ID=Id-Nummer:
 ADMIN_LIST_MOBILE_PROVIDER_NAME=Name:
 ADMIN_LIST_MOBILE_PROVIDER_DIAL_PREFIX=Vorwahl:
 ADMIN_LIST_MOBILE_PROVIDER_COUNTRY=Land:
-ADMIN_LIST_MOBILE_PROVIDER_ENTRY_CREATED=Erstellt:
+ADMIN_LIST_ENTRY_CREATED=Erstellt:
 ADMIN_LINK_EDIT_DELETE_MOBILE_PROVIDER_TITLE=Editieren oder l\u00f6schen des Handyanbieters
 ADMIN_USER_DATA_ENTER_PASSWORD=Passwort eingeben:
 ADMIN_USER_DATA_ENTER_PASSWORD_REPEAT=Passwort wiederholen:
@@ -348,8 +347,6 @@ ADMIN_USER_ACCOUNT_STATUS=Account-Status:
 ADMIN_USER_PROFILE_MODE=Profilmodus:
 ADMIN_USER_LAST_LOCKED=Zuletzt gesperrt:
 ADMIN_USER_LAST_LOCKED_REASON=Letzter Sperrgrund:
-ADMIN_USER_CONTACT_CREATED=Wann Kontaktdaten erstellt:
-ADMIN_USER_CONTACT_UPDATED=Wann Kontaktdaten ge\u00e4ndert:
 ADMIN_CONTACT_IS_OWN_CONTACT=Eigenes Account:
 ADMIN_CONTACT_PERSONAL_TITLE=Anrede:
 ADMIN_CONTACT_ACADEMIC_TITLE=Titel:
@@ -359,7 +356,7 @@ ADMIN_CONTACT_STREET=Strasse:
 ADMIN_CONTACT_HOUSE_NUMBER=Hausnummer:
 ADMIN_CONTACT_ZIP_CODE=Postleitzahl:
 ADMIN_CONTACT_CITY=Stadt:
-ADMIN_CONTACT_EMAIL_ADDRESS=Email-Adresse:
+DATA_EMAIL_ADDRESS=Email-Adresse:
 ADMIN_CONTACT_BIRTHDAY=Geburtstag:
 ADMIN_LINKS_HEADER=Administrative Links:
 ADMIN_LINK_EDIT_USER=Benutzerdaten editieren
@@ -371,7 +368,6 @@ ADMIN_LINK_DELETE_USER_TITLE=L\u00f6scht das Benutzeraccount (nach Best\u00e4tig
 CONTENT_TITLE_ADMIN_DELETE_USER=Benutzeraccount l\u00f6schen:
 PAGE_TITLE_ADMIN_DELETE_USER=Benutzeraccount l\u00f6schen
 ADMIN_HEADER_SHOW_MOBILE_NUMBER_DATA=Daten des Mobiltelefons:
-ADMIN_SHOW_PHONE_ID=Id-Nummer:
 ADMIN_SHOW_MOBILE_PROVIDER_NAME=Mobilanbieter:
 ADMIN_SHOW_MOBILE_NUMBER_COMPLETE=Komplette Nummer:
 ADMIN_SHOW_ADMINISTRATIVE_LINKS=Administrative Links:
@@ -450,9 +446,7 @@ LINK_GUEST_TERMS_CONDITIONS=Allgemeine Gesch\u00e4ftsbestimmungen
 LINK_GUEST_PRIVACY_STATEMENTS=Datenschutzbestimmungen
 ADMIN_ADD_OR_ENTER_CONTACT_DATA=... oder geben Sie die Kontaktdaten des Recruiters ein:
 ADMIN_PERSONAL_DATA_EMAIL_ADDRESS=Email-Adresse:
-MENU_RECRUIITER_TITLE=F\u00fcr Recruiter
-LINK_RERUITER_LOGIN=Einloggen
-LINK_RERUITER_LOGIN_TITLE=Zum Recruiter-Bereich einloggen
+ADMIN_ADD_OR_ENTER_CONTACT_DATA=... oder geben Sie die Kontaktdaten des Benutzers ein:
 ERROR_CONTACT_ID_NOT_FOUND=Fehler: Kontaktdaten nicht gefunden.
 GUEST_REGISTRATION_PAGE1_TITLE=Anmeldeseite 1
 GUEST_REGISTRATION_PAGE2_TITLE=Anmeldeseite 2
@@ -801,22 +795,22 @@ ADMIN_BASIC_COMPANY_DATA_LIST_EMPTY=Es befinden sich keine Stammdaten in der Dat
 TABLE_SUMMARY_ADMIN_LIST_BASIC_COMPANY_DATA=Tabelle listet Stammdaten auf.
 ADMIN_BASIC_COMPANY_DATA_ID=Id-Nummer:
 #@TODO Please fix German umlauts!
-ADMIN_LINK_SHOW_BUSINESS_CONTACT_DATA_TITLE=Details des Stammdatens anzeigen.
-ADMIN_BASIC_COMPANY_DATA_OWNER_ID=Zugew. Benutzer:
+ADMIN_LINK_SHOW_BASIC_COMAPNY_DATA_TITLE=Stammdaten des Unternehmens anzeigen.
+ADMIN_ASSIGNED_USER_ID=Zugew. Benutzer:
 ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_OWNER_USER_TITLE=Benutzerprofil des zugewiesenen Benutzers anzeigen.
 ADMIN_LINK_ASSIGN=Zuweisen
 #@TODO Please fix German umlauts!
 ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_OWNER_USER_TITLE=Stammdaten einen Benutzeraccount zuweisen.
 ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME=Firmenname:
-ADMIN_BASIC_COMPANY_DATA_CONTACT_PERSON=Ansprechpartner:
+ADMIN_CONTACT_PERSON=Ansprechpartner:
 ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_CONTACT_PERSON_TITLE=Zeigt einen Mitarbeiter an, der als Ansprechpartner eingetragen ist.
 ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_CONTACT_PERSON=Zuweisen
 #@TODO Please fix German umlauts!
 ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_CONTACT_PERSON_TITLE=Weisst einen Mitarbeiter als Ansprechpartner des geschaftlichen Kontaktes zu.
 ADMIN_SHOW_FULL_CONTACT_DATA_TITLE=Zeigt das komplette Kontaktprofil an.
-ADMIN_BUSINESS_DATA_COMPANY_COMMENTS=Anmerkungen:
-ADMIN_BUSINESS_DATA_PHONE_NUMBER=Haupttelefonnummer:
-ADMIN_BUSINESS_DATA_FAX_NUMBER=Hauptfaxnummer:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_COMMENTS=Anmerkungen:
+ADMIN_BASIC_COMPANY_DATA_PHONE_NUMBER=Haupttelefonnummer:
+ADMIN_BASIC_COMPANY_DATA_FAX_NUMBER=Hauptfaxnummer:
 #@TODO Please fix German umlauts!
 ADMIN_ADD_BASIC_COMPANY_DATA_TITLE=Neuen geschaeftlichen Kontakt hinzufuegen
 ADMIN_ADD_BASIC_COMPANY_DATA_MINIMUM_DATA=Bitte mindestens Firmennamen inklusive Rechtsform ein.
@@ -826,10 +820,10 @@ ENTERED_EMAIL_ADDRESS_IS_INVALID=Die eingegebene Email-Addresse entspricht nicht
 ADMIN_BASIC_COMPANY_DATA_LEGEND=Basisdaten fuer geschaeftlichen Kontakt:
 #@TODO Please fix German umlauts!
 ADMIN_BASIC_COMPANY_DATA_LEGEND_TITLE=Geben Sie die Basisdaten fuer einen geschaeftlichen Kontakt ein.
-ADMIN_BUSINESS_DATA_COMPANY_NAME=Firmenname:
-ADMIN_BUSINESS_DATA_COMPANY_NAME_REQUIRED=Bitte geben Sie den Firmennamen inklusive Rechtsform ein.
-ADMIN_BUSINESS_DATA_COMPANY_LEGAL_STATUS=Rechtsform (z.B. GmbH):
-ADMIN_BUSINESS_DATA_COMPANY_EMAIL_ADDRESS=Haupt-Email-Adresse:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME=Firmenname:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME_REQUIRED=Bitte geben Sie den Firmennamen inklusive Rechtsform ein.
+ADMIN_BASIC_COMPANY_DATA_COMPANY_LEGAL_STATUS=Rechtsform (z.B. GmbH):
+ADMIN_BASIC_COMPANY_DATA_COMPANY_EMAIL_ADDRESS=Haupt-Email-Adresse:
 #@TODO Please fix German umlauts!
 BUTTON_ADMIN_CONTINUE_BUSINESS_CONTACT_PERSON=Basisdaten hinzufuegen
 ERROR_GUEST_REGISTRATION_IN_INDEX_ENABLED=Fehler: Falscher Aufruf der Anmeldeseite, da die Eingangsseite als Anmeldeseite fungiert.
@@ -838,20 +832,20 @@ BUTTON_CHANGE_LOCALE=Aendern
 #@TODO Please fix German umlauts!
 BUTTON_CHANGE_LOCALE_TITLE=Aendern Sie hier in der aktuellen Sitzung die angezeigte Sprache.
 #@TODO Please fix German umlauts!
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_FOUNDER=Firmengruender auswaehlen:
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_FOUNDER=Firmengruender auswaehlen:
 ADMIN_FEATURE_UNFINISHED_WARNING=Diese Funktion ist noch nicht fertiggestellt.
-ADMIN_BUSINESS_DATA_COMPANY_TAX_NUMBER=Steuernummer:
-ADMIN_BUSINESS_DATA_COMPANY_WEBSITE_URL=Webseiten-URL:
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_USER_OWNER=Unternehmen einem Benutzer zuweisen:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_TAX_NUMBER=Steuernummer:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_WEBSITE_URL=Webseiten-URL:
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_USER_OWNER=Unternehmen einem Benutzer zuweisen:
 #@TODO Please fix German umlauts!
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_LOGO=Firmenlogo auswaehlen:
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_LOGO=Firmenlogo auswaehlen:
 #@TODO Please fix German umlauts!
 URL_NOT_MATCHING_REGULAR_EXPRESSION=Die eingegebene URL entspricht nicht der ueblichen Form.
 #@TODO Please fix German umlauts!
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_CONTACT_EMPLOYEE=Mitarbeiter als Kontaktperson auswaehlen:
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_CONTACT_EMPLOYEE=Mitarbeiter als Kontaktperson auswaehlen:
 #@TODO Please fix German umlauts!
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_HEADQUARTERS=Daten des Hauptsitzesz auswaehlen:
-LINK_COMPANY_WEBSITE_URL_TITLE=Zur Unternehmenswebseite (neues Fenster) surfen
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_HEADQUARTERS=Daten des Hauptsitzesz auswaehlen:
+LINK_COMPANY_WEBSITE_URL_TITLE=Link zur Unternehmenswebseite (neues Fenster)
 #@TODO Please fix German umlauts!
 ADMIN_BASIC_COMPANY_DATA_COMPANY_FOUNDER=Gruender
 #@TODO Please fix German umlauts!
@@ -862,8 +856,8 @@ ADMIN_BASIC_COMPANY_DATA_CREATED=Eintrag erstellt
 ADMIN_USER_NAME_IS_REQUIRED=Bitte vergeben Sie einen Benutzernamen. Dieser muss unique sein.
 NO_WEBSITE_URL_ENTERED=Keine URL eingegeben
 LINK_ADMIN_LIST_BRANCH_OFFICES=Filialen auflisten
-ADMIN_DATA_STORE=Etage:
-ADMIN_DATA_SUITE_NUMBER=Appartmentnummer:
+ADMIN_ENTER_DATA_STORE=Etage eingeben:
+ADMIN_ENTER_DATA_SUITE_NUMBER=Appartmentnummer eingeben:
 ADMIN_SELECT_BRANCH_OFFICE_USER_OWNER=Filiale einem Benutzer zuweisen:
 ADMIN_SELECT_BRANCH_OFFICE_CONTACT_EMPLOYEE=Kontaktperson der Filiale zuweisen:
 ADMIN_BRANCH_OFFICE_LEGEND=Grunddaten der Filiale:
@@ -890,3 +884,17 @@ ENTERED_STORE_INVALID=Die eingegebene Etage ist nicht gueltig.
 ENTERED_SUITE_NUMBER_INVALID=Die eingegebene Appartmentnummer ist ungueltig.
 ADMIN_BRANCH_OFFICE_ADDRESS_LEGEND=Adressdaten der Filiale:
 ADMIN_BRANCH_OFFICE_ADDRESS_LEGEND_TITLE=Geben Sie hier die Adresse der Filiale ein.
+ADMIN_BRANCH_OFFICE_ZIP_CODE_REQUIRED=Bitte geben Sie die Postleitzahl zur Filiale ein.
+ADMIN_BRANCH_OFFICE_CITY_REQUIRED=Bitte geben Sie die Stadt der Filiale ein.
+ADMIN_BRANCH_OFFICE_ALREADY_CREATED=Eine Filiale existiert bereits mit den angegebenen Daten.
+ADMIN_LINK_SHOW_BRANCH_OFFICE_TITLE=Zeige Details dieser Filiale an.
+ADMIN_LINK_SHOW_BRANCH_OFFICES_OWNER_USER_TITLE=Zeit das Benutzerprofil des Besitzers des Filialeintrages an.
+ADMIN_LINK_ASSIGN_BRANCH_OFFICES_OWNER_USER_TITLE=Dieser Filiale einen Benutzer als Besitzer zuweisen.
+ADMIN_LINK_SHOW_BRANCH_OFFICES_CONTACT_PERSON_TITLE=Zeit die Daten der Kontaktperson dieser Filiale an.
+ADMIN_LINK_ASSIGN_BRANCH_OFFICES_CONTACT_PERSON_TITLE=Einen Mitarbeiter als Kontaktperson dieser Filiale zuweisen.
+NO_EMAIL_ADDRESS_ENTERED=Keine Email-Adresse eingegeben.
+DATA_ADDRESS=Adresse
+DATA_STORE=Etage:
+DATA_SUITE_NUMBER=Appartmentnummer:
+#@TODO Please fix German umlauts!
+PARAMETER_ADDRESSBOOK_ID_NOT_FOUND=Der angeklickte Link ist nicht mehr gueltig: Addressbook mit der eingegebenen Id-Nummer existiert nicht mehr.
diff --git a/src/java/org/mxchange/localization/bundle_en_US.properties b/src/java/org/mxchange/localization/bundle_en_US.properties
index a62c4c37..4da1b875 100644
--- a/src/java/org/mxchange/localization/bundle_en_US.properties
+++ b/src/java/org/mxchange/localization/bundle_en_US.properties
@@ -265,7 +265,7 @@ ADMIN_ENTER_COUNTRY_EXTERNAL_DIAL_PREFIX=Prefix for calls outside local city: (m
 ADMIN_ENTER_COUNTRY_PHONE_CODE=Dial prefix for this country:
 ADMIN_ENTER_COUNTRY_PHONE_CODE_EXAMPLE=(Example: 1 for U.S.A.)
 BUTTON_ADMIN_ADD_COUNTRY=Add country data
-ADMIN_LIST_COUNTRY_DATA_COUNTRY_ID=Id number:
+ADMIN_ID_NUMBER=Id number:
 ADMIN_LIST_COUNTRY_DATA_COUNTRY_CODE=Country code:
 ADMIN_LIST_COUNTRY_DATA_COUNTRY_EXTERNAL_DIAL_PREFIX=Dial prefix outside:
 ADMIN_LIST_COUNTRY_DATA_COUNTRY_NAME=Country:
@@ -294,11 +294,10 @@ BUTTON_ADMIN_ADD_MOBILE_PROVIDER=Add mobile provider
 ADMIN_ADD_MOBILE_PROVIDER_NOTICES=Notices for adding mobile provider:
 ADMIN_ADD_MOBILE_PROVIDER_PATTERN=The pattern should only contain one %s which must be the full mobile number. Example: %s@smsmail.provider.example
 ADMIN_ENTER_MOBILE_PROVIDER_PATTERN_EXAMPLE=(Example: %s@smsmail.provider.example)
-ADMIN_LIST_MOBILE_PROVIDER_ID=Id number:
 ADMIN_LIST_MOBILE_PROVIDER_NAME=Name:
 ADMIN_LIST_MOBILE_PROVIDER_DIAL_PREFIX=Dial prefix:
 ADMIN_LIST_MOBILE_PROVIDER_COUNTRY=Country:
-ADMIN_LIST_MOBILE_PROVIDER_ENTRY_CREATED=Created:
+ADMIN_LIST_ENTRY_CREATED=Created:
 ADMIN_LINK_EDIT_DELETE_MOBILE_PROVIDER_TITLE=Edit or delete mobile provider
 ADMIN_USER_DATA_ENTER_PASSWORD=Enter password:
 ADMIN_USER_DATA_ENTER_PASSWORD_REPEAT=Repeat password:
@@ -328,8 +327,6 @@ ADMIN_USER_ACCOUNT_STATUS=Account status:
 ADMIN_USER_PROFILE_MODE=Profile mode:
 ADMIN_USER_LAST_LOCKED=Last locked:
 ADMIN_USER_LAST_LOCKED_REASON=Last lock reason:
-ADMIN_USER_CONTACT_CREATED=When contact data created:
-ADMIN_USER_CONTACT_UPDATED=When contact data updated:
 ADMIN_CONTACT_IS_OWN_CONTACT=Own account:
 ADMIN_CONTACT_PERSONAL_TITLE=Gender:
 ADMIN_CONTACT_ACADEMIC_TITLE=Title:
@@ -339,7 +336,7 @@ ADMIN_CONTACT_STREET=Street:
 ADMIN_CONTACT_HOUSE_NUMBER=House number:
 ADMIN_CONTACT_ZIP_CODE=ZIP code:
 ADMIN_CONTACT_CITY=City:
-ADMIN_CONTACT_EMAIL_ADDRESS=Email address:
+DATA_EMAIL_ADDRESS=Email address:
 ADMIN_CONTACT_BIRTHDAY=Birthday:
 ADMIN_LINKS_HEADER=Administrative links:
 ADMIN_LINK_EDIT_USER=Edit user data
@@ -351,7 +348,6 @@ ADMIN_LINK_DELETE_USER_TITLE=Deletes user account (after confirmation).
 CONTENT_TITLE_ADMIN_DELETE_USER=Delete user account:
 PAGE_TITLE_ADMIN_DELETE_USER=Delete user account
 ADMIN_HEADER_SHOW_MOBILE_NUMBER_DATA=Data of mobile phone:
-ADMIN_SHOW_PHONE_ID=Id number:
 ADMIN_SHOW_MOBILE_PROVIDER_NAME=Mobile provider:
 ADMIN_SHOW_MOBILE_NUMBER_COMPLETE=Complete number:
 ADMIN_SHOW_ADMINISTRATIVE_LINKS=Administrative links:
@@ -429,9 +425,6 @@ LINK_GUEST_TERMS_CONDITIONS=Terms & Conditions
 LINK_GUEST_PRIVACY_STATEMENTS=privacy statements
 ADMIN_ADD_OR_ENTER_CONTACT_DATA=... or enter the user's contact data:
 ADMIN_PERSONAL_DATA_EMAIL_ADDRESS=Email address:
-MENU_RECRUIITER_TITLE=For recruiter
-LINK_RERUITER_LOGIN=Login
-LINK_RERUITER_LOGIN_TITLE=Login to recruiter area
 ERROR_CONTACT_ID_NOT_FOUND=Error: contact data not found
 GUEST_REGISTRATION_PAGE1_TITLE=Registration page 1
 GUEST_REGISTRATION_PAGE2_TITLE=Registration page 2
@@ -789,45 +782,45 @@ CONTENT_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA=Lists basic company data
 ADMIN_BASIC_COMPANY_DATA_LIST_EMPTY=There are currently no basic company data in database.
 TABLE_SUMMARY_ADMIN_LIST_BASIC_COMPANY_DATA=This table lists basic company data.
 ADMIN_BASIC_COMPANY_DATA_ID=Id Number:
-ADMIN_LINK_SHOW_BUSINESS_CONTACT_DATA_TITLE=Show details of this business contact.
-ADMIN_BASIC_COMPANY_DATA_OWNER_ID=Assigned user:
+ADMIN_LINK_SHOW_BASIC_COMAPNY_DATA_TITLE=Show details of this business contact.
+ADMIN_ASSIGNED_USER_ID=Assigned user:
 ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_OWNER_USER_TITLE=Shows assigned user profile.
 ADMIN_LINK_ASSIGN=Assign
 ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_OWNER_USER_TITLE=Assigns this business contact to a user account.
 ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME=Company name:
-ADMIN_BASIC_COMPANY_DATA_CONTACT_PERSON=Contact person:
+ADMIN_CONTACT_PERSON=Contact person:
 ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_CONTACT_PERSON_TITLE=Shows a single employee entry who has been assigned as contact person.
 ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_CONTACT_PERSON=Assign
 ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_CONTACT_PERSON_TITLE=Assigns an employee as a contact person for given business contact.
 ADMIN_SHOW_FULL_CONTACT_DATA_TITLE=Shows complete contact profile.
-ADMIN_BUSINESS_DATA_COMPANY_COMMENTS=Comments:
-ADMIN_BUSINESS_DATA_PHONE_NUMBER=Main phone number:
-ADMIN_BUSINESS_DATA_FAX_NUMBER=Main fax number:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_COMMENTS=Comments:
+ADMIN_BASIC_COMPANY_DATA_PHONE_NUMBER=Main phone number:
+ADMIN_BASIC_COMPANY_DATA_FAX_NUMBER=Main fax number:
 ADMIN_ADD_BASIC_COMPANY_DATA_TITLE=Add new business contact
 ADMIN_ADD_BASIC_COMPANY_DATA_MINIMUM_DATA=Please enter at least company name including legal status.
 ENTERED_EMAIL_ADDRESS_IS_INVALID=Your entered email address is not valid.
 ADMIN_BASIC_COMPANY_DATA_LEGEND=Basic data for business contact:
 #Geben Sie die Basisdaten fuer einen geschaeftlichen Kontakt ein.
 ADMIN_BASIC_COMPANY_DATA_LEGEND_TITLE=Enter basic data for a business contact.
-ADMIN_BUSINESS_DATA_COMPANY_NAME=Company name:
-ADMIN_BUSINESS_DATA_COMPANY_NAME_REQUIRED=Please enter the company's name including legal status.
-ADMIN_BUSINESS_DATA_COMPANY_LEGAL_STATUS=Legal status (e.g. Inc.):
-ADMIN_BUSINESS_DATA_COMPANY_EMAIL_ADDRESS=Main email address:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME=Company name:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME_REQUIRED=Please enter the company's name including legal status.
+ADMIN_BASIC_COMPANY_DATA_COMPANY_LEGAL_STATUS=Legal status (e.g. Inc.):
+ADMIN_BASIC_COMPANY_DATA_COMPANY_EMAIL_ADDRESS=Main email address:
 BUTTON_ADMIN_CONTINUE_BUSINESS_CONTACT_PERSON=Add basic data
 #Fehler: Falscher Aufruf der Anmeldeseite, da die Eingangsseite als Anmeldeseite fungiert.
 ERROR_GUEST_REGISTRATION_IN_INDEX_ENABLED=Error: Wrong request on registration page as the index page serves as registration page.
 BUTTON_CHANGE_LOCALE=Change
 BUTTON_CHANGE_LOCALE_TITLE=Change here in your current session the used language for text output.
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_FOUNDER=Choose company founder:
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_FOUNDER=Choose company founder:
 ADMIN_FEATURE_UNFINISHED_WARNING=This feature is not yet finished.
-ADMIN_BUSINESS_DATA_COMPANY_TAX_NUMBER=Tax number:
-ADMIN_BUSINESS_DATA_COMPANY_WEBSITE_URL=Website URL:
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_USER_OWNER=Select user to assign with company:
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_LOGO=Choose company logo:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_TAX_NUMBER=Tax number:
+ADMIN_BASIC_COMPANY_DATA_COMPANY_WEBSITE_URL=Website URL:
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_USER_OWNER=Select user to assign with company:
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_LOGO=Choose company logo:
 URL_NOT_MATCHING_REGULAR_EXPRESSION=The entered URL does not match the common form.
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_CONTACT_EMPLOYEE=Choose employee as contact person:
-ADMIN_SELECT_BUSINESS_DATA_COMPANY_HEADQUARTERS=Choose headquarters:
-LINK_COMPANY_WEBSITE_URL_TITLE=Surf to company's web site (new window)
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_CONTACT_EMPLOYEE=Choose employee as contact person:
+ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_HEADQUARTERS=Choose headquarters:
+LINK_COMPANY_WEBSITE_URL_TITLE=Link to company's web site (new window)
 ADMIN_BASIC_COMPANY_DATA_COMPANY_FOUNDER=Founder
 ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_COMPANY_FOUNDER_TITLE=Show data of company founder.
 ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_COMPANY_FOUNDER_TITLE=Assigns a company founder to this company entry.
@@ -835,8 +828,8 @@ ADMIN_BASIC_COMPANY_DATA_CREATED=Entry created
 ADMIN_USER_NAME_IS_REQUIRED=Please enter a user name. This must be unique.
 NO_WEBSITE_URL_ENTERED=No URL entered
 LINK_ADMIN_LIST_BRANCH_OFFICES=List branch offices
-ADMIN_DATA_STORE=Store:
-ADMIN_DATA_SUITE_NUMBER=Suite number:
+ADMIN_ENTER_DATA_STORE=Enter store:
+ADMIN_ENTER_DATA_SUITE_NUMBER=Enter suite number:
 ADMIN_SELECT_BRANCH_OFFICE_USER_OWNER=Assign branch office to user:
 ADMIN_SELECT_BRANCH_OFFICE_CONTACT_EMPLOYEE=Select contact person to branch office:
 ADMIN_BRANCH_OFFICE_LEGEND=Branch office basic data:
@@ -858,3 +851,15 @@ ENTERED_STORE_INVALID=The entered store is not valid.
 ENTERED_SUITE_NUMBER_INVALID=The entered suite number is not valid.
 ADMIN_BRANCH_OFFICE_ADDRESS_LEGEND=Address data of branch office:
 ADMIN_BRANCH_OFFICE_ADDRESS_LEGEND_TITLE=Enter here the address of the branch office.
+ADMIN_BRANCH_OFFICE_ZIP_CODE_REQUIRED=Please enter ZIP code for the branch office.
+ADMIN_BRANCH_OFFICE_CITY_REQUIRED=Please enter city for the branch office.
+ADMIN_BRANCH_OFFICE_ALREADY_CREATED=A branch office with same data already exists.
+ADMIN_LINK_SHOW_BRANCH_OFFICE_TITLE=Show details of this branch office.
+ADMIN_LINK_SHOW_BRANCH_OFFICES_OWNER_USER_TITLE=Show the profile of the branch office entry owning user.
+ADMIN_LINK_ASSIGN_BRANCH_OFFICES_OWNER_USER_TITLE=Assign a user as owner to this branch office.
+ADMIN_LINK_SHOW_BRANCH_OFFICES_CONTACT_PERSON_TITLE=Shows contact data of this branch office's contact person.
+ADMIN_LINK_ASSIGN_BRANCH_OFFICES_CONTACT_PERSON_TITLE=Assign a company employee as contact person for this branch office.
+NO_EMAIL_ADDRESS_ENTERED=No email address entered.
+DATA_ADDRESS=Address
+DATA_STORE=Store:
+DATA_SUITE_NUMBER=Suite number:
diff --git a/src/java/org/mxchange/pizzaapplication/beans/business/basicdata/PizzaBusinessDataWebRequestBean.java b/src/java/org/mxchange/pizzaapplication/beans/business/basicdata/PizzaBusinessDataWebRequestBean.java
index 568c4699..bd2c640f 100644
--- a/src/java/org/mxchange/pizzaapplication/beans/business/basicdata/PizzaBusinessDataWebRequestBean.java
+++ b/src/java/org/mxchange/pizzaapplication/beans/business/basicdata/PizzaBusinessDataWebRequestBean.java
@@ -140,12 +140,12 @@ public class PizzaBusinessDataWebRequestBean extends BasePizzaController impleme
 		} else if (event.getBasicData() == null) {
 			// Throw NPE again
 			throw new NullPointerException("event.basicData is null");
-		} else if (event.getBasicData().getCompanyDataId() == null) {
+		} else if (event.getBasicData().getBasicDataId() == null) {
 			// Throw NPE again
-			throw new NullPointerException("event.basicData.companyDataId is null");
-		} else if (event.getBasicData().getCompanyDataId() < 1) {
+			throw new NullPointerException("event.basicData.basicDataId is null");
+		} else if (event.getBasicData().getBasicDataId() < 1) {
 			// Throw IAE
-			throw new IllegalArgumentException(MessageFormat.format("event.basicData.companyDataId={0} is invalid", event.getBasicData().getCompanyDataId()));
+			throw new IllegalArgumentException(MessageFormat.format("event.basicData.basicDataId={0} is invalid", event.getBasicData().getBasicDataId()));
 		} else if (event.getBasicData().getCompanyName() == null) {
 			// Throw NPE again
 			throw new NullPointerException("event.basicData.companyName is null");
@@ -155,7 +155,7 @@ public class PizzaBusinessDataWebRequestBean extends BasePizzaController impleme
 		}
 
 		// Add it to list
-		this.basicDataCache.put(event.getBasicData().getCompanyDataId(), event.getBasicData());
+		this.basicDataCache.put(event.getBasicData().getBasicDataId(), event.getBasicData());
 	}
 
 	/**
@@ -362,7 +362,7 @@ public class PizzaBusinessDataWebRequestBean extends BasePizzaController impleme
 				final BusinessBasicData next = iterator.next();
 
 				// Add it to cache
-				this.basicDataCache.put(next.getCompanyDataId(), next);
+				this.basicDataCache.put(next.getBasicDataId(), next);
 			}
 		}
 	}
diff --git a/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaAdminBranchOfficeWebRequestBean.java b/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaAdminBranchOfficeWebRequestBean.java
index 4bf0fc32..aed64dc7 100644
--- a/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaAdminBranchOfficeWebRequestBean.java
+++ b/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaAdminBranchOfficeWebRequestBean.java
@@ -16,15 +16,29 @@
  */
 package org.mxchange.pizzaapplication.beans.business.branchoffice;
 
+import java.util.List;
 import javax.ejb.EJB;
 import javax.enterprise.context.RequestScoped;
+import javax.enterprise.event.Event;
+import javax.enterprise.inject.Any;
+import javax.inject.Inject;
 import javax.inject.Named;
-import org.mxchange.jcontactsbusiness.basicdata.BusinessBasicData;
-import org.mxchange.jcontactsbusiness.branchoffice.AdminBranchOfficeSessionBeanRemote;
-import org.mxchange.jcontactsbusiness.employee.Employee;
-import org.mxchange.jcountry.data.Country;
-import org.mxchange.jfinancials.beans.BasePizzaController;
+import org.mxchange.jcontactsbusiness.events.branchoffice.added.BranchOfficeAddedEvent;
+import org.mxchange.jcontactsbusiness.events.branchoffice.added.ObservableBranchOfficeAddedEvent;
+import org.mxchange.jcontactsbusiness.exceptions.branchoffice.BranchOfficeAlreadyAddedException;
+import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData;
+import org.mxchange.jcontactsbusiness.model.branchoffice.AdminBranchOfficeSessionBeanRemote;
+import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffice;
+import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffices;
+import org.mxchange.jcontactsbusiness.model.branchoffice.CompanyBranchOffice;
+import org.mxchange.jcontactsbusiness.model.employee.Employee;
+import org.mxchange.jcountry.model.data.Country;
+import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.model.phonenumbers.fax.FaxNumber;
+import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
+import org.mxchange.jphone.model.phonenumbers.landline.LandLineNumber;
 import org.mxchange.jusercore.model.user.User;
+import org.mxchange.pizzaapplication.beans.BasePizzaController;
 
 /**
  * An administrative bean for branch offices
@@ -76,6 +90,19 @@ public class PizzaAdminBranchOfficeWebRequestBean extends BasePizzaController im
 	 */
 	private Short branchHouseNumber;
 
+	/**
+	 * An event being fired when a branch office has been successfully added
+	 */
+	@Inject
+	@Any
+	private Event<ObservableBranchOfficeAddedEvent> branchOfficeAddedEvent;
+
+	/**
+	 * A general branch office controller (backing bean)
+	 */
+	@Inject
+	private PizzaBranchOfficeWebRequestController branchOfficeController;
+
 	/**
 	 * Store
 	 */
@@ -139,6 +166,43 @@ public class PizzaAdminBranchOfficeWebRequestBean extends BasePizzaController im
 		super();
 	}
 
+	/**
+	 * Adds branch office with all data from this backing bean. First this
+	 * action method will validate if the branch office's address is already
+	 * registered and if found, it will output a proper faces message.
+	 * <p>
+	 * @return Redirect outcome
+	 */
+	public String addBranchOffice () {
+		// Get instance
+		final BranchOffice branchOffice = this.createBranchOffice();
+
+		// Is the branch office not created yet?
+		if (this.isBranchOfficeCreatedByRequiredData(branchOffice)) {
+			// Then show proper faces message
+			this.showFacesMessage("form_admin_add_branch_office:branchStreet", "ADMIN_BRANCH_OFFICE_ALREADY_CREATED"); //NOI18N
+			return ""; //NOI18N
+		}
+
+		// Delcare updated instance
+		final BranchOffice updatedOffice;
+
+		try {
+			// Try to call EJB
+			updatedOffice = this.adminBranchOfficeBean.addBranchOffice(branchOffice);
+		} catch (final BranchOfficeAlreadyAddedException ex) {
+			// Output message
+			this.showFacesMessage("form_admin_add_branch_office:branchStreet", "ADMIN_BRANCH_OFFICE_ALREADY_CREATED"); //NOI18N
+			return ""; //NOI18N
+		}
+
+		// Fire event
+		this.branchOfficeAddedEvent.fire(new BranchOfficeAddedEvent(updatedOffice));
+
+		// Redirect to list
+		return "admin_list_branch_offices"; //NOI18N
+	}
+
 	/**
 	 * Getter for city
 	 * <p>
@@ -445,4 +509,103 @@ public class PizzaAdminBranchOfficeWebRequestBean extends BasePizzaController im
 		this.landLineNumber = landLineNumber;
 	}
 
+	/**
+	 * Prepares an instance of a BranchOffice object (entity) with all data from
+	 * this bean. If a complete fax number or land-line number was provided, it
+	 * will be set in the instance as well.
+	 * <p>
+	 * @return An instance of a BranchOffice class (entity)
+	 */
+	private BranchOffice createBranchOffice () {
+		// Create new branch office instance
+		final BranchOffice branchOffice = new CompanyBranchOffice(this.getBranchCity(), this.getBranchCompany(), this.getBranchCountry(), this.getBranchStreet(), this.getBranchZipCode(), this.getBranchHouseNumber());
+
+		// Add all other fields, too
+		branchOffice.setBranchContactEmployee(this.getBranchContactEmployee());
+		branchOffice.setBranchEmailAddress(this.getBranchEmailAddress());
+		branchOffice.setBranchStore(this.getBranchStore());
+		branchOffice.setBranchSuiteNumber(this.getBranchSuiteNumber());
+		branchOffice.setBranchUserOwner(this.getBranchUserOwner());
+
+		// Generate phone number
+		final DialableLandLineNumber landLine = new LandLineNumber(this.getLandLineCountry(), this.getLandLineAreaCode(), this.getLandLineNumber());
+		final DialableFaxNumber fax = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber());
+
+		// Don't set null or wrong references
+		if ((landLine instanceof DialableLandLineNumber) && (landLine.getPhoneCountry() instanceof Country) && (this.getLandLineAreaCode() != null) && (this.getLandLineNumber() != null) && (this.getLandLineAreaCode() > 0) && (this.getLandLineNumber() > 0)) {
+			// Now the number must be given
+			if (landLine.getPhoneAreaCode() == null) {
+				// Is null
+				throw new NullPointerException("phone.phoneAreaCode is null"); //NOI18N
+			} else if (landLine.getPhoneAreaCode() < 1) {
+				// Abort here
+				throw new IllegalArgumentException("phone.phoneAreaCode is zero or below."); //NOI18N
+			} else if (landLine.getPhoneNumber() == null) {
+				// Is null
+				throw new NullPointerException("phone.phoneNumber is null"); //NOI18N
+			} else if (landLine.getPhoneNumber() < 1) {
+				// Abort here
+				throw new IllegalArgumentException("phone.phoneNumber is zero or below."); //NOI18N
+			}
+
+			// Set phone number
+			branchOffice.setBranchLandLineNumber(landLine);
+		}
+
+		// Don't set null or wrong references
+		if ((fax instanceof DialableFaxNumber) && (fax.getPhoneCountry() instanceof Country) && (this.getFaxAreaCode() != null) && (this.getFaxNumber() != null) && (this.getFaxAreaCode() > 0) && (this.getFaxNumber() > 0)) {
+			// Now the number must be given
+			if (fax.getPhoneAreaCode() == null) {
+				// Is null
+				throw new NullPointerException("fax.phoneAreaCode is null"); //NOI18N
+			} else if (fax.getPhoneAreaCode() < 1) {
+				// Abort here
+				throw new IllegalArgumentException("fax.phoneAreaCode is zero or below."); //NOI18N
+			} else if (fax.getPhoneNumber() == null) {
+				// Is null
+				throw new NullPointerException("fax.phoneNumber is null"); //NOI18N
+			} else if (fax.getPhoneNumber() < 1) {
+				// Abort here
+				throw new IllegalArgumentException("fax.phoneNumber is zero or below."); //NOI18N
+			}
+
+			// Set fax number
+			branchOffice.setBranchFaxNumber(fax);
+		}
+
+		// Return fully prepared instance
+		return branchOffice;
+	}
+
+	/**
+	 * Checks whether the given branch office's address is already found in
+	 * local cache. Please note that this method fully relies on the cache, so
+	 * you must always fire proper events that add/update/delete entries in
+	 * cache.
+	 * <p>
+	 * @param branchOffice Branch office to check it's address
+	 * <p>
+	 * @return Whether the address has been found
+	 */
+	private boolean isBranchOfficeCreatedByRequiredData (final BranchOffice branchOffice) {
+		// Get full list from other bean
+		final List<BranchOffice> branchOffices = this.branchOfficeController.allBranchOffices();
+
+		// Default is not found
+		boolean isFound = false;
+
+		// Now check each entry
+		for (final BranchOffice bo : branchOffices) {
+			// Is same address?
+			if (BranchOffices.isSameAddress(bo, branchOffice)) {
+				// Found one
+				isFound = true;
+				break;
+			}
+		}
+
+		// Return flag
+		return isFound;
+	}
+
 }
diff --git a/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaBranchOfficeWebRequestBean.java b/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaBranchOfficeWebRequestBean.java
index 05564793..c420da75 100644
--- a/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaBranchOfficeWebRequestBean.java
+++ b/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaBranchOfficeWebRequestBean.java
@@ -17,6 +17,7 @@
 package org.mxchange.pizzaapplication.beans.business.branchoffice;
 
 import fish.payara.cdi.jsr107.impl.NamedCache;
+import java.text.MessageFormat;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -24,8 +25,10 @@ import javax.annotation.PostConstruct;
 import javax.cache.Cache;
 import javax.ejb.EJB;
 import javax.enterprise.context.RequestScoped;
+import javax.enterprise.event.Observes;
 import javax.inject.Inject;
 import javax.inject.Named;
+import org.mxchange.jcontactsbusiness.events.branchoffice.added.ObservableBranchOfficeAddedEvent;
 import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffice;
 import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOfficeSessionBeanRemote;
 import org.mxchange.pizzaapplication.beans.BasePizzaController;
@@ -66,11 +69,34 @@ public class PizzaBranchOfficeWebRequestBean extends BasePizzaController impleme
 	}
 
 	/**
-	 * Returns a list of all branch offices
+	 * Observes events being fired when a branch office has been added.
 	 * <p>
-	 * @return A list of all branch offices
+	 * @param event Event being fired
+	 * <p>
+	 * @throws NullPointerException If the parameter or it's carried instance is null
+	 * @throws IllegalArgumentException If the branchId is zero or lower
 	 */
-	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
+	public void afterBranchOfficeAddedEvent (@Observes final ObservableBranchOfficeAddedEvent event) {
+		// Validate parameter
+		if (null == event) {
+			// Throw NPE
+			throw new NullPointerException("event is null"); //NOI18N
+		} else if (event.getBranchOffice() == null) {
+			// Throw NPE again
+			throw new NullPointerException("event.branchOffice is null"); //NOI18N
+		} else if (event.getBranchOffice().getBranchId() == null) {
+			// Throw it again
+			throw new NullPointerException("event.branchOffice.branchId is null"); //NOI18N
+		} else if (event.getBranchOffice().getBranchId() < 1) {
+			// Throw IAE
+			throw new IllegalArgumentException(MessageFormat.format("event.branchOffice.branchId={0} is not valid", event.getBranchOffice().getBranchId())); //NOI18N
+		}
+
+		// Add instance to cache
+		this.branchOfficeCache.put(event.getBranchOffice().getBranchId(), event.getBranchOffice());
+	}
+
+	@Override
 	public List<BranchOffice> allBranchOffices () {
 		// Init list
 		final List<BranchOffice> list = new LinkedList<>();
diff --git a/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaBranchOfficeWebRequestController.java b/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaBranchOfficeWebRequestController.java
index 6a10272f..407497fa 100644
--- a/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaBranchOfficeWebRequestController.java
+++ b/src/java/org/mxchange/pizzaapplication/beans/business/branchoffice/PizzaBranchOfficeWebRequestController.java
@@ -17,6 +17,8 @@
 package org.mxchange.pizzaapplication.beans.business.branchoffice;
 
 import java.io.Serializable;
+import java.util.List;
+import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffice;
 
 /**
  * An interface for general branch office controller
@@ -25,4 +27,11 @@ import java.io.Serializable;
  */
 public interface PizzaBranchOfficeWebRequestController extends Serializable {
 
+	/**
+	 * Returns a list of all branch offices
+	 * <p>
+	 * @return A list of all branch offices
+	 */
+	List<BranchOffice> allBranchOffices ();
+
 }
diff --git a/web/WEB-INF/faces-config.xml b/web/WEB-INF/faces-config.xml
index fc3eadc9..132b9be4 100644
--- a/web/WEB-INF/faces-config.xml
+++ b/web/WEB-INF/faces-config.xml
@@ -713,8 +713,8 @@
 	<navigation-rule>
 		<from-view-id>/admin/basic_company_data/admin_basic_company_data_list.xhtml</from-view-id>
 		<navigation-case>
-			<from-outcome>admin_show_basic_company_data</from-outcome>
-			<to-view-id>/admin/basic_company_data/admin_basic_company_data_assign.xhtml</to-view-id>
+			<from-outcome>admin_show_basic_data</from-outcome>
+			<to-view-id>/admin/basic_company_data/admin_basic_company_data_show.xhtml</to-view-id>
 		</navigation-case>
 		<navigation-case>
 			<from-outcome>admin_assign_basic_company_data_contact</from-outcome>
@@ -728,9 +728,41 @@
 			<from-outcome>admin_assign_basic_company_data_owner</from-outcome>
 			<to-view-id>/admin/basic_company_data/admin_basic_company_data_assign_owner.xhtml</to-view-id>
 		</navigation-case>
+		<navigation-case>
+			<from-outcome>admin_show_business_employee</from-outcome>
+			<to-view-id>/admin/company_employee/admin_company_employee_show.xhtml</to-view-id>
+		</navigation-case>
+		<navigation-case>
+			<from-outcome>admin_assign_basic_company_data_employee</from-outcome>
+			<to-view-id>/admin/basic_company_data/admin_basic_company_data_assign_employee.xhtml</to-view-id>
+		</navigation-case>
 	</navigation-rule>
 	<navigation-rule>
 		<from-view-id>/admin/branch_offices/admin_branch_offices_list.xhtml</from-view-id>
+		<navigation-case>
+			<from-outcome>admin_show_branch_office</from-outcome>
+			<to-view-id>/admin/branch_offices/admin_branch_office_show.xhtml</to-view-id>
+		</navigation-case>
+		<navigation-case>
+			<from-outcome>admin_show_user</from-outcome>
+			<to-view-id>/admin/user/admin_user_show.xhtml</to-view-id>
+		</navigation-case>
+		<navigation-case>
+			<from-outcome>admin_assign_branch_office_owner</from-outcome>
+			<to-view-id>/admin/branch_offices/admin_branch_office_assign_owner.xhtml</to-view-id>
+		</navigation-case>
+		<navigation-case>
+			<from-outcome>admin_show_basic_data</from-outcome>
+			<to-view-id>/admin/basic_company_data/admin_basic_company_data_show.xhtml</to-view-id>
+		</navigation-case>
+		<navigation-case>
+			<from-outcome>admin_show_business_employee</from-outcome>
+			<to-view-id>/admin/company_employee/admin_company_employee_show.xhtml</to-view-id>
+		</navigation-case>
+		<navigation-case>
+			<from-outcome>admin_assign_branch_office_employee</from-outcome>
+			<to-view-id>/admin/branch_offices/admin_branch_office_assign_employee.xhtml</to-view-id>
+		</navigation-case>
 	</navigation-rule>
 	<!--
 	<factory>
diff --git a/web/WEB-INF/resources/tags/admin/columns/admin_contact_data_columns.tpl b/web/WEB-INF/resources/tags/admin/columns/admin_contact_data_columns.tpl
index 963e838f..df52be7b 100644
--- a/web/WEB-INF/resources/tags/admin/columns/admin_contact_data_columns.tpl
+++ b/web/WEB-INF/resources/tags/admin/columns/admin_contact_data_columns.tpl
@@ -95,7 +95,7 @@
 	</h:column>
 
 	<h:column>
-		<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.ADMIN_CONTACT_EMAIL_ADDRESS}" />
+		<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.DATA_EMAIL_ADDRESS}" />
 
 		<h:outputLink id="contactEmailAddress" styleClass="table-data-field" value="mailto:#{beanHelper.contact.contactEmailAddress}">
 			<h:outputText value="#{beanHelper.contact.contactEmailAddress}" />
diff --git a/web/WEB-INF/resources/tags/admin/columns/admin_contact_data_columns_mini.tpl b/web/WEB-INF/resources/tags/admin/columns/admin_contact_data_columns_mini.tpl
index 10ced2d5..3650b42c 100644
--- a/web/WEB-INF/resources/tags/admin/columns/admin_contact_data_columns_mini.tpl
+++ b/web/WEB-INF/resources/tags/admin/columns/admin_contact_data_columns_mini.tpl
@@ -31,7 +31,7 @@
 	</h:column>
 
 	<h:column>
-		<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.ADMIN_CONTACT_EMAIL_ADDRESS}" />
+		<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.DATA_EMAIL_ADDRESS}" />
 
 		<h:outputLink id="contactEmailAddress" styleClass="table-data-field" value="mailto:#{beanHelper.contact.contactEmailAddress}">
 			<h:outputText value="#{beanHelper.contact.contactEmailAddress}" />
diff --git a/web/WEB-INF/resources/tags/admin/form_data/contact/admin_form_contact_data.tpl b/web/WEB-INF/resources/tags/admin/form_data/contact/admin_form_contact_data.tpl
index c3795203..3d71415c 100644
--- a/web/WEB-INF/resources/tags/admin/form_data/contact/admin_form_contact_data.tpl
+++ b/web/WEB-INF/resources/tags/admin/form_data/contact/admin_form_contact_data.tpl
@@ -196,7 +196,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="emailAddress" value="#{msg.ADMIN_PERSONAL_DATA_EMAIL_ADDRESS}" />
+					<h:outputLabel for="emailAddress" value="#{msg.DATA_EMAIL_ADDRESS}" />
 				</div>
 
 				<div class="table-right-medium">
diff --git a/web/WEB-INF/resources/tags/admin/form_data/fax/admin_form_fax_data.tpl b/web/WEB-INF/resources/tags/admin/form_data/fax/admin_form_fax_data.tpl
index 980c533e..15c56904 100644
--- a/web/WEB-INF/resources/tags/admin/form_data/fax/admin_form_fax_data.tpl
+++ b/web/WEB-INF/resources/tags/admin/form_data/fax/admin_form_fax_data.tpl
@@ -14,7 +14,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="faxNumberId" value="#{msg.ADMIN_SHOW_PHONE_ID}" />
+					<h:outputLabel for="faxNumberId" value="#{msg.ADMIN_ID_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
diff --git a/web/WEB-INF/resources/tags/admin/form_data/landline/admin_form_landline_data.tpl b/web/WEB-INF/resources/tags/admin/form_data/landline/admin_form_landline_data.tpl
index ec1bf0a8..6608556a 100644
--- a/web/WEB-INF/resources/tags/admin/form_data/landline/admin_form_landline_data.tpl
+++ b/web/WEB-INF/resources/tags/admin/form_data/landline/admin_form_landline_data.tpl
@@ -14,7 +14,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="landLineNumberId" value="#{msg.ADMIN_SHOW_PHONE_ID}" />
+					<h:outputLabel for="landLineNumberId" value="#{msg.ADMIN_ID_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
diff --git a/web/WEB-INF/resources/tags/admin/form_data/mobile/admin_form_mobile_data.tpl b/web/WEB-INF/resources/tags/admin/form_data/mobile/admin_form_mobile_data.tpl
index 9e8571c3..d3f679b3 100644
--- a/web/WEB-INF/resources/tags/admin/form_data/mobile/admin_form_mobile_data.tpl
+++ b/web/WEB-INF/resources/tags/admin/form_data/mobile/admin_form_mobile_data.tpl
@@ -14,7 +14,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="mobileNumberId" value="#{msg.ADMIN_SHOW_PHONE_ID}" />
+					<h:outputLabel for="mobileNumberId" value="#{msg.ADMIN_ID_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
diff --git a/web/WEB-INF/resources/tags/admin/panel_grids/fax/admin_fax_data.tpl b/web/WEB-INF/resources/tags/admin/panel_grids/fax/admin_fax_data.tpl
index 2c376018..bc0dd680 100644
--- a/web/WEB-INF/resources/tags/admin/panel_grids/fax/admin_fax_data.tpl
+++ b/web/WEB-INF/resources/tags/admin/panel_grids/fax/admin_fax_data.tpl
@@ -13,7 +13,7 @@
 
 		<h:column>
 			<h:panelGroup>
-				<h:outputLabel for="faxNumberId" styleClass="table-data-label" value="#{msg.ADMIN_SHOW_PHONE_ID}" />
+				<h:outputLabel for="faxNumberId" styleClass="table-data-label" value="#{msg.ADMIN_ID_NUMBER}" />
 
 				<h:outputText id="faxNumberId" styleClass="table-data-field" value="#{faxNumber.phoneId}" />
 
diff --git a/web/WEB-INF/resources/tags/admin/panel_grids/landline/admin_landline_data.tpl b/web/WEB-INF/resources/tags/admin/panel_grids/landline/admin_landline_data.tpl
index 66a22eba..69febe51 100644
--- a/web/WEB-INF/resources/tags/admin/panel_grids/landline/admin_landline_data.tpl
+++ b/web/WEB-INF/resources/tags/admin/panel_grids/landline/admin_landline_data.tpl
@@ -13,7 +13,7 @@
 
 		<h:column>
 			<h:panelGroup>
-				<h:outputLabel for="landLineNumberId" styleClass="table-data-label" value="#{msg.ADMIN_SHOW_PHONE_ID}" />
+				<h:outputLabel for="landLineNumberId" styleClass="table-data-label" value="#{msg.ADMIN_ID_NUMBER}" />
 
 				<h:outputText id="landLineNumberId" styleClass="table-data-field" value="#{landLineNumber.phoneId}" />
 
diff --git a/web/WEB-INF/resources/tags/admin/panel_grids/mobile/admin_mobile_data.tpl b/web/WEB-INF/resources/tags/admin/panel_grids/mobile/admin_mobile_data.tpl
index 4077b5fa..ec622509 100644
--- a/web/WEB-INF/resources/tags/admin/panel_grids/mobile/admin_mobile_data.tpl
+++ b/web/WEB-INF/resources/tags/admin/panel_grids/mobile/admin_mobile_data.tpl
@@ -13,7 +13,7 @@
 
 		<h:column>
 			<h:panelGroup>
-				<h:outputLabel for="mobileNumberId" styleClass="table-data-label" value="#{msg.ADMIN_SHOW_PHONE_ID}" />
+				<h:outputLabel for="mobileNumberId" styleClass="table-data-label" value="#{msg.ADMIN_ID_NUMBER}" />
 
 				<h:outputText id="mobileNumberId" styleClass="table-data-field" value="#{mobileNumber.phoneId}" />
 
diff --git a/web/WEB-INF/templates/admin/basic_company_data/admin_form_basic_company_data.tpl b/web/WEB-INF/templates/admin/basic_company_data/admin_form_basic_company_data.tpl
index 1143dc91..165101ab 100644
--- a/web/WEB-INF/templates/admin/basic_company_data/admin_form_basic_company_data.tpl
+++ b/web/WEB-INF/templates/admin/basic_company_data/admin_form_basic_company_data.tpl
@@ -14,11 +14,11 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyName" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_NAME}" />
+					<h:outputLabel for="companyName" value="#{msg.ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME}" />
 				</div>
 
 				<div class="table-right-medium">
-					<h:inputText styleClass="input" id="companyName" size="30" maxlength="200" required="true" requiredMessage="#{msg.ADMIN_BUSINESS_DATA_COMPANY_NAME_REQUIRED}" value="#{adminCompanyDataController.companyName}">
+					<h:inputText styleClass="input" id="companyName" size="30" maxlength="200" required="true" requiredMessage="#{msg.ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME_REQUIRED}" value="#{adminCompanyDataController.companyName}">
 						<f:validator validatorId="CompanyNameValidator" />
 						<f:attribute name="checkExisting" value="false" />
 					</h:inputText>
@@ -31,7 +31,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyEmailAddress" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_EMAIL_ADDRESS}" />
+					<h:outputLabel for="companyEmailAddress" value="#{msg.ADMIN_BASIC_COMPANY_DATA_COMPANY_EMAIL_ADDRESS}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -48,7 +48,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyLogo" value="#{msg.ADMIN_SELECT_BUSINESS_DATA_COMPANY_LOGO}" />
+					<h:outputLabel for="companyLogo" value="#{msg.ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_LOGO}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -62,7 +62,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyTaxNumber" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_TAX_NUMBER}" />
+					<h:outputLabel for="companyTaxNumber" value="#{msg.ADMIN_BASIC_COMPANY_DATA_COMPANY_TAX_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -76,7 +76,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyWebsiteUrl" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_WEBSITE_URL}" />
+					<h:outputLabel for="companyWebsiteUrl" value="#{msg.ADMIN_BASIC_COMPANY_DATA_COMPANY_WEBSITE_URL}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -93,7 +93,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyUserOwner" value="#{msg.ADMIN_SELECT_BUSINESS_DATA_COMPANY_USER_OWNER}" />
+					<h:outputLabel for="companyUserOwner" value="#{msg.ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_USER_OWNER}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -111,7 +111,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyContactEmployee" value="#{msg.ADMIN_SELECT_BUSINESS_DATA_COMPANY_CONTACT_EMPLOYEE}" />
+					<h:outputLabel for="companyContactEmployee" value="#{msg.ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_CONTACT_EMPLOYEE}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -129,7 +129,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyFounder" value="#{msg.ADMIN_SELECT_BUSINESS_DATA_COMPANY_FOUNDER}" />
+					<h:outputLabel for="companyFounder" value="#{msg.ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_FOUNDER}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -147,7 +147,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyHeadQuarters" value="#{msg.ADMIN_SELECT_BUSINESS_DATA_COMPANY_HEADQUARTERS}" />
+					<h:outputLabel for="companyHeadQuarters" value="#{msg.ADMIN_SELECT_BASIC_COMPANY_DATA_COMPANY_HEADQUARTERS}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -165,7 +165,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="landLineCountry" value="#{msg.ADMIN_BUSINESS_DATA_PHONE_NUMBER}" />
+					<h:outputLabel for="landLineCountry" value="#{msg.ADMIN_BASIC_COMPANY_DATA_PHONE_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -199,7 +199,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="faxCountry" value="#{msg.ADMIN_BUSINESS_DATA_FAX_NUMBER}" />
+					<h:outputLabel for="faxCountry" value="#{msg.ADMIN_BASIC_COMPANY_DATA_FAX_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -233,7 +233,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="companyComments" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_COMMENTS}" />
+					<h:outputLabel for="companyComments" value="#{msg.ADMIN_BASIC_COMPANY_DATA_COMPANY_COMMENTS}" />
 				</div>
 
 				<div class="table-right-medium">
diff --git a/web/WEB-INF/templates/admin/branch_offices/admin_form_branch_offices_data.tpl b/web/WEB-INF/templates/admin/branch_offices/admin_form_branch_offices_data.tpl
index 876b39aa..06d13257 100644
--- a/web/WEB-INF/templates/admin/branch_offices/admin_form_branch_offices_data.tpl
+++ b/web/WEB-INF/templates/admin/branch_offices/admin_form_branch_offices_data.tpl
@@ -178,7 +178,7 @@
 
 				<div class="table-right-medium">
 					<h:inputText styleClass="input" id="branchHouseNumber" size="3" maxlength="5" value="#{adminBranchOfficeController.branchHouseNumber}" validatorMessage="#{msg.ENTERED_HOUSE_NUMBER_INVALID}" required="true" requiredMessage="#{msg.ADMIN_BRANCH_OFFICE_HOUSE_NUMBER_REQUIRED}">
-						<f:validateLongRange for="houseNumber" minimum="1" maximum="500" />
+						<f:validateLongRange for="branchHouseNumber" minimum="1" maximum="500" />
 					</h:inputText>
 				</div>
 			</h:panelGroup>
@@ -189,12 +189,12 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="branchStore" value="#{msg.ADMIN_DATA_STORE}" />
+					<h:outputLabel for="branchStore" value="#{msg.ADMIN_ENTER_DATA_STORE}" />
 				</div>
 
 				<div class="table-right-medium">
 					<h:inputText styleClass="input" id="branchStore" size="3" maxlength="5" value="#{adminBranchOfficeController.branchStore}" validatorMessage="#{msg.ENTERED_STORE_INVALID}">
-						<f:validateLongRange for="houseNumber" minimum="-5" maximum="200" />
+						<f:validateLongRange for="branchStore" minimum="-5" maximum="200" />
 					</h:inputText>
 				</div>
 			</h:panelGroup>
@@ -205,12 +205,12 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="branchSuiteNumber" value="#{msg.ADMIN_DATA_SUITE_NUMBER}" />
+					<h:outputLabel for="branchSuiteNumber" value="#{msg.ADMIN_ENTER_DATA_SUITE_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
 					<h:inputText styleClass="input" id="branchSuiteNumber" size="3" maxlength="5" value="#{adminBranchOfficeController.branchSuiteNumber}" validatorMessage="#{msg.ENTERED_SUITE_NUMBER_INVALID}">
-						<f:validateLongRange for="houseNumber" minimum="1" maximum="500" />
+						<f:validateLongRange for="branchSuiteNumber" minimum="1" maximum="500" />
 					</h:inputText>
 				</div>
 			</h:panelGroup>
@@ -225,7 +225,9 @@
 				</div>
 
 				<div class="table-right-medium">
-					<h:inputText styleClass="input" id="branchZipCode" size="20" maxlength="255" value="#{adminBranchOfficeController.branchZipCode}" />
+					<h:inputText styleClass="input" id="branchZipCode" size="5" maxlength="6" value="#{adminBranchOfficeController.branchZipCode}" required="true" requiredMessage="#{msg.ADMIN_BRANCH_OFFICE_ZIP_CODE_REQUIRED}">
+						<f:validateLongRange for="branchZipCode" minimum="1" maximum="99999" />
+					</h:inputText>
 				</div>
 			</h:panelGroup>
 
@@ -239,7 +241,7 @@
 				</div>
 
 				<div class="table-right-medium">
-					<h:inputText styleClass="input" id="branchCity" size="20" maxlength="255" value="#{adminBranchOfficeController.branchCity}" />
+					<h:inputText styleClass="input" id="branchCity" size="20" maxlength="255" value="#{adminBranchOfficeController.branchCity}" required="true" requiredMessage="#{msg.ADMIN_BRANCH_OFFICE_CITY_REQUIRED}" />
 				</div>
 			</h:panelGroup>
 
diff --git a/web/admin/basic_company_data/admin_basic_company_data_list.xhtml b/web/admin/basic_company_data/admin_basic_company_data_list.xhtml
index e43d20af..4daa7b2a 100644
--- a/web/admin/basic_company_data/admin_basic_company_data_list.xhtml
+++ b/web/admin/basic_company_data/admin_basic_company_data_list.xhtml
@@ -23,14 +23,14 @@
 					<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_ID}" />
 				</f:facet>
 
-				<h:link outcome="admin_show_basic_company_data" title="#{msg.ADMIN_LINK_SHOW_BUSINESS_CONTACT_DATA_TITLE}" value="#{companyData.companyDataId}">
-					<f:param name="companyDataId" value="#{companyData.companyDataId}" />
+				<h:link outcome="admin_show_basic_data" title="#{msg.ADMIN_LINK_SHOW_BASIC_COMAPNY_DATA_TITLE}" value="#{companyData.basicDataId}">
+					<f:param name="basicDataId" value="#{companyData.basicDataId}" />
 				</h:link>
 			</h:column>
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_OWNER_ID}" />
+					<h:outputText value="#{msg.ADMIN_ASSIGNED_USER_ID}" />
 				</f:facet>
 
 				<h:link outcome="admin_show_user" title="#{msg.ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_OWNER_USER_TITLE}" value="#{companyData.companyUserOwner.userId}" rendered="#{not empty companyData.companyUserOwner}">
@@ -38,7 +38,7 @@
 				</h:link>
 
 				<h:link outcome="admin_assign_basic_company_data_owner" title="#{msg.ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_OWNER_USER_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN}" rendered="#{empty companyData.companyUserOwner}">
-					<f:param name="companyDataId" value="#{companyData.companyDataId}" />
+					<f:param name="basicDataId" value="#{companyData.basicDataId}" />
 				</h:link>
 			</h:column>
 
@@ -56,15 +56,15 @@
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_CONTACT_PERSON}" />
+					<h:outputText value="#{msg.ADMIN_CONTACT_PERSON}" />
 				</f:facet>
 
 				<h:link outcome="admin_show_business_employee" title="#{msg.ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_CONTACT_PERSON_TITLE}" value="#{companyData.companyContactEmployee.employeeId}" rendered="#{not empty companyData.companyContactEmployee}">
 					<f:param name="employeeId" value="#{companyData.companyContactEmployee.employeeId}" />
 				</h:link>
 
-				<h:link outcome="admin_assign_basic_company_data_contact" title="#{msg.ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_CONTACT_PERSON_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_CONTACT_PERSON}" rendered="#{empty companyData.companyContactEmployee}">
-					<f:param name="companyDataId" value="#{companyData.companyDataId}" />
+				<h:link outcome="admin_assign_basic_company_data_employee" title="#{msg.ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_CONTACT_PERSON_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_CONTACT_PERSON}" rendered="#{empty companyData.companyContactEmployee}">
+					<f:param name="basicDataId" value="#{companyData.basicDataId}" />
 				</h:link>
 			</h:column>
 
@@ -78,7 +78,7 @@
 				</h:link>
 
 				<h:link outcome="admin_assign_basic_company_data_contact" title="#{msg.ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_COMPANY_FOUNDER_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN}" rendered="#{empty companyData.companyFounder}">
-					<f:param name="companyDataId" value="#{companyData.companyDataId}" />
+					<f:param name="basicDataId" value="#{companyData.basicDataId}" />
 				</h:link>
 			</h:column>
 
diff --git a/web/admin/branch_offices/admin_branch_offices_list.xhtml b/web/admin/branch_offices/admin_branch_offices_list.xhtml
index b4752e4c..f432dd86 100644
--- a/web/admin/branch_offices/admin_branch_offices_list.xhtml
+++ b/web/admin/branch_offices/admin_branch_offices_list.xhtml
@@ -20,71 +20,75 @@
 		<h:dataTable id="table_list_branch_offices" var="branchOffice" value="#{branchOfficeController.allBranchOffices()}" styleClass="table-full" headerClass="table-header-column" summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_BRANCH_OFFICES}" rendered="#{not branchOfficeController.allBranchOffices().isEmpty()}">
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_ID}" />
+					<h:outputText value="#{msg.ADMIN_ID_NUMBER}" />
 				</f:facet>
 
-				<h:link outcome="admin_show_branch_office" title="#{msg.ADMIN_LINK_SHOW_BUSINESS_CONTACT_DATA_TITLE}" value="#{branchOffice.branchId}">
+				<h:link outcome="admin_show_branch_office" title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_TITLE}" value="#{branchOffice.branchId}">
 					<f:param name="branchOfficeId" value="#{branchOffice.branchId}" />
 				</h:link>
 			</h:column>
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_OWNER_ID}" />
+					<h:outputText value="#{msg.ADMIN_ASSIGNED_USER_ID}" />
 				</f:facet>
 
 				<h:link outcome="admin_show_user" title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICES_OWNER_USER_TITLE}" value="#{branchOffice.branchUserOwner.userId}" rendered="#{not empty branchOffice.branchUserOwner}">
 					<f:param name="userId" value="#{branchOffice.branchUserOwner.userId}" />
 				</h:link>
 
-				<h:link outcome="admin_assign_branch_offices_owner" title="#{msg.ADMIN_LINK_ASSIGN_BRANCH_OFFICES_OWNER_USER_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN}" rendered="#{empty branchOffice.branchUserOwner}">
+				<h:link outcome="admin_assign_branch_office_owner" title="#{msg.ADMIN_LINK_ASSIGN_BRANCH_OFFICES_OWNER_USER_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN}" rendered="#{empty branchOffice.branchUserOwner}">
 					<f:param name="branchOfficeId" value="#{branchOffice.branchId}" />
 				</h:link>
 			</h:column>
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_COMPANY_NAME}" />
+					<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME}" />
 				</f:facet>
 
-				<h:link outcome="admin_show_branch_offices" value="#{branchOffice.branchCompany.companyName}" target="_blank" title="#{msg.LINK_COMPANY_WEBSITE_URL_TITLE}">
-					<f:param name="companyDataId" value="#{branchOffice.branchCompany.companyDataId}" />
-				</h:link>
+				<h:outputLink value="#{branchOffice.branchCompany.companyWebsiteUrl}" target="_blank" title="#{msg.LINK_COMPANY_WEBSITE_URL_TITLE}" rel="external" rendered="#{not empty branchOffice.branchCompany.companyWebsiteUrl}">
+					<h:outputText value="#{branchOffice.branchCompany.companyName}" />
+				</h:outputLink>
+
+				<h:outputText value="#{branchOffice.branchCompany.companyName}" title="#{msg.NO_WEBSITE_URL_ENTERED}" rendered="#{empty branchOffice.branchCompany.companyWebsiteUrl}" />
 			</h:column>
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_EMAIL_ADDRESS}" />
+					<h:outputText value="#{msg.DATA_EMAIL_ADDRESS}" />
 				</f:facet>
 
-				<h:outputText value="#{branchOffice.branchEmailAddress}" />
+				<h:outputLink value="mailto:#{branchOffice.branchEmailAddress}" rendered="#{not empty branchOffice.branchEmailAddress}" />
+
+				<h:outputText value="#{msg.NO_EMAIL_ADDRESS_ENTERED}" rendered="#{empty branchOffice.branchEmailAddress}" />
 			</h:column>
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.DATA_CITY}" />
+					<h:outputText value="#{msg.DATA_ADDRESS}" />
 				</f:facet>
 
-				<h:outputText value="#{branchOffice.branchZipCode} #{branchOffice.branchCity}" />
+				<h:outputText value="#{branchOffice.branchZipCode} #{branchOffice.branchCity}" title="#{branchOffice.branchStreet} #{branchOffice.branchHouseNumber} (#{msg.DATA_STORE} #{branchOffice.branchStore}, #{msg.DATA_SUITE_NUMBER} #{branchOffice.branchSuiteNumber})" />
 			</h:column>
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_CONTACT_PERSON}" />
+					<h:outputText value="#{msg.ADMIN_CONTACT_PERSON}" />
 				</f:facet>
 
 				<h:link outcome="admin_show_business_employee" title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICES_CONTACT_PERSON_TITLE}" value="#{branchOffice.branchContactEmployee.employeeId}" rendered="#{not empty branchOffice.branchContactEmployee}">
 					<f:param name="employeeId" value="#{branchOffice.branchContactEmployee.employeeId}" />
 				</h:link>
 
-				<h:link outcome="admin_assign_branch_office_contact" title="#{msg.ADMIN_LINK_ASSIGN_BRANCH_OFFICES_CONTACT_PERSON_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN_BRANCH_OFFICES_CONTACT_PERSON}" rendered="#{empty branchOffice.branchContactEmployee}">
+				<h:link outcome="admin_assign_branch_office_employee" title="#{msg.ADMIN_LINK_ASSIGN_BRANCH_OFFICES_CONTACT_PERSON_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN}" rendered="#{empty branchOffice.branchContactEmployee}">
 					<f:param name="branchOfficeId" value="#{branchOffice.branchId}" />
 				</h:link>
 			</h:column>
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_CREATED}" />
+					<h:outputText value="#{msg.ADMIN_LIST_ENTRY_CREATED}" />
 				</f:facet>
 
 				<h:outputText id="branchCreated" value="#{branchOffice.branchCreated.time}">
diff --git a/web/admin/contact/admin_contact_list.xhtml b/web/admin/contact/admin_contact_list.xhtml
index 66cdad8d..2a04a577 100644
--- a/web/admin/contact/admin_contact_list.xhtml
+++ b/web/admin/contact/admin_contact_list.xhtml
@@ -62,7 +62,7 @@
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_CONTACT_CREATED}" />
+					<h:outputText value="#{msg.ADMIN_LIST_ENTRY_CREATED}" />
 				</f:facet>
 
 				<h:outputText id="contactCreated" value="#{contact.contactCreated.time}">
diff --git a/web/admin/country/admin_country_list.xhtml b/web/admin/country/admin_country_list.xhtml
index ebde8b95..9bb415b3 100644
--- a/web/admin/country/admin_country_list.xhtml
+++ b/web/admin/country/admin_country_list.xhtml
@@ -17,7 +17,7 @@
 		<h:dataTable id="table_list_countries" var="country" value="#{countryController.allCountries()}" styleClass="table table-medium" headerClass="table-header-column" summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_COUNTRIES}" rendered="#{not countryController.allCountries().isEmpty()}">
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_LIST_COUNTRY_DATA_COUNTRY_ID}" />
+					<h:outputText value="#{msg.ADMIN_ID_NUMBER}" />
 				</f:facet>
 
 				<h:link outcome="admin_edit_country" title="#{msg.ADMIN_LINK_EDIT_DELETE_COUNTRY_TITLE}" value="#{country.countryId}">
diff --git a/web/admin/fax/admin_fax_list.xhtml b/web/admin/fax/admin_fax_list.xhtml
index 019fcef3..c3d60867 100644
--- a/web/admin/fax/admin_fax_list.xhtml
+++ b/web/admin/fax/admin_fax_list.xhtml
@@ -18,7 +18,7 @@
 		<h:dataTable id="table_list_fax" var="faxNumber" value="#{phoneController.allFaxNumbers()}" styleClass="table-full" headerClass="table-header-column" summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_FAXS}" rendered="#{not phoneController.allFaxNumbers().isEmpty()}">
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_SHOW_PHONE_ID}" />
+					<h:outputText value="#{msg.ADMIN_ID_NUMBER}" />
 				</f:facet>
 
 				<h:link outcome="admin_show_fax" value="#{faxNumber.phoneId}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}">
diff --git a/web/admin/fax/admin_fax_show.xhtml b/web/admin/fax/admin_fax_show.xhtml
index a50aaa6d..0af3d312 100644
--- a/web/admin/fax/admin_fax_show.xhtml
+++ b/web/admin/fax/admin_fax_show.xhtml
@@ -64,7 +64,7 @@
 			</h:column>
 
 			<h:column>
-				<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.ADMIN_CONTACT_EMAIL_ADDRESS}" />
+				<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.DATA_EMAIL_ADDRESS}" />
 
 				<h:outputLink id="contactEmailAddress" styleClass="table-data-field" value="mailto:#{contact.contactEmailAddress}">
 					<h:outputText value="#{contact.contactEmailAddress}" />
diff --git a/web/admin/landline/admin_landline_list.xhtml b/web/admin/landline/admin_landline_list.xhtml
index c615e6e1..14bc6404 100644
--- a/web/admin/landline/admin_landline_list.xhtml
+++ b/web/admin/landline/admin_landline_list.xhtml
@@ -18,7 +18,7 @@
 		<h:dataTable id="table_list_landline" var="landLineNumber" value="#{phoneController.allLandLineNumbers()}" styleClass="table-full" headerClass="table-header-column" summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_LAND_LINES}" rendered="#{not phoneController.allLandLineNumbers().isEmpty()}">
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_SHOW_PHONE_ID}" />
+					<h:outputText value="#{msg.ADMIN_ID_NUMBER}" />
 				</f:facet>
 
 				<h:link outcome="admin_show_landline" value="#{landLineNumber.phoneId}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}">
diff --git a/web/admin/landline/admin_landline_show.xhtml b/web/admin/landline/admin_landline_show.xhtml
index 203da052..084cc6d9 100644
--- a/web/admin/landline/admin_landline_show.xhtml
+++ b/web/admin/landline/admin_landline_show.xhtml
@@ -65,7 +65,7 @@
 			</h:column>
 
 			<h:column>
-				<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.ADMIN_CONTACT_EMAIL_ADDRESS}" />
+				<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.DATA_EMAIL_ADDRESS}" />
 
 				<h:outputLink id="contactEmailAddress" styleClass="table-data-field" value="mailto:#{contact.contactEmailAddress}">
 					<h:outputText value="#{contact.contactEmailAddress}" />
diff --git a/web/admin/mobile/admin_mobile_list.xhtml b/web/admin/mobile/admin_mobile_list.xhtml
index ff224432..7372fb82 100644
--- a/web/admin/mobile/admin_mobile_list.xhtml
+++ b/web/admin/mobile/admin_mobile_list.xhtml
@@ -18,7 +18,7 @@
 		<h:dataTable id="table_list_mobile" var="mobile" value="#{phoneController.allMobileNumbers()}" styleClass="table-full" headerClass="table-header-column" summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_MOBILES}" rendered="#{not phoneController.allMobileNumbers().isEmpty()}">
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_SHOW_PHONE_ID}" />
+					<h:outputText value="#{msg.ADMIN_ID_NUMBER}" />
 				</f:facet>
 
 				<h:link outcome="admin_show_mobile" value="#{mobile.phoneId}" title="#{msg.ADMIN_LINK_SHOW_SHORT_TITLE}">
diff --git a/web/admin/mobile/admin_mobile_show.xhtml b/web/admin/mobile/admin_mobile_show.xhtml
index 9f3d72b3..e5e8413c 100644
--- a/web/admin/mobile/admin_mobile_show.xhtml
+++ b/web/admin/mobile/admin_mobile_show.xhtml
@@ -64,7 +64,7 @@
 			</h:column>
 
 			<h:column>
-				<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.ADMIN_CONTACT_EMAIL_ADDRESS}" />
+				<h:outputLabel for="contactEmailAddress" styleClass="table-data-label" value="#{msg.DATA_EMAIL_ADDRESS}" />
 
 				<h:outputLink id="contactEmailAddress" styleClass="table-data-field" value="mailto:#{contact.contactEmailAddress}">
 					<h:outputText value="#{contact.contactEmailAddress}" />
diff --git a/web/admin/mobile_provider/admin_mobile_provider_list.xhtml b/web/admin/mobile_provider/admin_mobile_provider_list.xhtml
index 96158ade..e04645aa 100644
--- a/web/admin/mobile_provider/admin_mobile_provider_list.xhtml
+++ b/web/admin/mobile_provider/admin_mobile_provider_list.xhtml
@@ -17,7 +17,7 @@
 		<h:dataTable id="table_list_mobile" var="mobile" value="#{mobileProviderController.allMobileProviders()}" styleClass="table table-medium" headerClass="table-header-column" summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_MOBILE_PROVIDERS}" rendered="#{not mobileProviderController.allMobileProviders().isEmpty()}">
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_LIST_MOBILE_PROVIDER_ID}" />
+					<h:outputText value="#{msg.ADMIN_ID_NUMBER}" />
 				</f:facet>
 
 				<h:link outcome="admin_edit_mobile_provider" title="#{msg.ADMIN_LINK_EDIT_DELETE_MOBILE_PROVIDER_TITLE}" value="#{mobile.providerId}">
@@ -51,7 +51,7 @@
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_LIST_MOBILE_PROVIDER_ENTRY_CREATED}" />
+					<h:outputText value="#{msg.ADMIN_LIST_ENTRY_CREATED}" />
 				</f:facet>
 
 				<h:outputText id="providerEntryCreated" value="#{mobile.providerEntryCreated.time}" title="#{msg.ADMIN_MOBILE_PROVIDER_ENTRY_CREATED_TITLE}">
diff --git a/web/admin/user/admin_user_list.xhtml b/web/admin/user/admin_user_list.xhtml
index af71ba3c..4b3f72a3 100644
--- a/web/admin/user/admin_user_list.xhtml
+++ b/web/admin/user/admin_user_list.xhtml
@@ -80,7 +80,7 @@
 
 			<h:column>
 				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_USER_CREATED}" />
+					<h:outputText value="#{msg.ADMIN_LIST_ENTRY_CREATED}" />
 				</f:facet>
 
 				<h:outputText id="userCreated" value="#{user.userCreated.time}">
-- 
2.39.5