From e6f89a9135105a78e256b86f2c33a36eeab4f86c Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Tue, 5 Sep 2017 00:27:47 +0200
Subject: [PATCH] Please cherry-pick: - added backing bean for general and
 administrative purposes for branch offices - added template + JSF page for
 branch offices - renamed business_contacts -> basic_company_data, more
 declarative - including JSF page and folder - all h:commandButton ids are now
 prefixed with "button_" - TitleUtils.allPersonalTitlesAsList() is now
 deprecated as it does the same as   invoking Arrays.asList() - used more
 'final' where possible, to prevent accidently assigned new values   also
 known as "side effects" - renaming season has started again: now renamed some
 i18n strings to become   generalized - removed noisy debug lines that are
 really no longer needed - some lesser local variables
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Signed-off-by: Roland Häder <roland@mxchange.org>
---
 .../JobsAdminBusinessDataWebRequestBean.java  |   2 +-
 .../JobsBusinessDataWebRequestBean.java       |   6 +-
 .../JobsAdminBranchOfficeWebRequestBean.java  | 448 ++++++++++++++++++
 ...AdminBranchOfficeWebRequestController.java |  28 ++
 .../JobsBranchOfficeWebRequestBean.java       | 115 +++++
 .../JobsBranchOfficeWebRequestController.java |  28 ++
 .../JobsCompanyEmployeeWebRequestBean.java    |   6 +-
 .../JobsAdminContactWebRequestBean.java       |  46 +-
 .../contact/JobsContactWebRequestBean.java    |  10 +-
 .../JobsAdminContactPhoneWebRequestBean.java  |  42 +-
 .../phone/JobsContactPhoneWebRequestBean.java |  12 +-
 .../JobsAdminCountryWebRequestBean.java       |  10 +-
 .../country/JobsCountryWebRequestBean.java    |   6 +-
 .../JobsFeatureWebApplicationBean.java        |   3 +-
 .../gender/JobsGenderWebApplicationBean.java  |  15 +-
 .../helper/JobsWebRequestHelperBean.java      | 285 ++++++-----
 .../JobsLocalizationSessionBean.java          |  18 +-
 .../JobsMobileProviderWebRequestBean.java     |   6 +-
 .../beans/phone/JobsPhoneWebRequestBean.java  |  18 +-
 .../JobsUserProfileWebRequestBean.java        |  12 +-
 .../JobsProfileModeWebApplicationBean.java    |   8 -
 .../user/JobsAdminUserWebRequestBean.java     |  20 +-
 .../beans/user/JobsUserWebRequestBean.java    |  50 +-
 .../user/JobsUserWebRequestController.java    |   1 +
 .../JobsUserActivityWebRequestBean.java       |   8 +-
 .../JobsConfirmationLinkWebRequestBean.java   |  10 +-
 .../JobsEmailChangeWebRequestBean.java        |  10 +-
 .../login/JobsUserLoginWebSessionBean.java    |  10 +-
 .../JobsUserPasswordWebRequestBean.java       |   6 +-
 .../JobsUserRegisterWebRequestBean.java       |  16 +-
 .../JobsResendLinkWebRequestBean.java         |   6 +-
 .../JobsBusinessContactConverter.java         |   6 +-
 .../JobsCompanyEmployeeConverter.java         |   4 +-
 .../JobsCompanyHeadquartersConverter.java     |   4 +-
 .../contact/JobsContactConverter.java         |   6 +-
 .../country/JobsCountryConverter.java         |   6 +-
 .../converter/fax/JobsFaxNumberConverter.java |   4 +-
 .../landline/JobsLandLineNumberConverter.java |   4 +-
 .../mobile/JobsMobileNumberConverter.java     |   4 +-
 .../JobsMobileProviderConverter.java          |   6 +-
 .../converter/user/JobsUserConverter.java     |   4 +-
 .../birthday/JobsBirthdayValidator.java       |   4 +-
 .../basicdata/JobsCompanyNameValidator.java   |  14 +-
 .../JobsEmailAddressValidator.java            |  21 +-
 .../validator/names/JobsNameValidator.java    |   2 +-
 .../password/JobsUserPasswordValidator.java   |   2 +-
 .../phone/abroad/JobsAbroadDialValidator.java |   6 +-
 .../number/JobsPhoneNumberValidator.java      |   2 +-
 .../JobsPrivacyTermsCheckboxValidator.java    |   2 +-
 .../jjobs/validator/url/JobsUrlValidator.java |   6 +-
 .../validator/user/JobsUserIdValidator.java   |   8 +-
 .../localization/bundle_de_DE.properties      |  83 ++--
 .../localization/bundle_en_US.properties      |  82 ++--
 web/WEB-INF/faces-config.xml                  |  33 +-
 .../contact/admin_form_contact_data.tpl       |  12 +-
 web/WEB-INF/templates/admin/admin_menu.tpl    |   9 +-
 .../admin_form_basic_company_data.tpl}        |  38 +-
 .../admin_form_branch_offices_data.tpl        | 257 ++++++++++
 .../templates/contact/form_contact_data.tpl   |  10 +-
 .../register/guest_form_register_page1.tpl    |   2 +-
 .../register/guest_form_register_single.tpl   |   2 +-
 web/WEB-INF/web.xml                           |   2 +-
 .../admin_basic_company_data_list.xhtml       | 115 +++++
 .../admin_branch_offices_list.xhtml           | 115 +++++
 .../admin_business_contacts_list.xhtml        | 115 -----
 web/admin/contact/admin_contact_delete.xhtml  |   2 +-
 web/admin/contact/admin_contact_edit.xhtml    |   2 +-
 web/admin/contact/admin_contact_export.xhtml  |   2 +-
 web/admin/contact/admin_contact_list.xhtml    |   2 +-
 .../unlink/admin_contact_fax_unlink.xhtml     |   2 +-
 .../admin_contact_landline_unlink.xhtml       |   2 +-
 .../unlink/admin_contact_mobile_unlink.xhtml  |   2 +-
 web/admin/country/admin_country_list.xhtml    |   2 +-
 web/admin/fax/admin_fax_delete.xhtml          |   2 +-
 web/admin/fax/admin_fax_edit.xhtml            |   2 +-
 .../landline/admin_landline_delete.xhtml      |   2 +-
 web/admin/landline/admin_landline_edit.xhtml  |   2 +-
 web/admin/mobile/admin_mobile_delete.xhtml    |   2 +-
 web/admin/mobile/admin_mobile_edit.xhtml      |   2 +-
 .../admin_mobile_provider_list.xhtml          |   2 +-
 web/admin/user/admin_user_delete.xhtml        |   2 +-
 web/admin/user/admin_user_edit.xhtml          |   2 +-
 web/admin/user/admin_user_export.xhtml        |   2 +-
 web/admin/user/admin_user_list.xhtml          |   2 +-
 web/guest/user/user_resend_link.xhtml         |   2 +-
 .../login_user_change_email_address.xhtml     |   2 +-
 web/user/login_user_change_password.xhtml     |   2 +-
 .../login_user_change_personal_data.xhtml     |   2 +-
 88 files changed, 1644 insertions(+), 653 deletions(-)
 create mode 100644 src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsAdminBranchOfficeWebRequestBean.java
 create mode 100644 src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsAdminBranchOfficeWebRequestController.java
 create mode 100644 src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsBranchOfficeWebRequestBean.java
 create mode 100644 src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsBranchOfficeWebRequestController.java
 rename web/WEB-INF/templates/admin/{business_basic_data/admin_form_business_basic_data.tpl => basic_company_data/admin_form_basic_company_data.tpl} (86%)
 create mode 100644 web/WEB-INF/templates/admin/branch_offices/admin_form_branch_offices_data.tpl
 create mode 100644 web/admin/basic_company_data/admin_basic_company_data_list.xhtml
 create mode 100644 web/admin/branch_offices/admin_branch_offices_list.xhtml
 delete mode 100644 web/admin/business_contacts/admin_business_contacts_list.xhtml

diff --git a/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsAdminBusinessDataWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsAdminBusinessDataWebRequestBean.java
index 43dcb76e..70bf7d48 100644
--- a/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsAdminBusinessDataWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsAdminBusinessDataWebRequestBean.java
@@ -238,7 +238,7 @@ public class JobsAdminBusinessDataWebRequestBean extends BaseJobsController impl
 		}
 
 		// Continue to list again
-		return "admin_list_business_contacts"; //NOI18N
+		return "admin_list_basic_company_data"; //NOI18N
 	}
 
 	/**
diff --git a/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestBean.java
index 7befd77d..77f4a36d 100644
--- a/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestBean.java
@@ -168,10 +168,10 @@ public class JobsBusinessDataWebRequestBean extends BaseJobsController implement
 	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
 	public List<BusinessBasicData> allCompanyBasicData () {
 		// Init list
-		List<BusinessBasicData> list = new LinkedList<>();
+		final List<BusinessBasicData> list = new LinkedList<>();
 
 		// Get iterator
-		Iterator<Cache.Entry<Long, BusinessBasicData>> iterator = this.basicDataCache.iterator();
+		final Iterator<Cache.Entry<Long, BusinessBasicData>> iterator = this.basicDataCache.iterator();
 
 		// Loop over all
 		while (iterator.hasNext()) {
@@ -356,7 +356,7 @@ public class JobsBusinessDataWebRequestBean extends BaseJobsController implement
 		// Is cache there?
 		if (!this.basicDataCache.iterator().hasNext()) {
 			// Get whole list
-			List<BusinessBasicData> list = this.businessDataBean.allCompanyBasicData();
+			final List<BusinessBasicData> list = this.businessDataBean.allCompanyBasicData();
 
 			// Add all
 			for (final Iterator<BusinessBasicData> iterator = list.iterator(); iterator.hasNext();) {
diff --git a/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsAdminBranchOfficeWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsAdminBranchOfficeWebRequestBean.java
new file mode 100644
index 00000000..c3b569c5
--- /dev/null
+++ b/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsAdminBranchOfficeWebRequestBean.java
@@ -0,0 +1,448 @@
+/*
+ * Copyright (C) 2017 Roland Häder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.beans.business.branchoffice;
+
+import javax.ejb.EJB;
+import javax.enterprise.context.RequestScoped;
+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.jjobs.beans.BaseJobsController;
+import org.mxchange.jusercore.model.user.User;
+
+/**
+ * An administrative bean for branch offices
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@Named ("adminBranchOfficeController")
+@RequestScoped
+public class JobsAdminBranchOfficeWebRequestBean extends BaseJobsController implements JobsAdminBranchOfficeWebRequestController {
+
+	/**
+	 * Serial number
+	 */
+	private static final long serialVersionUID = 5_028_697_360_461L;
+
+	/**
+	 * EJB for administrative purposes
+	 */
+	@EJB (lookup = "java:global/jfinancials-ejb/adminBranchOffice!org.mxchange.jcontactsbusiness.branchoffice.AdminBranchOfficeSessionBeanRemote")
+	private AdminBranchOfficeSessionBeanRemote adminBranchOfficeBean;
+
+	/**
+	 * City
+	 */
+	private String branchCity;
+
+	/**
+	 * Assigned company for this branch office
+	 */
+	private BusinessBasicData branchCompany;
+
+	/**
+	 * Contact person in branch office
+	 */
+	private Employee branchContactEmployee;
+
+	/**
+	 * Country
+	 */
+	private Country branchCountry;
+
+	/**
+	 * Email address
+	 */
+	private String branchEmailAddress;
+
+	/**
+	 * House number
+	 */
+	private Short branchHouseNumber;
+
+	/**
+	 * Store
+	 */
+	private Short branchStore;
+
+	/**
+	 * Branch office street name
+	 */
+	private String branchStreet;
+
+	/**
+	 * Suite number
+	 */
+	private Short branchSuiteNumber;
+
+	/**
+	 * Owning user instance (which this branch office is assigned to)
+	 */
+	private User branchUserOwner;
+
+	/**
+	 * ZIP code
+	 */
+	private Integer branchZipCode;
+
+	/**
+	 * Area code for fax number
+	 */
+	private Integer faxAreaCode;
+
+	/**
+	 * Country for fax number
+	 */
+	private Country faxCountry;
+
+	/**
+	 * Dial number for fax number
+	 */
+	private Long faxNumber;
+
+	/**
+	 * Area code for land-line number
+	 */
+	private Integer landLineAreaCode;
+
+	/**
+	 * Country for land-line number
+	 */
+	private Country landLineCountry;
+
+	/**
+	 * Dial number for land-line number
+	 */
+	private Long landLineNumber;
+
+	/**
+	 * Default constructor
+	 */
+	public JobsAdminBranchOfficeWebRequestBean () {
+		// Call super constructor
+		super();
+	}
+
+	/**
+	 * Getter for city
+	 * <p>
+	 * @return City
+	 */
+	public String getBranchCity () {
+		return this.branchCity;
+	}
+
+	/**
+	 * Setter for city
+	 * <p>
+	 * @param branchCity City
+	 */
+	public void setBranchCity (final String branchCity) {
+		this.branchCity = branchCity;
+	}
+
+	/**
+	 * Getter for basic company data
+	 * <p>
+	 * @return Basic company data
+	 */
+	public BusinessBasicData getBranchCompany () {
+		return this.branchCompany;
+	}
+
+	/**
+	 * Setter for basic company data
+	 * <p>
+	 * @param branchCompany Basic company data
+	 */
+	public void setBranchCompany (final BusinessBasicData branchCompany) {
+		this.branchCompany = branchCompany;
+	}
+
+	/**
+	 * Getter for branch office contact person
+	 * <p>
+	 * @return Branch office contact person
+	 */
+	public Employee getBranchContactEmployee () {
+		return this.branchContactEmployee;
+	}
+
+	/**
+	 * Setter for branch office contact person
+	 * <p>
+	 * @param branchContactEmployee Branch office contact person
+	 */
+	public void setBranchContactEmployee (final Employee branchContactEmployee) {
+		this.branchContactEmployee = branchContactEmployee;
+	}
+
+	/**
+	 * Getter for country
+	 * <p>
+	 * @return Country
+	 */
+	public Country getBranchCountry () {
+		return this.branchCountry;
+	}
+
+	/**
+	 * Setter for country
+	 * <p>
+	 * @param branchCountry Country
+	 */
+	public void setBranchCountry (final Country branchCountry) {
+		this.branchCountry = branchCountry;
+	}
+
+	/**
+	 * Getter for email address
+	 * <p>
+	 * @return Email address
+	 */
+	public String getBranchEmailAddress () {
+		return this.branchEmailAddress;
+	}
+
+	/**
+	 * Getter for email address
+	 * <p>
+	 * @param branchEmailAddress Email address
+	 */
+	public void setBranchEmailAddress (final String branchEmailAddress) {
+		this.branchEmailAddress = branchEmailAddress;
+	}
+
+	/**
+	 * Getter for house number
+	 * <p>
+	 * @return House number
+	 */
+	public Short getBranchHouseNumber () {
+		return this.branchHouseNumber;
+	}
+
+	/**
+	 * Setter for house number
+	 * <p>
+	 * @param branchHouseNumber House number
+	 */
+	public void setBranchHouseNumber (final Short branchHouseNumber) {
+		this.branchHouseNumber = branchHouseNumber;
+	}
+
+	/**
+	 * Getter for store
+	 * <p>
+	 * @return Store
+	 */
+	public Short getBranchStore () {
+		return this.branchStore;
+	}
+
+	/**
+	 * Setter for store
+	 * <p>
+	 * @param branchStore Store
+	 */
+	public void setBranchStore (final Short branchStore) {
+		this.branchStore = branchStore;
+	}
+
+	/**
+	 * Getter for street name
+	 * <p>
+	 * @return Street name
+	 */
+	public String getBranchStreet () {
+		return this.branchStreet;
+	}
+
+	/**
+	 * Setter for street name
+	 * <p>
+	 * @param branchStreet Street name
+	 */
+	public void setBranchStreet (final String branchStreet) {
+		this.branchStreet = branchStreet;
+	}
+
+	/**
+	 * Getter for suite number
+	 * <p>
+	 * @return Suite number
+	 */
+	public Short getBranchSuiteNumber () {
+		return this.branchSuiteNumber;
+	}
+
+	/**
+	 * Setter for suite number
+	 * <p>
+	 * @param branchSuiteNumber Suite number
+	 */
+	public void setBranchSuiteNumber (final Short branchSuiteNumber) {
+		this.branchSuiteNumber = branchSuiteNumber;
+	}
+
+	/**
+	 * Getter for owning user instance
+	 * <p>
+	 * @return Owning user instance
+	 */
+	public User getBranchUserOwner () {
+		return this.branchUserOwner;
+	}
+
+	/**
+	 * Setter for owning user instance
+	 * <p>
+	 * @param branchUserOwner Owning user instance
+	 */
+	public void setBranchUserOwner (final User branchUserOwner) {
+		this.branchUserOwner = branchUserOwner;
+	}
+
+	/**
+	 * Getter for ZIP code\
+	 * <p>
+	 * @return ZIP code
+	 */
+	public Integer getBranchZipCode () {
+		return this.branchZipCode;
+	}
+
+	/**
+	 * Setter for ZIP code\
+	 * <p>
+	 * @param branchZipCode ZIP code
+	 */
+	public void setBranchZipCode (final Integer branchZipCode) {
+		this.branchZipCode = branchZipCode;
+	}
+
+	/**
+	 * Getter for fax number's area code
+	 * <p>
+	 * @return Fax number's area code
+	 */
+	public Integer getFaxAreaCode () {
+		return this.faxAreaCode;
+	}
+
+	/**
+	 * Setter for fax number's area code
+	 * <p>
+	 * @param faxAreaCode Fax number's area code
+	 */
+	public void setFaxAreaCode (final Integer faxAreaCode) {
+		this.faxAreaCode = faxAreaCode;
+	}
+
+	/**
+	 * Getter for fax's country instance
+	 * <p>
+	 * @return Fax' country instance
+	 */
+	public Country getFaxCountry () {
+		return this.faxCountry;
+	}
+
+	/**
+	 * Setter for fax's country instance
+	 * <p>
+	 * @param faxCountry Fax' country instance
+	 */
+	public void setFaxCountry (final Country faxCountry) {
+		this.faxCountry = faxCountry;
+	}
+
+	/**
+	 * Getter for fax number
+	 * <p>
+	 * @return Fax number
+	 */
+	public Long getFaxNumber () {
+		return this.faxNumber;
+	}
+
+	/**
+	 * Setter for fax number
+	 * <p>
+	 * @param faxNumber Fax number
+	 */
+	public void setFaxNumber (final Long faxNumber) {
+		this.faxNumber = faxNumber;
+	}
+
+	/**
+	 * Getter for land-line number's area code
+	 * <p>
+	 * @return Land-line number's area code
+	 */
+	public Integer getLandLineAreaCode () {
+		return this.landLineAreaCode;
+	}
+
+	/**
+	 * Setter for land-line number's area code
+	 * <p>
+	 * @param landLineAreaCode Land-line number's area code
+	 */
+	public void setLandLineAreaCode (final Integer landLineAreaCode) {
+		this.landLineAreaCode = landLineAreaCode;
+	}
+
+	/**
+	 * Getter for land-line number's country instance
+	 * <p>
+	 * @return Land-line number's country instance
+	 */
+	public Country getLandLineCountry () {
+		return this.landLineCountry;
+	}
+
+	/**
+	 * Setter for land-line number's country instance
+	 * <p>
+	 * @param landLineCountry Land-line number's country instance
+	 */
+	public void setLandLineCountry (final Country landLineCountry) {
+		this.landLineCountry = landLineCountry;
+	}
+
+	/**
+	 * Getter for land-line number
+	 * <p>
+	 * @return Land-line number
+	 */
+	public Long getLandLineNumber () {
+		return this.landLineNumber;
+	}
+
+	/**
+	 * Setter for land-line number
+	 * <p>
+	 * @param landLineNumber Land-line number
+	 */
+	public void setLandLineNumber (final Long landLineNumber) {
+		this.landLineNumber = landLineNumber;
+	}
+
+}
diff --git a/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsAdminBranchOfficeWebRequestController.java b/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsAdminBranchOfficeWebRequestController.java
new file mode 100644
index 00000000..43766350
--- /dev/null
+++ b/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsAdminBranchOfficeWebRequestController.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2017 Roland Häder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.beans.business.branchoffice;
+
+import java.io.Serializable;
+
+/**
+ * An interface for administrative branch office controller
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public interface JobsAdminBranchOfficeWebRequestController extends Serializable {
+
+}
diff --git a/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsBranchOfficeWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsBranchOfficeWebRequestBean.java
new file mode 100644
index 00000000..4cf263e5
--- /dev/null
+++ b/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsBranchOfficeWebRequestBean.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2017 Roland Häder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.beans.business.branchoffice;
+
+import fish.payara.cdi.jsr107.impl.NamedCache;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.cache.Cache;
+import javax.ejb.EJB;
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+import javax.inject.Named;
+import org.mxchange.jcontactsbusiness.branchoffice.BranchOffice;
+import org.mxchange.jcontactsbusiness.branchoffice.BranchOfficeSessionBeanRemote;
+import org.mxchange.jjobs.beans.BaseJobsController;
+
+/**
+ * A general bean for branch offices
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@Named ("branchOfficeController")
+@RequestScoped
+public class JobsBranchOfficeWebRequestBean extends BaseJobsController implements JobsBranchOfficeWebRequestController {
+
+	/**
+	 * Serial number
+	 */
+	private static final long serialVersionUID = 5_028_697_360_461L;
+
+	/**
+	 * EJB for administrative purposes
+	 */
+	@EJB (lookup = "java:global/jfinancials-ejb/branchOffice!org.mxchange.jcontactsbusiness.branchoffice.BranchOfficeSessionBeanRemote")
+	private BranchOfficeSessionBeanRemote branchOfficeBean;
+
+	/**
+	 * A list of all branch offices (globally)
+	 */
+	@Inject
+	@NamedCache (cacheName = "branchOfficeCache")
+	private Cache<Long, BranchOffice> branchOfficeCache;
+
+	/**
+	 * Default constructor
+	 */
+	public JobsBranchOfficeWebRequestBean () {
+		// Call super constructor
+		super();
+	}
+
+	/**
+	 * Returns a list of all branch offices
+	 * <p>
+	 * @return A list of all branch offices
+	 */
+	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
+	public List<BranchOffice> allBranchOffices () {
+		// Init list
+		final List<BranchOffice> list = new LinkedList<>();
+
+		// Get iterator
+		final Iterator<Cache.Entry<Long, BranchOffice>> iterator = this.branchOfficeCache.iterator();
+
+		// Loop over all
+		while (iterator.hasNext()) {
+			// Get next entry
+			final Cache.Entry<Long, BranchOffice> next = iterator.next();
+
+			// Add value to list
+			list.add(next.getValue());
+		}
+
+		// Return it
+		return list;
+	}
+
+	/**
+	 * Initializer method
+	 */
+	@PostConstruct
+	public void initializeList () {
+		// Is cache there?
+		if (!this.branchOfficeCache.iterator().hasNext()) {
+			// Get whole list
+			final List<BranchOffice> list = this.branchOfficeBean.allBranchOffices();
+
+			// Add all
+			for (final Iterator<BranchOffice> iterator = list.iterator(); iterator.hasNext();) {
+				// Get next element
+				final BranchOffice next = iterator.next();
+
+				// Add it to cache
+				this.branchOfficeCache.put(next.getBranchId(), next);
+			}
+		}
+	}
+
+}
diff --git a/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsBranchOfficeWebRequestController.java b/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsBranchOfficeWebRequestController.java
new file mode 100644
index 00000000..890d9e50
--- /dev/null
+++ b/src/java/org/mxchange/jjobs/beans/business/branchoffice/JobsBranchOfficeWebRequestController.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2017 Roland Häder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.beans.business.branchoffice;
+
+import java.io.Serializable;
+
+/**
+ * An interface for general branch office controller
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public interface JobsBranchOfficeWebRequestController extends Serializable {
+
+}
diff --git a/src/java/org/mxchange/jjobs/beans/business/employee/JobsCompanyEmployeeWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/business/employee/JobsCompanyEmployeeWebRequestBean.java
index 76148389..fdaec16b 100644
--- a/src/java/org/mxchange/jjobs/beans/business/employee/JobsCompanyEmployeeWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/business/employee/JobsCompanyEmployeeWebRequestBean.java
@@ -73,10 +73,10 @@ public class JobsCompanyEmployeeWebRequestBean extends BaseJobsController implem
 	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
 	public List<Employee> allCompanyEmployees () {
 		// Init list
-		List<Employee> list = new LinkedList<>();
+		final List<Employee> list = new LinkedList<>();
 
 		// Get iterator
-		Iterator<Cache.Entry<Long, Employee>> iterator = this.companyEmployeeCache.iterator();
+		final Iterator<Cache.Entry<Long, Employee>> iterator = this.companyEmployeeCache.iterator();
 
 		// Loop over all
 		while (iterator.hasNext()) {
@@ -99,7 +99,7 @@ public class JobsCompanyEmployeeWebRequestBean extends BaseJobsController implem
 		// Is cache there?
 		if (!this.companyEmployeeCache.iterator().hasNext()) {
 			// Get whole list
-			List<Employee> list = this.companyEmployeeBean.allCompanyEmployees();
+			final List<Employee> list = this.companyEmployeeBean.allCompanyEmployees();
 
 			// Add all
 			for (final Iterator<Employee> iterator = list.iterator(); iterator.hasNext();) {
diff --git a/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java
index eb870196..4f604e75 100644
--- a/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java
@@ -270,7 +270,7 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement
 		}
 
 		// Create new contact instance
-		Contact contact = this.createContactInstance();
+		final Contact contact = this.createContactInstance();
 
 		// Default is not same contact
 		if (this.isSameContactFound(contact)) {
@@ -279,7 +279,7 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement
 		}
 
 		// Init contact
-		Contact updatedContact;
+		final Contact updatedContact;
 
 		// Try to call EJB
 		try {
@@ -326,7 +326,7 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement
 		}
 
 		// Get contact instance from event
-		Contact contact = event.getCreatedContact();
+		final Contact contact = event.getCreatedContact();
 
 		// Set all fields: contact
 		this.setContactId(contact.getContactId());
@@ -395,12 +395,12 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement
 		}
 
 		// Generate phone number
-		DialableLandLineNumber landLine = new LandLineNumber(this.getLandLineCountry(), this.getLandLineAreaCode(), this.getLandLineNumber());
-		DialableMobileNumber mobile = new MobileNumber(this.getMobileProvider(), this.getMobileNumber());
-		DialableFaxNumber fax = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber());
+		final DialableLandLineNumber landLine = new LandLineNumber(this.getLandLineCountry(), this.getLandLineAreaCode(), this.getLandLineNumber());
+		final DialableMobileNumber mobile = new MobileNumber(this.getMobileProvider(), this.getMobileNumber());
+		final DialableFaxNumber fax = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber());
 
 		// Create new instance
-		Contact contact = new UserContact(this.getPersonalTitle(), this.getFirstName(), this.getFamilyName());
+		final Contact contact = new UserContact(this.getPersonalTitle(), this.getFirstName(), this.getFamilyName());
 
 		// Is contact id set?
 		if (this.getContactId() instanceof Long) {
@@ -491,7 +491,7 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement
 	 */
 	public String editContactData () {
 		// Get contact instance
-		Contact contact = this.createContactInstance();
+		final Contact contact = this.createContactInstance();
 
 		// Check if contact instance is in helper and valid
 		if (null == contact) {
@@ -509,7 +509,7 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement
 		this.updateContactData(contact);
 
 		// Call EJB for updating contact data
-		Contact updatedContact = this.contactBean.updateContactData(contact, this.isMobileNumberUnlinked, this.isLandLineUnlinked, this.isFaxUnlinked);
+		final Contact updatedContact = this.contactBean.updateContactData(contact, this.isMobileNumberUnlinked, this.isLandLineUnlinked, this.isFaxUnlinked);
 
 		// Fire event
 		this.updatedContactEvent.fire(new AdminUpdatedContactEvent(updatedContact));
@@ -536,12 +536,12 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement
 		}
 
 		// Get all data
-		String number = String.format(
-			   "%s%d%d", //NOI18N
-			   mobileNumber.getMobileProvider().getProviderCountry().getCountryExternalDialPrefix(),
-			   mobileNumber.getMobileProvider().getProviderDialPrefix(),
-			   mobileNumber.getPhoneNumber()
-	   );
+		final String number = String.format(
+					 "%s%d%d", //NOI18N
+					 mobileNumber.getMobileProvider().getProviderCountry().getCountryExternalDialPrefix(),
+					 mobileNumber.getMobileProvider().getProviderDialPrefix(),
+					 mobileNumber.getPhoneNumber()
+			 );
 
 		// Return it
 		return number;
@@ -563,12 +563,12 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement
 		}
 
 		// Generate it
-		String number = String.format(
-			   "%s%d%d", //NOI18N
-			   phoneNumber.getPhoneCountry().getCountryExternalDialPrefix(),
-			   phoneNumber.getPhoneAreaCode(),
-			   phoneNumber.getPhoneNumber()
-	   );
+		final String number = String.format(
+					 "%s%d%d", //NOI18N
+					 phoneNumber.getPhoneCountry().getCountryExternalDialPrefix(),
+					 phoneNumber.getPhoneAreaCode(),
+					 phoneNumber.getPhoneNumber()
+			 );
 
 		// Return it
 		return number;
@@ -1108,12 +1108,12 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement
 		boolean IsFound = false;
 
 		// Get iterator
-		Iterator<Contact> iterator = this.contactController.allContacts().iterator();
+		final Iterator<Contact> iterator = this.contactController.allContacts().iterator();
 
 		// Loop through all
 		while (iterator.hasNext()) {
 			// Get next contact
-			Contact next = iterator.next();
+			final Contact next = iterator.next();
 
 			// Is the same?
 			if (ContactUtils.isSameContact(contact, next)) {
diff --git a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java
index 475d20bd..37f76386 100644
--- a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java
@@ -431,7 +431,7 @@ public class JobsContactWebRequestBean extends BaseJobsController implements Job
 		}
 
 		// Get user instance
-		Contact registeredContact = event.getRegisteredUser().getUserContact();
+		final Contact registeredContact = event.getRegisteredUser().getUserContact();
 
 		// Copy all data from registered->user
 		this.copyContact(registeredContact);
@@ -450,10 +450,10 @@ public class JobsContactWebRequestBean extends BaseJobsController implements Job
 	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
 	public List<Contact> allContacts () {
 		// Init list
-		List<Contact> list = new LinkedList<>();
+		final List<Contact> list = new LinkedList<>();
 
 		// Get iterator
-		Iterator<Cache.Entry<Long, Contact>> iterator = this.contactsCache.iterator();
+		final Iterator<Cache.Entry<Long, Contact>> iterator = this.contactsCache.iterator();
 
 		// Loop over all
 		while (iterator.hasNext()) {
@@ -1307,12 +1307,12 @@ public class JobsContactWebRequestBean extends BaseJobsController implements Job
 		}
 
 		// Get iterator from list
-		Iterator<Cache.Entry<Long, Contact>> iterator = this.contactsCache.iterator();
+		final Iterator<Cache.Entry<Long, Contact>> iterator = this.contactsCache.iterator();
 
 		// "Walk" through all entries
 		while (iterator.hasNext()) {
 			// Get next element
-			Cache.Entry<Long, Contact> next = iterator.next();
+			final Cache.Entry<Long, Contact> next = iterator.next();
 
 			// Is id number the same?
 			if (Objects.equals(contact.getContactId(), next.getKey())) {
diff --git a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsAdminContactPhoneWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsAdminContactPhoneWebRequestBean.java
index 5a78c915..cd20c676 100644
--- a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsAdminContactPhoneWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsAdminContactPhoneWebRequestBean.java
@@ -331,7 +331,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 		}
 
 		// Get fax number from event
-		DialableFaxNumber number = event.getFaxNumber();
+		final DialableFaxNumber number = event.getFaxNumber();
 
 		// Copy all data to this bean
 		this.setPhoneId(number.getPhoneId());
@@ -365,7 +365,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 		}
 
 		// Get fax number from event
-		DialableLandLineNumber number = event.getLandLineNumber();
+		final DialableLandLineNumber number = event.getLandLineNumber();
 
 		// Copy all data to this bean
 		this.setPhoneId(number.getPhoneId());
@@ -399,7 +399,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 		}
 
 		// Get fax number from event
-		DialableMobileNumber number = event.getMobileNumber();
+		final DialableMobileNumber number = event.getMobileNumber();
 
 		// Copy all data to this bean
 		this.setPhoneId(number.getPhoneId());
@@ -416,7 +416,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 	 */
 	public String doLinkMainFaxNumber () {
 		// Get contact from helper
-		Contact targetContact = this.getContact();
+		final Contact targetContact = this.getContact();
 
 		// Is all data properly set?
 		if (null == targetContact) {
@@ -452,8 +452,8 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 		}
 
 		// Init instances
-		Contact updatedContact;
-		DialableFaxNumber number = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber());
+		final Contact updatedContact;
+		final DialableFaxNumber number = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber());
 
 		// Try it again
 		try {
@@ -480,7 +480,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 	 */
 	public String doLinkMainLandLineNumber () {
 		// Get contact from helper
-		Contact targetContact = this.getContact();
+		final Contact targetContact = this.getContact();
 
 		// Is all data properly set?
 		if (null == targetContact) {
@@ -516,8 +516,8 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 		}
 
 		// Init instance
-		Contact updatedContact;
-		DialableLandLineNumber number = new LandLineNumber(this.getLandLineCountry(), this.getLandLineAreaCode(), this.getLandLineNumber());
+		final Contact updatedContact;
+		final DialableLandLineNumber number = new LandLineNumber(this.getLandLineCountry(), this.getLandLineAreaCode(), this.getLandLineNumber());
 
 		// Try it again
 		try {
@@ -543,7 +543,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 	 */
 	public String doLinkMainMobileNumber () {
 		// Get contact from helper
-		Contact targetContact = this.getContact();
+		final Contact targetContact = this.getContact();
 
 		// Is all data properly set?
 		if (null == targetContact) {
@@ -573,8 +573,8 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 		}
 
 		// Init instance
-		Contact updatedContact;
-		DialableMobileNumber number = new MobileNumber(this.getMobileProvider(), this.getMobileNumber());
+		final Contact updatedContact;
+		final DialableMobileNumber number = new MobileNumber(this.getMobileProvider(), this.getMobileNumber());
 
 		// Try it again
 		try {
@@ -780,7 +780,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 	 */
 	public String unlinkFaxContactData () {
 		// Create fax number instance
-		DialableFaxNumber number = this.createFaxNumber();
+		final DialableFaxNumber number = this.createFaxNumber();
 
 		// Is all data set
 		if (number == null) {
@@ -810,7 +810,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 		}
 
 		// Init contact instance
-		Contact updatedContact;
+		final Contact updatedContact;
 
 		try {
 			// Unlink it and return contact without fax instance
@@ -835,7 +835,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 	 */
 	public String unlinkLandLineContactData () {
 		// Create fax number instance
-		DialableLandLineNumber number = this.createLandLineNumber();
+		final DialableLandLineNumber number = this.createLandLineNumber();
 
 		// Is all data set
 		if (number == null) {
@@ -865,7 +865,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 		}
 
 		// Init contact instance
-		Contact updatedContact;
+		final Contact updatedContact;
 
 		try {
 			// Unlink it and return contact without landLine instance
@@ -890,7 +890,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 	 */
 	public String unlinkMobileContactData () {
 		// Create fax number instance
-		DialableMobileNumber number = this.createMobileNumber();
+		final DialableMobileNumber number = this.createMobileNumber();
 
 		// Is all data set
 		if (number == null) {
@@ -929,7 +929,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 		}
 
 		// Init contact instance
-		Contact updatedContact;
+		final Contact updatedContact;
 
 		try {
 			// Unlink it and return contact without mobile instance
@@ -961,7 +961,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 	 */
 	private DialableFaxNumber createFaxNumber () {
 		// Instanciate it
-		DialableFaxNumber number = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber());
+		final DialableFaxNumber number = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber());
 
 		// Set all other fields
 		number.setPhoneEntryCreated(this.getPhoneEntryCreated());
@@ -985,7 +985,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 	 */
 	private DialableLandLineNumber createLandLineNumber () {
 		// Initialize it
-		DialableLandLineNumber number = new LandLineNumber(this.getLandLineCountry(), this.getLandLineAreaCode(), this.getLandLineNumber());
+		final DialableLandLineNumber number = new LandLineNumber(this.getLandLineCountry(), this.getLandLineAreaCode(), this.getLandLineNumber());
 
 		// Add all other data
 		number.setPhoneEntryCreated(this.getPhoneEntryCreated());
@@ -1009,7 +1009,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsController impl
 	 */
 	private DialableMobileNumber createMobileNumber () {
 		// Initialize it
-		DialableMobileNumber number = new MobileNumber(this.getMobileProvider(), this.getMobileNumber());
+		final DialableMobileNumber number = new MobileNumber(this.getMobileProvider(), this.getMobileNumber());
 
 		// Add all other data
 		number.setPhoneEntryCreated(this.getPhoneEntryCreated());
diff --git a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java
index e51e105c..51d4bc71 100644
--- a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java
@@ -340,7 +340,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsController implement
 	 */
 	public List<Contact> allCurrentFaxNumberContacts () {
 		// Get id
-		DialableFaxNumber number = this.getFaxNumber();
+		final DialableFaxNumber number = this.getFaxNumber();
 
 		// Is cache there?
 		if (this.contactsPhoneCache.containsKey(number)) {
@@ -348,7 +348,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsController implement
 			return this.contactsPhoneCache.get(number);
 		} else {
 			// Ask bean
-			List<Contact> list = new LinkedList<>();
+			final List<Contact> list = new LinkedList<>();
 
 			// "Walk" through all contacts
 			for (final Contact contact : this.contactController.allContacts()) {
@@ -374,7 +374,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsController implement
 	 */
 	public List<Contact> allCurrentLandLineNumberContacts () {
 		// Get id
-		DialableLandLineNumber number = this.getLandLineNumber();
+		final DialableLandLineNumber number = this.getLandLineNumber();
 
 		// Is cache there?
 		if (this.contactsPhoneCache.containsKey(number)) {
@@ -382,7 +382,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsController implement
 			return this.contactsPhoneCache.get(number);
 		} else {
 			// Ask bean
-			List<Contact> list = new LinkedList<>();
+			final List<Contact> list = new LinkedList<>();
 
 			// "Walk" through all contacts
 			for (final Contact contact : this.contactController.allContacts()) {
@@ -408,7 +408,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsController implement
 	 */
 	public List<Contact> allCurrentMobileNumberContacts () {
 		// Get id
-		DialableMobileNumber number = this.getMobileNumber();
+		final DialableMobileNumber number = this.getMobileNumber();
 
 		// Is cache there?
 		if (this.contactsPhoneCache.containsKey(number)) {
@@ -416,7 +416,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsController implement
 			return this.contactsPhoneCache.get(number);
 		} else {
 			// Ask bean
-			List<Contact> list = new LinkedList<>();
+			final List<Contact> list = new LinkedList<>();
 
 			// "Walk" through all contacts
 			for (final Contact contact : this.contactController.allContacts()) {
diff --git a/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java
index 4c5c440b..c448fda9 100644
--- a/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java
@@ -115,7 +115,7 @@ public class JobsAdminCountryWebRequestBean extends BaseJobsController implement
 	 */
 	public String addCountry () {
 		// Create new country object
-		Country country = new CountryData();
+		final Country country = new CountryData();
 
 		// Add all data
 		country.setCountryAbroadDialPrefix(this.getCountryAbroadDialPrefix());
@@ -132,7 +132,7 @@ public class JobsAdminCountryWebRequestBean extends BaseJobsController implement
 		}
 
 		// Init variable
-		Country updatedCountry = null;
+		final Country updatedCountry;
 
 		try {
 			// Send country to bean
@@ -288,15 +288,15 @@ public class JobsAdminCountryWebRequestBean extends BaseJobsController implement
 		boolean isAdded = false;
 
 		// Now get whole ist
-		List<Country> countries = this.countryController.allCountries();
+		final List<Country> countries = this.countryController.allCountries();
 
 		// Get iterator from it
-		Iterator<Country> iterator = countries.iterator();
+		final Iterator<Country> iterator = countries.iterator();
 
 		// Check whole list
 		while (iterator.hasNext()) {
 			// Get next country
-			Country next = iterator.next();
+			final Country next = iterator.next();
 
 			// Is country code or i18n the same?
 			if ((Objects.equals(country.getCountryCode(), next.getCountryCode())) || (Objects.equals(country.getCountryI18nKey(), next.getCountryI18nKey()))) {
diff --git a/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestBean.java
index 5030e445..2d75182d 100644
--- a/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestBean.java
@@ -98,10 +98,10 @@ public class JobsCountryWebRequestBean extends BaseJobsController implements Job
 	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
 	public List<Country> allCountries () {
 		// Init list
-		List<Country> list = new LinkedList<>();
+		final List<Country> list = new LinkedList<>();
 
 		// Get iterator
-		Iterator<Cache.Entry<Long, Country>> iterator = this.countryCache.iterator();
+		final Iterator<Cache.Entry<Long, Country>> iterator = this.countryCache.iterator();
 
 		// Loop over all
 		while (iterator.hasNext()) {
@@ -124,7 +124,7 @@ public class JobsCountryWebRequestBean extends BaseJobsController implements Job
 		// Is cache there?
 		if (!this.countryCache.iterator().hasNext()) {
 			// Get whole list
-			List<Country> list = this.countryBean.allCountries();
+			final List<Country> list = this.countryBean.allCountries();
 
 			// Add all
 			for (final Iterator<Country> iterator = list.iterator(); iterator.hasNext();) {
diff --git a/src/java/org/mxchange/jjobs/beans/features/JobsFeatureWebApplicationBean.java b/src/java/org/mxchange/jjobs/beans/features/JobsFeatureWebApplicationBean.java
index 5a1edcee..ca348f61 100644
--- a/src/java/org/mxchange/jjobs/beans/features/JobsFeatureWebApplicationBean.java
+++ b/src/java/org/mxchange/jjobs/beans/features/JobsFeatureWebApplicationBean.java
@@ -65,8 +65,7 @@ public class JobsFeatureWebApplicationBean extends BaseJobsController implements
 		boolean isEnabled = false;
 
 		// Get value from property
-		String contextParameter = this.getStringContextParameter(String.format("is_feature_%s_enabled", feature)); //NOI18N
-		//System.out.println(MessageFormat.format("isFeatureSet: feature={0},contextParameter[]={1}", feature, Objects.toString(contextParameter))); //NOI18N
+		final String contextParameter = this.getStringContextParameter(String.format("is_feature_%s_enabled", feature)); //NOI18N
 
 		// Is the context parameter found?
 		if (contextParameter instanceof String) {
diff --git a/src/java/org/mxchange/jjobs/beans/gender/JobsGenderWebApplicationBean.java b/src/java/org/mxchange/jjobs/beans/gender/JobsGenderWebApplicationBean.java
index 6e5ed67c..ce327969 100644
--- a/src/java/org/mxchange/jjobs/beans/gender/JobsGenderWebApplicationBean.java
+++ b/src/java/org/mxchange/jjobs/beans/gender/JobsGenderWebApplicationBean.java
@@ -16,12 +16,11 @@
  */
 package org.mxchange.jjobs.beans.gender;
 
+import java.util.Arrays;
 import java.util.List;
-import javax.annotation.PostConstruct;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Named;
 import org.mxchange.jcontacts.contact.title.PersonalTitle;
-import org.mxchange.jcontacts.contact.title.TitleUtils;
 import org.mxchange.jjobs.beans.BaseJobsController;
 
 /**
@@ -54,18 +53,8 @@ public class JobsGenderWebApplicationBean extends BaseJobsController implements
 
 	@Override
 	public List<PersonalTitle> getSelectableGenders () {
-		// Init array
-		List<PersonalTitle> genders = TitleUtils.allPersonalTitlesAsList();
-
 		// Return it
-		return genders;
-	}
-
-	/**
-	 * Post-construction method
-	 */
-	@PostConstruct
-	public void init () {
+		return Arrays.asList(PersonalTitle.values());
 	}
 
 }
diff --git a/src/java/org/mxchange/jjobs/beans/helper/JobsWebRequestHelperBean.java b/src/java/org/mxchange/jjobs/beans/helper/JobsWebRequestHelperBean.java
index d5f1bfab..26099095 100644
--- a/src/java/org/mxchange/jjobs/beans/helper/JobsWebRequestHelperBean.java
+++ b/src/java/org/mxchange/jjobs/beans/helper/JobsWebRequestHelperBean.java
@@ -152,18 +152,139 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
 	public JobsWebRequestHelperBean () {
 		// Call super constructor
 		super();
+	}
 
-		// String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[3].getClassName(), Thread.currentThread().getStackTrace()[3].getMethodName());
-		// System.out.println(MessageFormat.format("{0}: Constructed, caller: {1}", this.getClass().getSimpleName(), caller));
+	/**
+	 * Getter for contact instance
+	 * <p>
+	 * @return Contact instance
+	 */
+	public Contact getContact () {
+		return this.contact;
 	}
 
 	/**
-	 * Copies currently set contact instances data to adminContactController
+	 * Setter for contact instance
+	 * <p>
+	 * @param contact Contact instance
 	 */
-	public void copyContactToController () {
+	public void setContact (final Contact contact) {
 		// String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[THREAD_STACK].getClassName(), Thread.currentThread().getStackTrace()[THREAD_STACK].getMethodName());
-		// System.out.println(MessageFormat.format("{0}.copyContactToController: CALLED, caller: {2}", this.getClass().getSimpleName(), this.contact, caller));
+		// System.out.println(MessageFormat.format("{0}: Setting contact={1}, previous: {2}, caller: {3}", this.getClass().getSimpleName(), contact, this.contact, caller));
+		this.contact = contact;
+	}
 
+	/**
+	 * Returns a message key depending on if this contact is a user and/or a
+	 * contact. If this contact is unused, a default key is returned.
+	 * <p>
+	 * @param contact Contact instance to check
+	 * <p>
+	 * @return Message key
+	 */
+	public String getContactUsageMessageKey (final Contact contact) {
+		// The contact must be valid
+		if (null == contact) {
+			// Throw NPE
+			throw new NullPointerException("contact is null"); //NOI18N
+		} else if (contact.getContactId() == null) {
+			// Throw again ...
+			throw new NullPointerException("contact.contactId is null"); //NOI18N
+		} else if (contact.getContactId() < 1) {
+			// Not valid
+			throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N
+		}
+
+		// Default key is "unused"
+		String messageKey = "CONTACT_IS_UNUSED"; //NOI18N
+
+		// Check user first
+		if (this.userController.isContactFound(contact)) {
+			// Only user
+			messageKey = "CONTACT_IS_USER"; //NOI18N
+		}
+
+		// Return message key
+		return messageKey;
+	}
+
+	/**
+	 * Getter for dialable fax number
+	 * <p>
+	 * @return Dialable fax number
+	 */
+	public DialableFaxNumber getFaxNumber () {
+		return this.faxNumber;
+	}
+
+	/**
+	 * Setter for dialable fax number
+	 * <p>
+	 * @param faxNumber Dialable fax number
+	 */
+	public void setFaxNumber (final DialableFaxNumber faxNumber) {
+		this.faxNumber = faxNumber;
+	}
+
+	/**
+	 * Getter for dialable land-line number
+	 * <p>
+	 * @return Dialable land-line number
+	 */
+	public DialableLandLineNumber getLandLineNumber () {
+		return this.landLineNumber;
+	}
+
+	/**
+	 * Setter for dialable land-line number
+	 * <p>
+	 * @param landLineNumber Dialable land-line number
+	 */
+	public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
+		this.landLineNumber = landLineNumber;
+	}
+
+	/**
+	 * Getter for dialable mobile number
+	 * <p>
+	 * @return Dialable mobile number
+	 */
+	public DialableMobileNumber getMobileNumber () {
+		return this.mobileNumber;
+	}
+
+	/**
+	 * Setter for dialable mobile number
+	 * <p>
+	 * @param mobileNumber Dialable mobile number
+	 */
+	public void setMobileNumber (final DialableMobileNumber mobileNumber) {
+		this.mobileNumber = mobileNumber;
+	}
+
+	/**
+	 * Getter for user instance
+	 * <p>
+	 * @return User instance
+	 */
+	public User getUser () {
+		return this.user;
+	}
+
+	/**
+	 * Setter for user instance
+	 * <p>
+	 * @param user User instance
+	 */
+	public void setUser (final User user) {
+		this.user = user;
+	}
+
+	/**
+	 * Notifies other controllers (backing beans) if a contact id has been
+	 * successfully converted to a Contact instance.
+	 */
+	public void notifyControllerContactConverted () {
 		// Validate contact instance
 		if (this.getContact() == null) {
 			// Throw NPE
@@ -184,9 +305,10 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
 	}
 
 	/**
-	 * Copies currently set fax number's data to admin phone controller
+	 * Notifies other controllers (backing beans) if a phone id has been
+	 * successfully converted to a DialableFaxNumber instance.
 	 */
-	public void copyFaxNumberToController () {
+	public void notifyControllerFaxNumberConverted () {
 		// Validate fax instance
 		if (this.getFaxNumber() == null) {
 			// Throw NPE
@@ -225,9 +347,10 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
 	}
 
 	/**
-	 * Copies currently set land-line number's data to admin phone controller
+	 * Notifies other controllers (backing beans) if a phone id has been
+	 * successfully converted to a DialableLandLineNumber instance.
 	 */
-	public void copyLandLineNumberToController () {
+	public void notifyControllerLandLineNumberConverted () {
 		// Validate land-line instance
 		if (this.getLandLineNumber() == null) {
 			// Throw NPE
@@ -266,9 +389,10 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
 	}
 
 	/**
-	 * Copies currently set mobile number's data to admin phone controller
+	 * Notifies other controllers (backing beans) if a phone id has been
+	 * successfully converted to a DialableMobileNumber instance.
 	 */
-	public void copyMobileNumberToController () {
+	public void notifyControllerMobileNumberConverted () {
 		// Validate mobile instance
 		if (this.getMobileNumber() == null) {
 			// Throw NPE
@@ -301,12 +425,10 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
 	}
 
 	/**
-	 * Copies currently set user instances data to adminUserController
+	 * Notifies other controllers (backing beans) if a user id has been
+	 * successfully converted to a User instance.
 	 */
-	public void copyUserToController () {
-		// Log message
-		//* NOISY-DEBUG: */ System.out.println("AdminHelper::copyUserToController - CALLED!"); //NOI18N
-
+	public void notifyControllerUserConverted () {
 		// Validate user instance
 		if (this.getUser() == null) {
 			// Throw NPE
@@ -320,7 +442,7 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
 		}
 
 		// Get contact
-		Contact userContact = this.getUser().getUserContact();
+		final Contact userContact = this.getUser().getUserContact();
 
 		// Set contact here, too. This avoids parameters that cannot auto-complete in IDEs.
 		this.setContact(userContact);
@@ -332,135 +454,6 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
 		this.userCreatedEvent.fire(new CreatedUserEvent(this.getUser()));
 	}
 
-	/**
-	 * Getter for contact instance
-	 * <p>
-	 * @return Contact instance
-	 */
-	public Contact getContact () {
-		return this.contact;
-	}
-
-	/**
-	 * Setter for contact instance
-	 * <p>
-	 * @param contact Contact instance
-	 */
-	public void setContact (final Contact contact) {
-		// String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[THREAD_STACK].getClassName(), Thread.currentThread().getStackTrace()[THREAD_STACK].getMethodName());
-		// System.out.println(MessageFormat.format("{0}: Setting contact={1}, previous: {2}, caller: {3}", this.getClass().getSimpleName(), contact, this.contact, caller));
-		this.contact = contact;
-	}
-
-	/**
-	 * Returns a message key depending on if this contact is a user and/or a
-	 * contact. If this contact is unused, a default key is returned.
-	 * <p>
-	 * @param contact Contact instance to check
-	 * <p>
-	 * @return Message key
-	 */
-	public String getContactUsageMessageKey (final Contact contact) {
-		// The contact must be valid
-		if (null == contact) {
-			// Throw NPE
-			throw new NullPointerException("contact is null"); //NOI18N
-		} else if (contact.getContactId() == null) {
-			// Throw again ...
-			throw new NullPointerException("contact.contactId is null"); //NOI18N
-		} else if (contact.getContactId() < 1) {
-			// Not valid
-			throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N
-		}
-
-		// Default key is "unused"
-		String messageKey = "CONTACT_IS_UNUSED"; //NOI18N
-
-		// Check user contact
-		boolean isUserContact = this.userController.isContactFound(contact);
-
-		// Check user first
-		if (isUserContact) {
-			// Only user
-			messageKey = "CONTACT_IS_USER"; //NOI18N
-		}
-
-		// Return message key
-		return messageKey;
-	}
-
-	/**
-	 * Getter for dialable fax number
-	 * <p>
-	 * @return Dialable fax number
-	 */
-	public DialableFaxNumber getFaxNumber () {
-		return this.faxNumber;
-	}
-
-	/**
-	 * Setter for dialable fax number
-	 * <p>
-	 * @param faxNumber Dialable fax number
-	 */
-	public void setFaxNumber (final DialableFaxNumber faxNumber) {
-		this.faxNumber = faxNumber;
-	}
-
-	/**
-	 * Getter for dialable land-line number
-	 * <p>
-	 * @return Dialable land-line number
-	 */
-	public DialableLandLineNumber getLandLineNumber () {
-		return this.landLineNumber;
-	}
-
-	/**
-	 * Setter for dialable land-line number
-	 * <p>
-	 * @param landLineNumber Dialable land-line number
-	 */
-	public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
-		this.landLineNumber = landLineNumber;
-	}
-
-	/**
-	 * Getter for dialable mobile number
-	 * <p>
-	 * @return Dialable mobile number
-	 */
-	public DialableMobileNumber getMobileNumber () {
-		return this.mobileNumber;
-	}
-
-	/**
-	 * Setter for dialable mobile number
-	 * <p>
-	 * @param mobileNumber Dialable mobile number
-	 */
-	public void setMobileNumber (final DialableMobileNumber mobileNumber) {
-		this.mobileNumber = mobileNumber;
-	}
-
-	/**
-	 * Getter for user instance
-	 * <p>
-	 * @return User instance
-	 */
-	public User getUser () {
-		return this.user;
-	}
-
-	/**
-	 * Setter for user instance
-	 * <p>
-	 * @param user User instance
-	 */
-	public void setUser (final User user) {
-		this.user = user;
-	}
-
 	/**
 	 * Set's all given contact's phone instances: land-line, mobile and
 	 * faxNumber
diff --git a/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java b/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java
index da3889b3..ebbf724b 100644
--- a/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java
+++ b/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java
@@ -110,7 +110,7 @@ public class JobsLocalizationSessionBean extends BaseJobsController implements J
 		// Is the locale set?
 		if (event.getLoggedInUser().getUserLocale() instanceof Locale) {
 			// Get user local
-			Locale userLocale = event.getLoggedInUser().getUserLocale();
+			final Locale userLocale = event.getLoggedInUser().getUserLocale();
 
 			// Change locale
 			this.changeLocale(userLocale, Boolean.TRUE);
@@ -159,8 +159,8 @@ public class JobsLocalizationSessionBean extends BaseJobsController implements J
 		Locale newLocale = null;
 
 		// Iterate over whole map
-		for (Map.Entry<String, Locale> entry : this.getSupportedLocales().entrySet()) {
-			Locale foundLocale = entry.getValue();
+		for (final Map.Entry<String, Locale> entry : this.getSupportedLocales().entrySet()) {
+			final Locale foundLocale = entry.getValue();
 
 			// Does the language match?
 			if (Objects.equals(foundLocale.toString(), this.getLocaleCode())) {
@@ -236,13 +236,13 @@ public class JobsLocalizationSessionBean extends BaseJobsController implements J
 	@PostConstruct
 	public void init () {
 		// Get default locale
-		Locale defaultLocale = FacesContext.getCurrentInstance().getApplication().getDefaultLocale();
+		final Locale defaultLocale = FacesContext.getCurrentInstance().getApplication().getDefaultLocale();
 
 		// Add it to list
 		this.getSupportedLocales().put(defaultLocale.toString(), defaultLocale);
 
 		// Get iterator from faces context
-		Iterator<Locale> iterator = FacesContext.getCurrentInstance().getApplication().getSupportedLocales();
+		final Iterator<Locale> iterator = FacesContext.getCurrentInstance().getApplication().getSupportedLocales();
 
 		// Add all locales
 		while (iterator.hasNext()) {
@@ -259,13 +259,13 @@ public class JobsLocalizationSessionBean extends BaseJobsController implements J
 		// Is no country code found?
 		if (requestLocale.getCountry().isEmpty()) {
 			// Then try to find one, get language from it
-			String language = requestLocale.getLanguage();
+			final String language = requestLocale.getLanguage();
 			Boolean found = Boolean.FALSE;
 
 			// Iterate over whole map
-			for (Map.Entry<String, Locale> entry : this.getSupportedLocales().entrySet()) {
-				String languageCode = entry.getKey();
-				Locale foundLocale = entry.getValue();
+			for (final Map.Entry<String, Locale> entry : this.getSupportedLocales().entrySet()) {
+				final String languageCode = entry.getKey();
+				final Locale foundLocale = entry.getValue();
 
 				// Does the language match?
 				if (languageCode.startsWith(language)) {
diff --git a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java
index d80dfaa6..f9ce7bb4 100644
--- a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java
@@ -98,10 +98,10 @@ public class JobsMobileProviderWebRequestBean extends BaseJobsController impleme
 	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
 	public List<MobileProvider> allMobileProviders () {
 		// Init list
-		List<MobileProvider> list = new LinkedList<>();
+		final List<MobileProvider> list = new LinkedList<>();
 
 		// Get iterator
-		Iterator<Cache.Entry<Long, MobileProvider>> iterator = this.mobileProviderCache.iterator();
+		final Iterator<Cache.Entry<Long, MobileProvider>> iterator = this.mobileProviderCache.iterator();
 
 		// Loop over all
 		while (iterator.hasNext()) {
@@ -124,7 +124,7 @@ public class JobsMobileProviderWebRequestBean extends BaseJobsController impleme
 		// Is cache there?
 		if (!this.mobileProviderCache.iterator().hasNext()) {
 			// Get whole list
-			List<MobileProvider> list = this.mobileProviderBean.allMobileProviders();
+			final List<MobileProvider> list = this.mobileProviderBean.allMobileProviders();
 
 			// Add all
 			for (final Iterator<MobileProvider> iterator = list.iterator(); iterator.hasNext();) {
diff --git a/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java
index a1d4c9be..6e1c7c5b 100644
--- a/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java
@@ -484,10 +484,10 @@ public class JobsPhoneWebRequestBean extends BaseJobsController implements JobsP
 	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
 	public List<DialableFaxNumber> allFaxNumbers () {
 		// Init list
-		List<DialableFaxNumber> list = new LinkedList<>();
+		final List<DialableFaxNumber> list = new LinkedList<>();
 
 		// Get iterator
-		Iterator<Cache.Entry<Long, DialableFaxNumber>> iterator = this.faxNumberCache.iterator();
+		final Iterator<Cache.Entry<Long, DialableFaxNumber>> iterator = this.faxNumberCache.iterator();
 
 		// Loop over all
 		while (iterator.hasNext()) {
@@ -506,10 +506,10 @@ public class JobsPhoneWebRequestBean extends BaseJobsController implements JobsP
 	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
 	public List<DialableLandLineNumber> allLandLineNumbers () {
 		// Init list
-		List<DialableLandLineNumber> list = new LinkedList<>();
+		final List<DialableLandLineNumber> list = new LinkedList<>();
 
 		// Get iterator
-		Iterator<Cache.Entry<Long, DialableLandLineNumber>> iterator = this.landLineNumberCache.iterator();
+		final Iterator<Cache.Entry<Long, DialableLandLineNumber>> iterator = this.landLineNumberCache.iterator();
 
 		// Loop over all
 		while (iterator.hasNext()) {
@@ -528,10 +528,10 @@ public class JobsPhoneWebRequestBean extends BaseJobsController implements JobsP
 	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
 	public List<DialableMobileNumber> allMobileNumbers () {
 		// Init list
-		List<DialableMobileNumber> list = new LinkedList<>();
+		final List<DialableMobileNumber> list = new LinkedList<>();
 
 		// Get iterator
-		Iterator<Cache.Entry<Long, DialableMobileNumber>> iterator = this.mobileNumberCache.iterator();
+		final Iterator<Cache.Entry<Long, DialableMobileNumber>> iterator = this.mobileNumberCache.iterator();
 
 		// Loop over all
 		while (iterator.hasNext()) {
@@ -554,7 +554,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsController implements JobsP
 		// Is cache there?
 		if (!this.faxNumberCache.iterator().hasNext()) {
 			// Get whole list
-			List<DialableFaxNumber> list = this.phoneBean.allFaxNumbers();
+			final List<DialableFaxNumber> list = this.phoneBean.allFaxNumbers();
 
 			// Add all
 			for (final Iterator<DialableFaxNumber> iterator = list.iterator(); iterator.hasNext();) {
@@ -569,7 +569,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsController implements JobsP
 		// Is cache there?
 		if (!this.landLineNumberCache.iterator().hasNext()) {
 			// Get whole list
-			List<DialableLandLineNumber> list = this.phoneBean.allLandLineNumbers();
+			final List<DialableLandLineNumber> list = this.phoneBean.allLandLineNumbers();
 
 			// Add all
 			for (final Iterator<DialableLandLineNumber> iterator = list.iterator(); iterator.hasNext();) {
@@ -584,7 +584,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsController implements JobsP
 		// Is cache there?
 		if (!this.mobileNumberCache.iterator().hasNext()) {
 			// Get whole list
-			List<DialableMobileNumber> list = this.phoneBean.allMobileNumbers();
+			final List<DialableMobileNumber> list = this.phoneBean.allMobileNumbers();
 
 			// Add all
 			for (final Iterator<DialableMobileNumber> iterator = list.iterator(); iterator.hasNext();) {
diff --git a/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java
index 68488d2e..07f3bd7b 100644
--- a/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java
@@ -17,17 +17,16 @@
 package org.mxchange.jjobs.beans.profile;
 
 import java.text.MessageFormat;
-import javax.annotation.PostConstruct;
 import javax.enterprise.context.RequestScoped;
 import javax.faces.view.facelets.FaceletException;
 import javax.inject.Inject;
 import javax.inject.Named;
 import org.mxchange.jjobs.beans.BaseJobsController;
+import org.mxchange.jjobs.beans.user.JobsUserWebRequestController;
 import org.mxchange.jjobs.beans.user.login.JobsUserLoginWebSessionController;
 import org.mxchange.jusercore.exceptions.UserNotFoundException;
 import org.mxchange.jusercore.model.user.User;
 import org.mxchange.jusercore.model.user.profilemodes.ProfileMode;
-import org.mxchange.jjobs.beans.user.JobsUserWebRequestController;
 
 /**
  * A web request bean for user profiles
@@ -63,13 +62,6 @@ public class JobsUserProfileWebRequestBean extends BaseJobsController implements
 		super();
 	}
 
-	/**
-	 * Post-construction method
-	 */
-	@PostConstruct
-	public void init () {
-	}
-
 	@Override
 	public boolean isProfileLinkVisibleById (final Long userId) {
 		// Init user instance
@@ -123,7 +115,7 @@ public class JobsUserProfileWebRequestBean extends BaseJobsController implements
 		}
 
 		// Get profile mode from user instance (safe now)
-		ProfileMode profileMode = user.getUserProfileMode();
+		final ProfileMode profileMode = user.getUserProfileMode();
 
 		// Check all conditions (except for admin)
 		return ((profileMode.equals(ProfileMode.PUBLIC)) ||
diff --git a/src/java/org/mxchange/jjobs/beans/profilemode/JobsProfileModeWebApplicationBean.java b/src/java/org/mxchange/jjobs/beans/profilemode/JobsProfileModeWebApplicationBean.java
index e6b54844..be774621 100644
--- a/src/java/org/mxchange/jjobs/beans/profilemode/JobsProfileModeWebApplicationBean.java
+++ b/src/java/org/mxchange/jjobs/beans/profilemode/JobsProfileModeWebApplicationBean.java
@@ -16,7 +16,6 @@
  */
 package org.mxchange.jjobs.beans.profilemode;
 
-import javax.annotation.PostConstruct;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Named;
 import org.mxchange.jjobs.beans.BaseJobsController;
@@ -50,11 +49,4 @@ public class JobsProfileModeWebApplicationBean extends BaseJobsController implem
 		return ProfileMode.values();
 	}
 
-	/**
-	 * Post-construction method
-	 */
-	@PostConstruct
-	public void init () {
-	}
-
 }
diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java
index eb78c032..bf373cc5 100644
--- a/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java
@@ -227,7 +227,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J
 		}
 
 		// Create new user instance
-		User newUser = new LoginUser();
+		final User newUser = new LoginUser();
 
 		// Set user name, CONFIRMED and INVISIBLE
 		newUser.setUserName(this.getUserName());
@@ -236,7 +236,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J
 		newUser.setUserProfileMode(ProfileMode.INVISIBLE);
 
 		// Get locale from view-root
-		Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
+		final Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
 
 		// Copy user locale
 		newUser.setUserLocale(locale);
@@ -296,13 +296,13 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J
 			// Now, that all is set, call EJB
 			if (this.getContact() instanceof Contact) {
 				// Link contact with this user
-				User updatedUser = this.adminUserBean.linkUser(newUser);
+				final User updatedUser = this.adminUserBean.linkUser(newUser);
 
 				// Fire event
 				this.userLinkedEvent.fire(new AdminLinkedUserEvent(updatedUser));
 			} else {
 				// Add new contact
-				User updatedUser = this.adminUserBean.addUser(newUser);
+				final User updatedUser = this.adminUserBean.addUser(newUser);
 
 				// Fire event
 				this.addedUserEvent.fire(new AdminAddedUserEvent(updatedUser));
@@ -371,7 +371,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J
 		}
 
 		// Get user instance
-		User registeredUser = event.getRegisteredUser();
+		final User registeredUser = event.getRegisteredUser();
 
 		// @TODO Nothing to do with the user here?
 		// Clear all data
@@ -478,7 +478,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J
 		}
 
 		// Call EJB for updating user data
-		User updatedUser = this.userBean.updateUserData(this.getUser());
+		final User updatedUser = this.userBean.updateUserData(this.getUser());
 
 		// Fire event
 		this.updatedUserDataEvent.fire(new AdminUpdatedUserDataEvent(updatedUser));
@@ -663,11 +663,11 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J
 		}
 
 		// Init updated user instance
-		User updatedUser;
+		final User updatedUser;
 
 		try {
 			// Get base URL
-			String baseUrl = FacesUtils.generateBaseUrl();
+			final String baseUrl = FacesUtils.generateBaseUrl();
 
 			// Call EJB to lock account
 			updatedUser = this.adminUserBean.lockUserAccount(this.getUser(), this.getUserLockReason(), baseUrl);
@@ -712,11 +712,11 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J
 		}
 
 		// Init updated user instance
-		User updatedUser;
+		final User updatedUser;
 
 		try {
 			// Get base URL
-			String baseUrl = FacesUtils.generateBaseUrl();
+			final String baseUrl = FacesUtils.generateBaseUrl();
 
 			// Call EJB to unlock account
 			updatedUser = this.adminUserBean.unlockUserAccount(this.getUser(), baseUrl);
diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java
index f5f5331b..bb439c50 100644
--- a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java
@@ -360,7 +360,7 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		}
 
 		// Get user instance
-		User user = event.getCreatedUser();
+		final User user = event.getCreatedUser();
 
 		// Set all fields here
 		this.copyUser(user);
@@ -433,7 +433,7 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		}
 
 		// "Cache" user instance
-		User loggedInUser = event.getLoggedInUser();
+		final User loggedInUser = event.getLoggedInUser();
 
 		// Copy all data to this bean
 		this.copyUser(loggedInUser);
@@ -484,7 +484,7 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		}
 
 		// Get user instance
-		User registeredUser = event.getRegisteredUser();
+		final User registeredUser = event.getRegisteredUser();
 
 		// Copy all data from registered->user
 		this.copyUser(registeredUser);
@@ -557,10 +557,10 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 	@SuppressWarnings ("ReturnOfCollectionOrArrayField")
 	public List<User> allUsers () {
 		// Init list
-		List<User> list = new LinkedList<>();
+		final List<User> list = new LinkedList<>();
 
 		// Get iterator
-		Iterator<Cache.Entry<Long, User>> iterator = this.userCache.iterator();
+		final Iterator<Cache.Entry<Long, User>> iterator = this.userCache.iterator();
 
 		// Loop over all
 		while (iterator.hasNext()) {
@@ -609,14 +609,11 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 
 	@Override
 	public User createUserInstance (final boolean createContactData) {
-		// Trace message
-		//* NOISY-DEBUG: */ System.out.println(MessageFormat.format("{0}.createUserInstance: CALLED!", this.getClass().getSimpleName()));
-
 		// Required personal data must be set
 		assert (this.isRequiredPersonalDataSet()) : "not all personal data is set"; //NOI18N
 
 		// Create new user instance
-		User user = new LoginUser();
+		final User user = new LoginUser();
 
 		// Is user name required?
 		if (!this.isUserNameRequired()) {
@@ -643,25 +640,18 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		// Is multiple registration page
 		if ((createContactData) || (!this.featureController.isFeatureEnabled("user_register_multiple_page"))) { //NOI18N
 			// Create contact instance
-			Contact contact = this.contactController.createContactInstance();
+			final Contact contact = this.contactController.createContactInstance();
 
-			// Debug message
-			//* NOISY-DEBUG: */ System.out.println(MessageFormat.format("{0}.createUserInstance: contact={1}", this.getClass().getSimpleName(), contact));
 			// Set contact in user
 			user.setUserContact(contact);
 		}
 
-		// Trace message
-		//* NOISY-DEBUG: */ System.out.println(MessageFormat.format("{0}.createUserInstance: user={1} - EXIT!", this.getClass().getSimpleName(), user));
 		// Return it
 		return user;
 	}
 
 	@Override
 	public User createUserLogin () {
-		// Trace message
-		//* NOISY-DEBUG */ System.out.println(MessageFormat.format("{0}.createUserLogin: CALLED!", this.getClass().getSimpleName()));
-
 		// Is all data set?
 		if (this.getUserName() == null) {
 			// Throw NPE
@@ -672,13 +662,11 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		}
 
 		// Create new user instance
-		User user = new LoginUser();
+		final User user = new LoginUser();
 
 		// Update all data ...
 		user.setUserName(this.getUserName());
 
-		// Trace message
-		//* NOISY-DEBUG */ System.out.println(MessageFormat.format("{0}.createUserLogin: user={1} - EXIT!", this.getClass().getSimpleName(), user));
 		// Return the new instance
 		return user;
 	}
@@ -701,7 +689,7 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		}
 
 		// Get user instance
-		User user = this.userLoginController.getLoggedInUser();
+		final User user = this.userLoginController.getLoggedInUser();
 
 		// Copy contact data to contact instance
 		this.contactController.updateContactDataFromController(user.getUserContact());
@@ -718,7 +706,7 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		user.setUserProfileMode(this.getUserProfileMode());
 
 		// Send it to the EJB
-		User updatedUser = this.userBean.updateUserPersonalData(user);
+		final User updatedUser = this.userBean.updateUserPersonalData(user);
 
 		// Fire event
 		this.updatedPersonalDataEvent.fire(new UpdatedUserPersonalDataEvent(updatedUser));
@@ -829,7 +817,7 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		// Is cache there?
 		if (!this.userCache.iterator().hasNext()) {
 			// Get whole list
-			List<User> list = this.userBean.allUsers();
+			final List<User> list = this.userBean.allUsers();
 
 			// Add all
 			for (final Iterator<User> iterator = list.iterator(); iterator.hasNext();) {
@@ -861,12 +849,12 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		boolean isFound = false;
 
 		// Get iterator
-		Iterator<User> iterator = this.allUsers().iterator();
+		final Iterator<User> iterator = this.allUsers().iterator();
 
 		// Loop through all entries
 		while (iterator.hasNext()) {
 			// Get user
-			User next = iterator.next();
+			final User next = iterator.next();
 
 			// Compare both objects
 			if (Objects.equals(contact, next.getUserContact())) {
@@ -883,10 +871,10 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 	@Override
 	public boolean isPublicUserProfileEnabled () {
 		// Get context parameter
-		String contextParameter = FacesContext.getCurrentInstance().getExternalContext().getInitParameter("is_public_profile_enabled"); //NOI18N
+		final String contextParameter = FacesContext.getCurrentInstance().getExternalContext().getInitParameter("is_public_profile_enabled"); //NOI18N
 
 		// Is it set?
-		boolean isEnabled = ((contextParameter instanceof String) && (contextParameter.toLowerCase().equals("true"))); //NOI18N
+		final boolean isEnabled = ((contextParameter instanceof String) && (contextParameter.toLowerCase().equals("true"))); //NOI18N
 
 		// This requires user names being enabled, too.
 		if ((isEnabled) && (!this.isUserNameRequired())) {
@@ -938,10 +926,10 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 	@Override
 	public boolean isUserNameRequired () {
 		// Get context parameter
-		String contextParameter = FacesContext.getCurrentInstance().getExternalContext().getInitParameter("is_user_login_require_user_name"); //NOI18N
+		final String contextParameter = FacesContext.getCurrentInstance().getExternalContext().getInitParameter("is_user_login_require_user_name"); //NOI18N
 
 		// Is it set?
-		boolean isRequired = ((contextParameter instanceof String) && (contextParameter.toLowerCase().equals("true"))); //NOI18N
+		final boolean isRequired = ((contextParameter instanceof String) && (contextParameter.toLowerCase().equals("true"))); //NOI18N
 
 		// Return value
 		return isRequired;
@@ -964,7 +952,7 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		// Try to lookup it in visible user list
 		for (final Iterator<Cache.Entry<Long, User>> iterator = this.userCache.iterator(); iterator.hasNext();) {
 			// Get next user
-			Cache.Entry<Long, User> next = iterator.next();
+			final Cache.Entry<Long, User> next = iterator.next();
 
 			// Contact should be set
 			if (next.getValue().getUserContact() == null) {
@@ -1010,7 +998,7 @@ public class JobsUserWebRequestBean extends BaseJobsController implements JobsUs
 		// Try to lookup it in visible user list
 		for (final Iterator<Cache.Entry<Long, User>> iterator = this.userCache.iterator(); iterator.hasNext();) {
 			// Get next user
-			Cache.Entry<Long, User> next = iterator.next();
+			final Cache.Entry<Long, User> next = iterator.next();
 
 			// Is the user id found?
 			if (Objects.equals(next.getKey(), userId)) {
diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java
index 3e71e8c1..b56296a3 100644
--- a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java
+++ b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java
@@ -35,6 +35,7 @@ public interface JobsUserWebRequestController extends Serializable {
 	 * <p>
 	 * @deprecated Better set as context parameter
 	 */
+	@Deprecated
 	public static final Integer MINIMUM_PASSWORD_LENGTH = 5;
 
 	/**
diff --git a/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java
index e1c4bded..4555ad7b 100644
--- a/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java
@@ -505,7 +505,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsController implement
 		}
 
 		// Init list
-		List<LogableUserActivity> list = new LinkedList<>();
+		final List<LogableUserActivity> list = new LinkedList<>();
 
 		// Is the user set?
 		if (this.userActivityCache.containsKey(this.getUser())) {
@@ -545,7 +545,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsController implement
 	@PostConstruct
 	public void init () {
 		// Get whole list
-		List<LogableUserActivity> list = this.userActivityBean.fetchAllUserActivityLog();
+		final List<LogableUserActivity> list = this.userActivityBean.fetchAllUserActivityLog();
 
 		// Put all in map, per-user
 		for (final LogableUserActivity userActivity : list) {
@@ -589,7 +589,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsController implement
 		}
 
 		// Create new activity object
-		LogableUserActivity userActivity = new UserActivityLog(activityType, user, new GregorianCalendar(), this.determinePrincipalName());
+		final LogableUserActivity userActivity = new UserActivityLog(activityType, user, new GregorianCalendar(), this.determinePrincipalName());
 
 		// Call bean to add it
 		this.userActivityBean.addUserActivityLog(userActivity);
@@ -631,7 +631,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsController implement
 		}
 
 		// Create new activity object
-		LogableUserActivity userActivity = new UserActivityLog(message, activityType, user, new GregorianCalendar(), this.determinePrincipalName());
+		final LogableUserActivity userActivity = new UserActivityLog(message, activityType, user, new GregorianCalendar(), this.determinePrincipalName());
 
 		// Call bean to add it
 		this.userActivityBean.addUserActivityLog(userActivity);
diff --git a/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java
index 5be19add..18b25016 100644
--- a/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java
@@ -124,10 +124,10 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple
 		}
 
 		// Now try to find the user in user list, first get the whole list
-		List<User> users = this.userController.allUsers();
+		final List<User> users = this.userController.allUsers();
 
 		// Get iterator from it
-		Iterator<User> iterator = users.iterator();
+		final Iterator<User> iterator = users.iterator();
 
 		// Init instance
 		User user = null;
@@ -135,7 +135,7 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple
 		// Then loop through all
 		while (iterator.hasNext()) {
 			// Get next user
-			User next = iterator.next();
+			final User next = iterator.next();
 
 			// Same confirmation key?
 			if (Objects.equals(this.getConfirmationKey(), next.getUserConfirmKey())) {
@@ -186,11 +186,11 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple
 		}
 
 		// Updated user instance
-		User updatedUser;
+		final User updatedUser;
 
 		try {
 			// Get base URL
-			String baseUrl = FacesUtils.generateBaseUrl();
+			final String baseUrl = FacesUtils.generateBaseUrl();
 
 			// Confirm account
 			updatedUser = this.userBean.confirmAccount(user, baseUrl);
diff --git a/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestBean.java
index ab3d0d53..4f567878 100644
--- a/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestBean.java
@@ -123,7 +123,7 @@ public class JobsEmailChangeWebRequestBean extends BaseJobsController implements
 		}
 
 		// Get user instance
-		User user = this.userLoginController.getLoggedInUser();
+		final User user = this.userLoginController.getLoggedInUser();
 
 		// It should be there, so run some tests on it
 		assert (user instanceof User) : "Instance userLoginController.loggedInUser is null"; //NOI18N
@@ -145,10 +145,10 @@ public class JobsEmailChangeWebRequestBean extends BaseJobsController implements
 		}
 
 		// Create change object, to save EJB calls, the hash is not generated here
-		ChangeableEmailAddress emailChange = new EmailAddressChange(user, this.getEmailAddress());
+		final ChangeableEmailAddress emailChange = new EmailAddressChange(user, this.getEmailAddress());
 
 		// Get base URL
-		String baseUrl = FacesUtils.generateBaseUrl();
+		final String baseUrl = FacesUtils.generateBaseUrl();
 
 		// Call EJB
 		this.emailChangeBean.enqueueEmailAddressForChange(emailChange, baseUrl);
@@ -204,7 +204,7 @@ public class JobsEmailChangeWebRequestBean extends BaseJobsController implements
 		// Is cache there?
 		if (!this.queuedEmailCache.iterator().hasNext()) {
 			// Get whole list
-			List<String> list = this.emailChangeBean.allQueuedAddresses();
+			final List<String> list = this.emailChangeBean.allQueuedAddresses();
 
 			// Add all
 			for (final Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
@@ -253,7 +253,7 @@ public class JobsEmailChangeWebRequestBean extends BaseJobsController implements
 		}
 
 		// Check EJB
-		boolean isQueued = this.emailChangeBean.isEmailAddressEnqueued(emailAddress);
+		final boolean isQueued = this.emailChangeBean.isEmailAddressEnqueued(emailAddress);
 
 		// Is it there?
 		if (isQueued) {
diff --git a/src/java/org/mxchange/jjobs/beans/user/login/JobsUserLoginWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/user/login/JobsUserLoginWebSessionBean.java
index 03f6d7c1..e330ebce 100644
--- a/src/java/org/mxchange/jjobs/beans/user/login/JobsUserLoginWebSessionBean.java
+++ b/src/java/org/mxchange/jjobs/beans/user/login/JobsUserLoginWebSessionBean.java
@@ -198,14 +198,14 @@ public class JobsUserLoginWebSessionBean extends BaseJobsController implements J
 	 */
 	public String doUserLogin () {
 		// Get user instance
-		User user = this.userController.createUserLogin();
+		final User user = this.userController.createUserLogin();
 
 		// Create login container
-		LoginContainer loginContainer = new UserLoginContainer(user, this.userController.getUserPassword());
+		final LoginContainer loginContainer = new UserLoginContainer(user, this.userController.getUserPassword());
 
 		try {
 			// Call bean
-			User confirmedUser = this.userLoginBean.validateUserAccountStatus(loginContainer);
+			final User confirmedUser = this.userLoginBean.validateUserAccountStatus(loginContainer);
 
 			// All fine here so set it here
 			this.setLoggedInUser(confirmedUser);
@@ -328,7 +328,7 @@ public class JobsUserLoginWebSessionBean extends BaseJobsController implements J
 		}
 
 		// Create "container"
-		LoginContainer container = new UserLoginContainer(this.getLoggedInUser(), this.getUserCurrentPassword());
+		final LoginContainer container = new UserLoginContainer(this.getLoggedInUser(), this.getUserCurrentPassword());
 
 		// Now check if it matches
 		return UserLoginUtils.ifPasswordMatches(container, this.getLoggedInUser());
@@ -358,7 +358,7 @@ public class JobsUserLoginWebSessionBean extends BaseJobsController implements J
 
 		// Init variables
 		int count = 1;
-		int maxEntries = this.getIntegerContextParameter("max_user_password_history"); //NOI18N
+		final int maxEntries = this.getIntegerContextParameter("max_user_password_history"); //NOI18N
 
 		// Check all passwords
 		for (final PasswordHistory entry : this.getUserPasswordHistory()) {
diff --git a/src/java/org/mxchange/jjobs/beans/user/password/JobsUserPasswordWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/password/JobsUserPasswordWebRequestBean.java
index ff091a1b..ecbd97bf 100644
--- a/src/java/org/mxchange/jjobs/beans/user/password/JobsUserPasswordWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/user/password/JobsUserPasswordWebRequestBean.java
@@ -161,17 +161,17 @@ public class JobsUserPasswordWebRequestBean extends BaseJobsController implement
 		}
 
 		// Get user instance
-		User user = this.userLoginController.getLoggedInUser();
+		final User user = this.userLoginController.getLoggedInUser();
 
 		// Encrypt password
-		String encryptedPassword = UserLoginUtils.encryptPassword(this.getUserPassword());
+		final String encryptedPassword = UserLoginUtils.encryptPassword(this.getUserPassword());
 
 		// Set it in user
 		user.setUserEncryptedPassword(encryptedPassword);
 
 		try {
 			// Get base URL
-			String baseUrl = FacesUtils.generateBaseUrl();
+			final String baseUrl = FacesUtils.generateBaseUrl();
 
 			// All is set, then update password
 			PasswordHistory passwordHistory = this.userBean.updateUserPassword(user, baseUrl);
diff --git a/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java
index ada67e19..3007c207 100644
--- a/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java
@@ -143,7 +143,7 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsController implement
 		}
 
 		// Get user instance
-		User user = this.userController.createUserInstance(true);
+		final User user = this.userController.createUserInstance(true);
 
 		// Null random password means registration requires user-entered password
 		String randomPassword = null;
@@ -200,7 +200,7 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsController implement
 				randomPassword = UserLoginUtils.createRandomPassword(JobsUserWebRequestController.MINIMUM_PASSWORD_LENGTH);
 
 				// Generate (ignored) password-history
-				PasswordHistory passwordHistory = new UserPasswordHistory(randomPassword, user);
+				final PasswordHistory passwordHistory = new UserPasswordHistory(randomPassword, user);
 
 				// Fire event
 				this.userPasswordChangedEvent.fire(new UpdatedUserPasswordEvent(passwordHistory, randomPassword));
@@ -208,7 +208,7 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsController implement
 		}
 
 		// Encrypt password
-		String encryptedPassword = UserLoginUtils.encryptPassword(this.userController.getUserPassword());
+		final String encryptedPassword = UserLoginUtils.encryptPassword(this.userController.getUserPassword());
 
 		// Set it here
 		user.setUserEncryptedPassword(encryptedPassword);
@@ -222,7 +222,7 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsController implement
 			user.setUserAccountStatus(UserAccountStatus.UNCONFIRMED);
 
 			// Ask EJB for generating a not-existing confirmation key
-			String confirmKey = this.registerBean.generateConfirmationKey(user);
+			final String confirmKey = this.registerBean.generateConfirmationKey(user);
 
 			// Set it in user
 			user.setUserConfirmKey(confirmKey);
@@ -230,10 +230,10 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsController implement
 
 		try {
 			// Get base URL
-			String baseUrl = FacesUtils.generateBaseUrl();
+			final String baseUrl = FacesUtils.generateBaseUrl();
 
 			// Call bean
-			User registeredUser = this.registerBean.registerUser(user, baseUrl, randomPassword);
+			final User registeredUser = this.registerBean.registerUser(user, baseUrl, randomPassword);
 
 			// The id number should be set
 			assert (registeredUser.getUserId() instanceof Long) : "registeredUser.userId is null after registerUser() was called."; //NOI18N
@@ -264,7 +264,7 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsController implement
 		}
 
 		// Get user instance
-		User user = this.userController.createUserInstance(false);
+		final User user = this.userController.createUserInstance(false);
 
 		// First check if user is not null and user name is not used + if same email address is entered
 		if (null == user) {
@@ -305,7 +305,7 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsController implement
 		}
 
 		// Create half contact instance with email address
-		Contact contact = new UserContact();
+		final Contact contact = new UserContact();
 		contact.setContactEmailAddress(this.contactController.getEmailAddress());
 
 		// Set contact in user
diff --git a/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java
index 5c072feb..32e02faf 100644
--- a/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java
+++ b/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java
@@ -130,7 +130,7 @@ public class JobsResendLinkWebRequestBean extends BaseJobsController implements
 		}
 
 		// Init user instance
-		User user;
+		final User user;
 
 		try {
 			// Is the email address really not used?
@@ -165,11 +165,11 @@ public class JobsResendLinkWebRequestBean extends BaseJobsController implements
 		}
 
 		// Init managed user instance
-		User managedUser;
+		final User managedUser;
 
 		try {
 			// Get base URL
-			String baseUrl = FacesUtils.generateBaseUrl();
+			final String baseUrl = FacesUtils.generateBaseUrl();
 
 			// Call EJB and return redirect target
 			managedUser = this.resendLinkBean.resendConfirmationLink(user, this.getLocale(), baseUrl);
diff --git a/src/java/org/mxchange/jjobs/converter/business/basicdata/JobsBusinessContactConverter.java b/src/java/org/mxchange/jjobs/converter/business/basicdata/JobsBusinessContactConverter.java
index 9cbf1eb7..cea2d4cd 100644
--- a/src/java/org/mxchange/jjobs/converter/business/basicdata/JobsBusinessContactConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/business/basicdata/JobsBusinessContactConverter.java
@@ -49,10 +49,10 @@ public class JobsBusinessContactConverter implements Converter<BusinessBasicData
 		if (BASIC_DATA_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
-				BASIC_DATA_BEAN = (BusinessDataSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/businessData!org.mxchange.jcontactsbusiness.basicdata.BusinessDataSessionBeanRemote");
+				BASIC_DATA_BEAN = (BusinessDataSessionBeanRemote) initial.lookup("java:global/jfinancials-ejb/businessData!org.mxchange.jcontactsbusiness.basicdata.BusinessDataSessionBeanRemote");
 			} catch (final NamingException ex) {
 				// Throw it again
 				throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Cannot lookup EJB", ex.getMessage()), ex);
@@ -73,7 +73,7 @@ public class JobsBusinessContactConverter implements Converter<BusinessBasicData
 
 		try {
 			// Try to parse the value as long
-			Long basicDataId = Long.valueOf(submittedValue);
+			final Long basicDataId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
 			businessContact = BASIC_DATA_BEAN.findBasicDataById(basicDataId);
diff --git a/src/java/org/mxchange/jjobs/converter/business/company_employee/JobsCompanyEmployeeConverter.java b/src/java/org/mxchange/jjobs/converter/business/company_employee/JobsCompanyEmployeeConverter.java
index 0dba0f04..b7761d71 100644
--- a/src/java/org/mxchange/jjobs/converter/business/company_employee/JobsCompanyEmployeeConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/business/company_employee/JobsCompanyEmployeeConverter.java
@@ -49,7 +49,7 @@ public class JobsCompanyEmployeeConverter implements Converter<Employee> {
 		if (COMPANY_EMPLOYEE_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				COMPANY_EMPLOYEE_BEAN = (CompanyEmployeeSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/companyEmployee!org.mxchange.jcontactsbusiness.employee.CompanyEmployeeSessionBeanRemote");
@@ -73,7 +73,7 @@ public class JobsCompanyEmployeeConverter implements Converter<Employee> {
 
 		try {
 			// Try to parse the value as long
-			Long employeeId = Long.valueOf(submittedValue);
+			final Long employeeId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
 			companyEmployee = COMPANY_EMPLOYEE_BEAN.findCompanyEmployeeById(employeeId);
diff --git a/src/java/org/mxchange/jjobs/converter/business/headquarters/JobsCompanyHeadquartersConverter.java b/src/java/org/mxchange/jjobs/converter/business/headquarters/JobsCompanyHeadquartersConverter.java
index 64e770eb..31c563d2 100644
--- a/src/java/org/mxchange/jjobs/converter/business/headquarters/JobsCompanyHeadquartersConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/business/headquarters/JobsCompanyHeadquartersConverter.java
@@ -49,7 +49,7 @@ public class JobsCompanyHeadquartersConverter implements Converter<HeadquartersD
 		if (COMPANY_HEADQUARTERS_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				COMPANY_HEADQUARTERS_BEAN = (CompanyHeadquartersSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/companyEmployee!org.mxchange.jcontactsbusiness.headquarters.CompanyHeadquartersSessionBeanRemote");
@@ -73,7 +73,7 @@ public class JobsCompanyHeadquartersConverter implements Converter<HeadquartersD
 
 		try {
 			// Try to parse the value as long
-			Long headquartersId = Long.valueOf(submittedValue);
+			final Long headquartersId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
 			companyHeadquarters = COMPANY_HEADQUARTERS_BEAN.findCompanyHeadquartersById(headquartersId);
diff --git a/src/java/org/mxchange/jjobs/converter/contact/JobsContactConverter.java b/src/java/org/mxchange/jjobs/converter/contact/JobsContactConverter.java
index 446a5a2e..8671a40c 100644
--- a/src/java/org/mxchange/jjobs/converter/contact/JobsContactConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/contact/JobsContactConverter.java
@@ -49,7 +49,7 @@ public class JobsContactConverter implements Converter<Contact> {
 		if (CONTACT_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				CONTACT_BEAN = (ContactSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote");
@@ -73,10 +73,10 @@ public class JobsContactConverter implements Converter<Contact> {
 
 		try {
 			// Try to parse the value as long
-			Long contactId = Long.valueOf(submittedValue);
+			final Long contactId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
-			contact = this.CONTACT_BEAN.findContactById(contactId);
+			contact = CONTACT_BEAN.findContactById(contactId);
 		} catch (final NumberFormatException ex) {
 			// Throw again
 			throw new ConverterException(ex);
diff --git a/src/java/org/mxchange/jjobs/converter/country/JobsCountryConverter.java b/src/java/org/mxchange/jjobs/converter/country/JobsCountryConverter.java
index 0ab11920..2f43fc72 100644
--- a/src/java/org/mxchange/jjobs/converter/country/JobsCountryConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/country/JobsCountryConverter.java
@@ -50,7 +50,7 @@ public class JobsCountryConverter implements Converter<Country> {
 		if (COUNTRY_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				COUNTRY_BEAN = (CountrySingletonBeanRemote) initial.lookup("java:global/jjobs-ejb/country!org.mxchange.jcountry.data.CountrySingletonBeanRemote");
@@ -70,7 +70,7 @@ public class JobsCountryConverter implements Converter<Country> {
 		}
 
 		// Get full list
-		List<Country> countryList = COUNTRY_BEAN.allCountries();
+		final List<Country> countryList = COUNTRY_BEAN.allCountries();
 
 		// Init value
 		Country country = null;
@@ -78,7 +78,7 @@ public class JobsCountryConverter implements Converter<Country> {
 		// Try this better
 		try {
 			// Convert it to long
-			Long countryId = Long.parseLong(submittedValue);
+			final Long countryId = Long.parseLong(submittedValue);
 
 			// Category id should not be below 1
 			assert (countryId > 0) : "countryId is smaller than one: " + countryId; //NOI18N
diff --git a/src/java/org/mxchange/jjobs/converter/fax/JobsFaxNumberConverter.java b/src/java/org/mxchange/jjobs/converter/fax/JobsFaxNumberConverter.java
index ebfaeeb6..a006dd43 100644
--- a/src/java/org/mxchange/jjobs/converter/fax/JobsFaxNumberConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/fax/JobsFaxNumberConverter.java
@@ -49,7 +49,7 @@ public class JobsFaxNumberConverter implements Converter<DialableFaxNumber> {
 		if (PHONE_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				PHONE_BEAN = (PhoneSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote");
@@ -76,7 +76,7 @@ public class JobsFaxNumberConverter implements Converter<DialableFaxNumber> {
 
 		try {
 			// Try to parse the value as long
-			Long faxNumberId = Long.valueOf(submittedValue);
+			final Long faxNumberId = Long.valueOf(submittedValue);
 
 			// Log message
 			// @TODO Not possible here: this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject: faxNumberId={1}", this.getClass().getSimpleName(), faxNumberId)); //NOI18N
diff --git a/src/java/org/mxchange/jjobs/converter/landline/JobsLandLineNumberConverter.java b/src/java/org/mxchange/jjobs/converter/landline/JobsLandLineNumberConverter.java
index ec321022..362e2a1b 100644
--- a/src/java/org/mxchange/jjobs/converter/landline/JobsLandLineNumberConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/landline/JobsLandLineNumberConverter.java
@@ -49,7 +49,7 @@ public class JobsLandLineNumberConverter implements Converter<DialableLandLineNu
 		if (PHONE_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				PHONE_BEAN = (PhoneSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote");
@@ -73,7 +73,7 @@ public class JobsLandLineNumberConverter implements Converter<DialableLandLineNu
 
 		try {
 			// Try to parse the value as long
-			Long landLineNumberId = Long.valueOf(submittedValue);
+			final Long landLineNumberId = Long.valueOf(submittedValue);
 
 			// Try to get mobile instance from it
 			landLineNumber = PHONE_BEAN.findLandLineNumberById(landLineNumberId);
diff --git a/src/java/org/mxchange/jjobs/converter/mobile/JobsMobileNumberConverter.java b/src/java/org/mxchange/jjobs/converter/mobile/JobsMobileNumberConverter.java
index 0bcec127..006b111f 100644
--- a/src/java/org/mxchange/jjobs/converter/mobile/JobsMobileNumberConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/mobile/JobsMobileNumberConverter.java
@@ -49,7 +49,7 @@ public class JobsMobileNumberConverter implements Converter<DialableMobileNumber
 		if (PHONE_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				PHONE_BEAN = (PhoneSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote");
@@ -73,7 +73,7 @@ public class JobsMobileNumberConverter implements Converter<DialableMobileNumber
 
 		try {
 			// Try to parse the value as long
-			Long mobileNumberId = Long.valueOf(submittedValue);
+			final Long mobileNumberId = Long.valueOf(submittedValue);
 
 			// Try to get mobile instance from it
 			mobileNumber = PHONE_BEAN.findMobileNumberById(mobileNumberId);
diff --git a/src/java/org/mxchange/jjobs/converter/mobileprovider/JobsMobileProviderConverter.java b/src/java/org/mxchange/jjobs/converter/mobileprovider/JobsMobileProviderConverter.java
index e1642233..7a33140c 100644
--- a/src/java/org/mxchange/jjobs/converter/mobileprovider/JobsMobileProviderConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/mobileprovider/JobsMobileProviderConverter.java
@@ -49,7 +49,7 @@ public class JobsMobileProviderConverter implements Converter<MobileProvider> {
 		if (MOBILE_PROVIDER_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				MOBILE_PROVIDER_BEAN = (MobileProviderSingletonBeanRemote) initial.lookup("java:global/jfinancials-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote");
@@ -69,7 +69,7 @@ public class JobsMobileProviderConverter implements Converter<MobileProvider> {
 		}
 
 		// Get full list
-		List<MobileProvider> providerList = this.MOBILE_PROVIDER_BEAN.allMobileProviders();
+		final List<MobileProvider> providerList = MOBILE_PROVIDER_BEAN.allMobileProviders();
 
 		// Init value
 		MobileProvider provider = null;
@@ -77,7 +77,7 @@ public class JobsMobileProviderConverter implements Converter<MobileProvider> {
 		// Try this better
 		try {
 			// Convert it to long
-			Long providerId = Long.parseLong(submittedValue);
+			final Long providerId = Long.parseLong(submittedValue);
 
 			// Category id should not be below 1
 			assert (providerId > 0) : "providerId is smaller than one: " + providerId; //NOI18N
diff --git a/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java b/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java
index 49226c81..1cec07f3 100644
--- a/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java
+++ b/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java
@@ -48,7 +48,7 @@ public class JobsUserConverter implements Converter<User> {
 		if (USER_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				USER_BEAN = (UserSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote");
@@ -72,7 +72,7 @@ public class JobsUserConverter implements Converter<User> {
 
 		try {
 			// Try to parse the value as long
-			Long userId = Long.valueOf(submittedValue);
+			final Long userId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
 			user = USER_BEAN.findUserById(userId);
diff --git a/src/java/org/mxchange/jjobs/validator/birthday/JobsBirthdayValidator.java b/src/java/org/mxchange/jjobs/validator/birthday/JobsBirthdayValidator.java
index 14d7603f..d50c1ddd 100644
--- a/src/java/org/mxchange/jjobs/validator/birthday/JobsBirthdayValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/birthday/JobsBirthdayValidator.java
@@ -39,13 +39,13 @@ public class JobsBirthdayValidator extends BaseDateValidator {
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
 		// All accepted, required fields
-		String[] requiredFields = {"birthday", "contactBirthday"}; //NOI18N
+		final String[] requiredFields = {"birthday", "contactBirthday"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
 		super.preValidate(context, component, value, requiredFields, false);
 
 		// Cast value
-		Date birthday = (Date) value;
+		final Date birthday = (Date) value;
 
 		// @TODO Finish this, e.g. load maximum,minimum birthday from properties file
 	}
diff --git a/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java b/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java
index c8f5d031..c8182da6 100644
--- a/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java
@@ -52,7 +52,7 @@ public class JobsCompanyNameValidator extends BaseStringValidator {
 		if (BASIC_DATA_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				BASIC_DATA_BEAN = (BusinessDataSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/businessData!org.mxchange.jcontactsbusiness.basicdata.BusinessDataSessionBeanRemote");
@@ -63,13 +63,13 @@ public class JobsCompanyNameValidator extends BaseStringValidator {
 		}
 
 		// All accepted, required fields
-		String[] requiredFields = {"companyName"}; //NOI18N
+		final String[] requiredFields = {"companyName"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
 		super.preValidate(context, component, value, requiredFields, false);
 
 		// Convert name to string (now securely checked in BaseStringValidator)
-		String companyName = (String) value;
+		final String companyName = (String) value;
 
 		// Default is to check on existing names
 		Boolean checkExisting = Boolean.TRUE;
@@ -77,7 +77,7 @@ public class JobsCompanyNameValidator extends BaseStringValidator {
 		// Is attribute "allowEmptyValue" set?
 		if (component.getAttributes().containsKey("checkExisting")) { //NOI18N
 			// Get attribute
-			Object attribute = component.getAttributes().get("checkExisting"); //NOI18N
+			final Object attribute = component.getAttributes().get("checkExisting"); //NOI18N
 
 			// Make sure, it is Boolean as no String is accepted anymore
 			if (!(attribute instanceof String)) {
@@ -90,18 +90,18 @@ public class JobsCompanyNameValidator extends BaseStringValidator {
 		}
 
 		// Check if name is already used
-		Boolean nameExists = BASIC_DATA_BEAN.isCompanyNameUsed(companyName);
+		final Boolean nameExists = BASIC_DATA_BEAN.isCompanyNameUsed(companyName);
 
 		// Is the user id valid?
 		if ((!nameExists) && (checkExisting)) {
 			// Format message
-			String message = MessageFormat.format("No basic data found with comany name {0}.", companyName);
+			final String message = MessageFormat.format("No basic data found with comany name {0}.", companyName);
 
 			// Name does not exist
 			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message)); //NOI18N
 		} else if ((nameExists) && (!checkExisting)) {
 			// Format message
-			String message = MessageFormat.format("Found basic data with comany name {0}.", companyName);
+			final String message = MessageFormat.format("Found basic data with comany name {0}.", companyName);
 
 			// Name already exists
 			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message)); //NOI18N
diff --git a/src/java/org/mxchange/jjobs/validator/emailaddress/JobsEmailAddressValidator.java b/src/java/org/mxchange/jjobs/validator/emailaddress/JobsEmailAddressValidator.java
index 1b015ccc..a56f4069 100644
--- a/src/java/org/mxchange/jjobs/validator/emailaddress/JobsEmailAddressValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/emailaddress/JobsEmailAddressValidator.java
@@ -63,7 +63,7 @@ public class JobsEmailAddressValidator extends BaseStringValidator {
 		if (CONTACT_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				CONTACT_BEAN = (ContactSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote");
@@ -73,9 +73,8 @@ public class JobsEmailAddressValidator extends BaseStringValidator {
 			}
 		}
 
-		System.out.println(this.getClass().getSimpleName() + ".validate(): component.clientId=" + component.getClientId());
 		// The required field
-		String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
+		final String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
 
 		// Default is to reject empty email address fields
 		Boolean allowEmptyValue = Boolean.FALSE;
@@ -83,8 +82,7 @@ public class JobsEmailAddressValidator extends BaseStringValidator {
 		// Is attribute "allowEmptyValue" set?
 		if (component.getAttributes().containsKey("allowEmptyValue")) { //NOI18N
 			// Get attribute
-			Object attribute = component.getAttributes().get("allowEmptyValue"); //NOI18N
-			System.out.println(this.getClass().getSimpleName() + ".validate():attribute=" + attribute);
+			final Object attribute = component.getAttributes().get("allowEmptyValue"); //NOI18N
 
 			// Make sure, it is Boolean as no String is accepted anymore
 			if (!(attribute instanceof String)) {
@@ -95,7 +93,6 @@ public class JobsEmailAddressValidator extends BaseStringValidator {
 			// Securely cast it
 			allowEmptyValue = Boolean.parseBoolean((String) attribute);
 		}
-		System.out.println(this.getClass().getSimpleName() + ".validate(): allowEmptyValue=" + allowEmptyValue);
 
 		// Pre-validation (example: not null, not a string, empty string ...)
 		super.preValidate(context, component, value, requiredFields, allowEmptyValue);
@@ -111,11 +108,11 @@ public class JobsEmailAddressValidator extends BaseStringValidator {
 
 		// Get string from object ... ;-)
 		// @TODO Add IDN support (GNU lib?) Search for emailAddressRepeat
-		String emailAddress = String.valueOf(value).trim();
+		final String emailAddress = String.valueOf(value).trim();
 
 		// Checks if the email address matches a regex ("low-level" check)
 		// @TODO Should also be done by <f:validatorRegex />)
-		boolean matches = PATTERN_MATCHER.matcher(emailAddress).matches(); //NOI18N
+		final boolean matches = PATTERN_MATCHER.matcher(emailAddress).matches(); //NOI18N
 
 		// Is the email address valid?
 		if (!matches) {
@@ -127,21 +124,21 @@ public class JobsEmailAddressValidator extends BaseStringValidator {
 		}
 
 		// Get client id (aka form id)
-		String clientId = component.getClientId();
+		final String clientId = component.getClientId();
 
 		// Is it registered?
-		Boolean isRegistered = CONTACT_BEAN.isEmailAddressRegistered(emailAddress);
+		final Boolean isRegistered = CONTACT_BEAN.isEmailAddressRegistered(emailAddress);
 
 		// Is the email address already registered?
 		if ((!clientId.endsWith("resendEmailAddress")) && (isRegistered)) { //NOI18N
 			// Generate message
-			String message = MessageFormat.format("Email address {0} is already registered.", emailAddress); //NOI18N
+			final String message = MessageFormat.format("Email address {0} is already registered.", emailAddress); //NOI18N
 
 			// No, then abort here
 			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));
 		} else if ((clientId.endsWith("resendEmailAddress")) && (!isRegistered)) { //NOI18N
 			// Generate message
-			String message = MessageFormat.format("Email address {0} is not registered.", emailAddress); //NOI18N
+			final String message = MessageFormat.format("Email address {0} is not registered.", emailAddress); //NOI18N
 
 			// No, then abort here
 			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));
diff --git a/src/java/org/mxchange/jjobs/validator/names/JobsNameValidator.java b/src/java/org/mxchange/jjobs/validator/names/JobsNameValidator.java
index 33e6d92f..3482a4db 100644
--- a/src/java/org/mxchange/jjobs/validator/names/JobsNameValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/names/JobsNameValidator.java
@@ -38,7 +38,7 @@ public class JobsNameValidator extends BaseStringValidator {
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
 		// All accepted, required fields
-		String[] requiredFields = {"firstName", "familyName", "city", "street", "addressbookName"}; //NOI18N
+		final String[] requiredFields = {"firstName", "familyName", "city", "street", "addressbookName"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
 		super.preValidate(context, component, value, requiredFields, false);
diff --git a/src/java/org/mxchange/jjobs/validator/password/JobsUserPasswordValidator.java b/src/java/org/mxchange/jjobs/validator/password/JobsUserPasswordValidator.java
index 23504acd..f2bce2ba 100644
--- a/src/java/org/mxchange/jjobs/validator/password/JobsUserPasswordValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/password/JobsUserPasswordValidator.java
@@ -56,7 +56,7 @@ public class JobsUserPasswordValidator extends BaseStringValidator {
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
 		// The required field
-		String[] requiredFields = {"currentPassword"}; //NOI18N
+		final String[] requiredFields = {"currentPassword"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
 		super.preValidate(context, component, value, requiredFields, false);
diff --git a/src/java/org/mxchange/jjobs/validator/phone/abroad/JobsAbroadDialValidator.java b/src/java/org/mxchange/jjobs/validator/phone/abroad/JobsAbroadDialValidator.java
index 4ec4715f..40b31102 100644
--- a/src/java/org/mxchange/jjobs/validator/phone/abroad/JobsAbroadDialValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/phone/abroad/JobsAbroadDialValidator.java
@@ -40,20 +40,20 @@ public class JobsAbroadDialValidator extends BaseNumberValidator {
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
 		// The required field
-		String[] requiredFields = {"countryAbroadDialPrefix"}; //NOI18N
+		final String[] requiredFields = {"countryAbroadDialPrefix"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
 		super.preValidate(context, component, value, requiredFields, true);
 
 		// Parse value as string first
-		String dialNumber = String.valueOf(value);
+		final String dialNumber = String.valueOf(value);
 
 		// Is it not +?
 		if (!dialNumber.equals("+")) { //NOI18N
 			// No, then try to ...
 			try {
 				// ..parse as number
-				Long number = Long.parseLong(dialNumber);
+				final Long number = Long.parseLong(dialNumber);
 
 				// Not valid range? (1 - 99, very rude)
 				if (number < 1 || number > 99) {
diff --git a/src/java/org/mxchange/jjobs/validator/phone/number/JobsPhoneNumberValidator.java b/src/java/org/mxchange/jjobs/validator/phone/number/JobsPhoneNumberValidator.java
index 9a6a349b..ca3c8447 100644
--- a/src/java/org/mxchange/jjobs/validator/phone/number/JobsPhoneNumberValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/phone/number/JobsPhoneNumberValidator.java
@@ -38,7 +38,7 @@ public class JobsPhoneNumberValidator extends BaseNumberValidator {
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
 		// The required field
-		String[] requiredFields = {"landLineAreaCode", "landLineNumber", "faxAreaCode", "faxNumber", "mobileNumber"}; //NOI18N
+		final String[] requiredFields = {"landLineAreaCode", "landLineNumber", "faxAreaCode", "faxNumber", "mobileNumber"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
 		super.preValidate(context, component, value, requiredFields, true);
diff --git a/src/java/org/mxchange/jjobs/validator/privacy_terms/JobsPrivacyTermsCheckboxValidator.java b/src/java/org/mxchange/jjobs/validator/privacy_terms/JobsPrivacyTermsCheckboxValidator.java
index 0d45572e..489e75bf 100644
--- a/src/java/org/mxchange/jjobs/validator/privacy_terms/JobsPrivacyTermsCheckboxValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/privacy_terms/JobsPrivacyTermsCheckboxValidator.java
@@ -38,7 +38,7 @@ public class JobsPrivacyTermsCheckboxValidator extends BaseBooleanValidator {
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
 		// All accepted, required fields
-		String[] requiredFields = {"privacy", "terms"}; //NOI18N
+		final String[] requiredFields = {"privacy", "terms"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
 		super.preValidate(context, component, value, requiredFields, false);
diff --git a/src/java/org/mxchange/jjobs/validator/url/JobsUrlValidator.java b/src/java/org/mxchange/jjobs/validator/url/JobsUrlValidator.java
index 9afaf9de..44139747 100644
--- a/src/java/org/mxchange/jjobs/validator/url/JobsUrlValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/url/JobsUrlValidator.java
@@ -52,7 +52,7 @@ public class JobsUrlValidator extends BaseStringValidator {
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
 		// The required field
-		String[] requiredFields = {"companyWebsiteUrl"}; //NOI18N
+		final String[] requiredFields = {"companyWebsiteUrl"}; //NOI18N
 
 		// Default is to reject empty email address fields
 		Boolean allowEmptyValue = Boolean.FALSE;
@@ -85,11 +85,11 @@ public class JobsUrlValidator extends BaseStringValidator {
 		}
 
 		// Get string from object ... ;-)
-		String url = String.valueOf(value).trim();
+		final String url = String.valueOf(value).trim();
 
 		// Checks if the email address matches a regex ("low-level" check)
 		// @TODO Should also be done by <f:validatorRegex />)
-		boolean matches = PATTERN_MATCHER.matcher(url).matches(); //NOI18N
+		final boolean matches = PATTERN_MATCHER.matcher(url).matches(); //NOI18N
 
 		// Is the email address valid?
 		if (!matches) {
diff --git a/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java b/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java
index d005666f..0ea17f73 100644
--- a/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java
+++ b/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java
@@ -52,7 +52,7 @@ public class JobsUserIdValidator extends BaseNumberValidator {
 		if (USER_BEAN == null) {
 			try {
 				// Not yet, attempt lookup
-				Context initial = new InitialContext();
+				final Context initial = new InitialContext();
 
 				// Lookup EJB
 				USER_BEAN = (UserSessionBeanRemote) initial.lookup("java:global/jjobs-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote");
@@ -63,16 +63,16 @@ public class JobsUserIdValidator extends BaseNumberValidator {
 		}
 
 		// All accepted, required fields
-		String[] requiredFields = {"userId"}; //NOI18N
+		final String[] requiredFields = {"userId"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
 		super.preValidate(context, component, value, requiredFields, false);
 
 		// Cast value
-		Long userId = (Long) value;
+		final Long userId = (Long) value;
 
 		// Define variable
-		Boolean ifUserExists = USER_BEAN.ifUserIdExists(userId);
+		final Boolean ifUserExists = USER_BEAN.ifUserIdExists(userId);
 
 		// Is the user id valid?
 		if (!ifUserExists) {
diff --git a/src/java/org/mxchange/localization/bundle_de_DE.properties b/src/java/org/mxchange/localization/bundle_de_DE.properties
index b7fa6ec9..bfe9b034 100644
--- a/src/java/org/mxchange/localization/bundle_de_DE.properties
+++ b/src/java/org/mxchange/localization/bundle_de_DE.properties
@@ -61,13 +61,13 @@ PERSONAL_DATA_MINIMUM_NOTICE=Bitte geben Sie mindestens Name, Anschrift und Tele
 PERSONAL_DATA_PERSONAL_TITLE=Anrede:
 PERSONAL_DATA_FIRST_NAME=Vorname:
 PERSONAL_DATA_FAMILY_NAME=Nachname:
-PERSONAL_DATA_STREET=Stra\u00dfe:
-PERSONAL_DATA_HOUSE_NUMBER=Hausnummer:
-PERSONAL_DATA_ZIP_CODE=Postleitzahl:
+DATA_STREET_NAME=Stra\u00dfe:
+DATA_HOUSE_NUMBER=Hausnummer:
+DATA_ZIP_CODE=Postleitzahl:
 PERSONAL_DATA_PHONE_NUMBER=Telefon:
 PERSONAL_DATA_FAX_NUMBER=Faxnummer:
 PERSONAL_DATA_MOBILE_NUMBER=Mobil:
-PERSONAL_DATA_CITY=Ort:
+DATA_CITY=Ort:
 PERSONAL_DATA_LEGEND_TITLE=Bitte geben Sie Ihre Daten ein.
 PERSONAL_DATA_LEGEND=Bitte Ihre Daten eingeben:
 PAGE_TITLE_USER_LOGIN=Einloggen
@@ -264,11 +264,11 @@ ADMIN_CONTACT_PERSONAL_DATA_LEGEND_TITLE=Geben Sie hier die pers\u00f6nlichen Da
 ADMIN_PERSONAL_DATA_PERSONAL_TITLE=Anrede ausw\u00e4hlen:
 ADMIN_PERSONAL_DATA_FIRST_NAME=Vorname:
 ADMIN_PERSONAL_DATA_FAMILY_NAME=Familienname:
-ADMIN_PERSONAL_DATA_STREET=Strassenname:
-ADMIN_PERSONAL_DATA_HOUSE_NUMBER=Hausnummer:
-ADMIN_PERSONAL_DATA_ZIP_CODE=Postleitzahl:
-ADMIN_PERSONAL_DATA_CITY=Wohnort:
-ADMIN_PERSONAL_DATA_COUNTRY_CODE=Land ausw\u00e4hlen:
+ADMIN_DATA_STREET_NAME=Strassenname:
+ADMIN_DATA_HOUSE_NUMBER=Hausnummer:
+ADMIN_DATA_ZIP_CODE=Postleitzahl:
+ADMIN_DATA_CITY=Wohnort:
+ADMIN_SELECT_COUNTRY=Land ausw\u00e4hlen:
 ADMIN_PERSONAL_DATA_PHONE_NUMBER=Telefonnummer:
 ADMIN_PERSONAL_DATA_FAX_NUMBER=Faxnummer:
 ADMIN_PERSONAL_DATA_MOBILE_NUMBER=Handynummer:
@@ -566,8 +566,8 @@ LOGIN_USER_LOGOUT_TITLE=Aus Benutzerbereich ausloggen?
 LOGIN_USER_LOGOUT_NOTICE=M\u00f6chten Sie sich aus dem Benutzerbereich ausloggen? Dies sollten Sie immer an einem Rechner tun, den auch andere nutzen (z.B. Internetcafe).
 BUTTON_USER_LOGOUT=Ausloggen
 ADMIN_CONTACT_HOUSE_NUMBER_EXTENSION=Hausnummererweiterung:
-ADMIN_PERSONAL_DATA_HOUSE_NUMBER_EXTENSION=Hausnummererweiterung:
-PERSONAL_DATA_HOUSE_NUMBER_EXTENSION=Anhang:
+ADMIN_DATA_HOUSE_NUMBER_EXTENSION=Hausnummererweiterung:
+DATA_HOUSE_NUMBER_EXTENSION=Anhang:
 ERROR_PARAMETER_FILE_TYPE_NOT_SET=Fehler: Parameter 'fileType' nicht gesetzt.
 ADMIN_COUNTRY_PHONE_CODE_REQUIRED=Bitte geben Sie die Vorwahl dieses Landes ein (z.B. 49 f\u00fcr Deutschland).
 ADMIN_COUNTRY_EXTERNAL_DIAL_PREFIX_REQUIRED=Bitte geben Sie die Vorwahl f\u00fcr Gespr\u00e4che ausserhalb des Ortes ein (meistens 0).
@@ -804,45 +804,45 @@ GUEST_REGISTRATION_PASSWORD_NOT_ENTERED=Bitte geben Sie ein Passwort ein. Dies m
 GUEST_REGISTRATION_PASSWORD_REPEAT_NOT_ENTERED=Bitte wiederholen Sie das eingegebene Passwort. Dies wird zur Bestaetigung benoetigt.
 PAGE_TITLE_ADMIN_AREA=Administration
 #@TODO Please fix German umlauts!
-ADMIN_MENU_BUSINESS_BASIC_DATA_TITLE=Geschaeftliche Kontakte
-LINK_ADMIN_LIST_BUSINESS_BASIC_DATA=Stammdaten auflisten
-LINK_ADMIN_LIST_BUSINESS_BASIC_DATA_TITLE=Listet Stammdaten auf
-LINK_ADMIN_EXPORT_BUSINESS_BASIC_DATA=Stammdaten exportieren
-LINK_ADMIN_EXPORT_BUSINESS_BASIC_DATA_TITLE=Exportiert Stammdaten
-PAGE_TITLE_ADMIN_LIST_BUSINESS_BASIC_DATA=Stammdaten auflisten
+ADMIN_MENU_BUSINESS_CONTACTS_TITLE=Geschaeftliche Kontakte
+LINK_ADMIN_LIST_BASIC_COMPANY_DATA=Stammdaten auflisten
+LINK_ADMIN_LIST_BASIC_COMPANY_DATA_TITLE=Listet Stammdaten auf
+LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA=Stammdaten exportieren
+LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA_TITLE=Exportiert Stammdaten
+PAGE_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA=Stammdaten auflisten
 #@TODO Please fix German umlauts!
-CONTENT_TITLE_ADMIN_LIST_BUSINESS_BASIC_DATA=Auflisten von Stammdaten
+CONTENT_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA=Auflisten von Stammdaten
 #@TODO Please fix German umlauts!
-ADMIN_BUSINESS_BASIC_DATA_LIST_EMPTY=Es befinden sich keine Stammdaten in der Datenbank.
+ADMIN_BASIC_COMPANY_DATA_LIST_EMPTY=Es befinden sich keine Stammdaten in der Datenbank.
 #@TODO Please fix German umlauts!
-TABLE_SUMMARY_ADMIN_LIST_BUSINESS_BASIC_DATA=Tabelle listet Stammdaten auf.
-ADMIN_BUSINESS_BASIC_DATA_ID=Id-Nummer:
+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_BUSINESS_BASIC_DATA_OWNER_ID=Zugew. Benutzer:
-ADMIN_LINK_SHOW_BUSINESS_BASIC_DATA_OWNER_USER_TITLE=Benutzerprofil des zugewiesenen Benutzers anzeigen.
+ADMIN_BASIC_COMPANY_DATA_OWNER_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_BUSINESS_BASIC_DATA_OWNER_USER_TITLE=Stammdaten einen Benutzeraccount zuweisen.
-ADMIN_BUSINESS_BASIC_DATA_COMPANY_NAME=Firmenname:
-ADMIN_BUSINESS_BASIC_DATA_CONTACT_PERSON=Ansprechpartner:
-ADMIN_LINK_SHOW_BUSINESS_BASIC_DATA_CONTACT_PERSON_TITLE=Zeigt einen Mitarbeiter an, der als Ansprechpartner eingetragen ist.
-ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_CONTACT_PERSON=Zuweisen
+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_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_BUSINESS_BASIC_DATA_CONTACT_PERSON_TITLE=Weisst einen Mitarbeiter als Ansprechpartner des geschaftlichen Kontaktes zu.
+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:
 #@TODO Please fix German umlauts!
-ADMIN_ADD_BUSINESS_BASIC_DATA_TITLE=Neuen geschaeftlichen Kontakt hinzufuegen
-ADMIN_ADD_BUSINESS_BASIC_DATA_MINIMUM_DATA=Bitte mindestens Firmennamen inklusive Rechtsform ein.
+ADMIN_ADD_BASIC_COMPANY_DATA_TITLE=Neuen geschaeftlichen Kontakt hinzufuegen
+ADMIN_ADD_BASIC_COMPANY_DATA_MINIMUM_DATA=Bitte mindestens Firmennamen inklusive Rechtsform ein.
 #@TODO Please fix German umlauts!
 ENTERED_EMAIL_ADDRESS_IS_INVALID=Die eingegebene Email-Addresse entspricht nicht dem gueltigen Format.
 #@TODO Please fix German umlauts!
-ADMIN_BUSINESS_BASIC_DATA_LEGEND=Basisdaten fuer geschaeftlichen Kontakt:
+ADMIN_BASIC_COMPANY_DATA_LEGEND=Basisdaten fuer geschaeftlichen Kontakt:
 #@TODO Please fix German umlauts!
-ADMIN_BUSINESS_BASIC_DATA_LEGEND_TITLE=Geben Sie die Basisdaten fuer einen geschaeftlichen Kontakt ein.
+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):
@@ -870,11 +870,20 @@ ADMIN_SELECT_BUSINESS_DATA_COMPANY_CONTACT_EMPLOYEE=Mitarbeiter als Kontaktperso
 ADMIN_SELECT_BUSINESS_DATA_COMPANY_HEADQUARTERS=Daten des Hauptsitzesz auswaehlen:
 LINK_COMPANY_WEBSITE_URL_TITLE=Zur Unternehmenswebseite (neues Fenster) surfen
 #@TODO Please fix German umlauts!
-ADMIN_BUSINESS_BASIC_DATA_COMPANY_FOUNDER=Gruender
+ADMIN_BASIC_COMPANY_DATA_COMPANY_FOUNDER=Gruender
 #@TODO Please fix German umlauts!
-ADMIN_LINK_SHOW_BUSINESS_BASIC_DATA_COMPANY_FOUNDER_TITLE=Daten des Unternehmensgruenders anzeigen.
+ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_COMPANY_FOUNDER_TITLE=Daten des Unternehmensgruenders anzeigen.
 #@TODO Please fix German umlauts!
-ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_COMPANY_FOUNDER_TITLE=Weisst diesem Firmeneintrag einen Unternehmensgruender zu.
-ADMIN_BUSINESS_BASIC_DATA_CREATED=Eintrag erstellt
+ADMIN_LINK_ASSIGN_BASIC_COMPANY_DATA_COMPANY_FOUNDER_TITLE=Weisst diesem Firmeneintrag einen Unternehmensgruender zu.
+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_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:
+#@TODO Please fix German umlauts!
+ADMIN_BRANCH_OFFICE_LEGEND_TITLE=Geben Sie hier die Grunddaten der Filiale ein.
+ADMIN_SELECT_BRANCH_OFFICE_COMPANY=Filiale einem Unternehmen zuweisen:
diff --git a/src/java/org/mxchange/localization/bundle_en_US.properties b/src/java/org/mxchange/localization/bundle_en_US.properties
index 41d67ade..2f2f3dd0 100644
--- a/src/java/org/mxchange/localization/bundle_en_US.properties
+++ b/src/java/org/mxchange/localization/bundle_en_US.properties
@@ -61,13 +61,13 @@ PERSONAL_DATA_MINIMUM_NOTICE=Please enter at least your name, address and phone
 PERSONAL_DATA_PERSONAL_TITLE=Salutation:
 PERSONAL_DATA_FIRST_NAME=First name:
 PERSONAL_DATA_FAMILY_NAME=Family name:
-PERSONAL_DATA_STREET=Street:
-PERSONAL_DATA_HOUSE_NUMBER=House number:
-PERSONAL_DATA_ZIP_CODE=ZIP code:
+DATA_STREET_NAME=Street:
+DATA_HOUSE_NUMBER=House number:
+DATA_ZIP_CODE=ZIP code:
 PERSONAL_DATA_PHONE_NUMBER=Phone:
 PERSONAL_DATA_FAX_NUMBER=Fax:
 PERSONAL_DATA_MOBILE_NUMBER=Mobile:
-PERSONAL_DATA_CITY=City:
+DATA_CITY=City:
 PERSONAL_DATA_LEGEND_TITLE=Please enter your data.
 PERSONAL_DATA_LEGEND=Please enter your data:
 PAGE_TITLE_USER_LOGIN=Login
@@ -251,11 +251,11 @@ ADMIN_CONTACT_PERSONAL_DATA_LEGEND_TITLE=Here you can enter the personal data of
 ADMIN_PERSONAL_DATA_PERSONAL_TITLE=Select title:
 ADMIN_PERSONAL_DATA_FIRST_NAME=First name:
 ADMIN_PERSONAL_DATA_FAMILY_NAME=Family name:
-ADMIN_PERSONAL_DATA_STREET=Name of street:
-ADMIN_PERSONAL_DATA_HOUSE_NUMBER=House number:
-ADMIN_PERSONAL_DATA_ZIP_CODE=ZIP code:
-ADMIN_PERSONAL_DATA_CITY=City:
-ADMIN_PERSONAL_DATA_COUNTRY_CODE=Select country:
+ADMIN_DATA_STREET_NAME=Name of street:
+ADMIN_DATA_HOUSE_NUMBER=House number:
+ADMIN_DATA_ZIP_CODE=ZIP code:
+ADMIN_DATA_CITY=City:
+ADMIN_SELECT_COUNTRY=Select country:
 ADMIN_PERSONAL_DATA_PHONE_NUMBER=Phone number:
 ADMIN_PERSONAL_DATA_FAX_NUMBER=Fax number:
 ADMIN_PERSONAL_DATA_MOBILE_NUMBER=Mobile number:
@@ -562,8 +562,8 @@ LOGIN_USER_LOGOUT_TITLE=Logout from user area?
 LOGIN_USER_LOGOUT_NOTICE=Do you want to logout from user area? You should always do this when you share the same computer with others (e.g. Internet cafe).
 BUTTON_USER_LOGOUT=Logout
 ADMIN_CONTACT_HOUSE_NUMBER_EXTENSION=House number extension:
-ADMIN_PERSONAL_DATA_HOUSE_NUMBER_EXTENSION=House number extension:
-PERSONAL_DATA_HOUSE_NUMBER_EXTENSION=Extension:
+ADMIN_DATA_HOUSE_NUMBER_EXTENSION=House number extension:
+DATA_HOUSE_NUMBER_EXTENSION=Extension:
 ERROR_PARAMETER_FILE_TYPE_NOT_SET=Error: Parameter 'fileType' is not set.
 ADMIN_COUNTRY_PHONE_CODE_REQUIRED=Please enter dial prefix for this country (e.g. 1 for U.S.A.).
 ADMIN_COUNTRY_EXTERNAL_DIAL_PREFIX_REQUIRED=Please enter dial prefix for calls outside the current city.
@@ -798,36 +798,36 @@ GUEST_REGISTRATION_USER_PASSWORDS_EMPTY_NOT_ALLOWED=You have to enter an own pas
 GUEST_REGISTRATION_PASSWORD_NOT_ENTERED=Please enter a password. This must match with security rules.
 GUEST_REGISTRATION_PASSWORD_REPEAT_NOT_ENTERED=Please repeat the entered password. This done to confirm the password.
 PAGE_TITLE_ADMIN_AREA=Administration
-ADMIN_MENU_BUSINESS_BASIC_DATA_TITLE=Business contacts
-LINK_ADMIN_LIST_BUSINESS_BASIC_DATA=List basic company data
-LINK_ADMIN_LIST_BUSINESS_BASIC_DATA_TITLE=Lists basic company data
-LINK_ADMIN_EXPORT_BUSINESS_BASIC_DATA=Export basic company data
-LINK_ADMIN_EXPORT_BUSINESS_BASIC_DATA_TITLE=Exports basic company data
-PAGE_TITLE_ADMIN_LIST_BUSINESS_BASIC_DATA=List basic company data
-CONTENT_TITLE_ADMIN_LIST_BUSINESS_BASIC_DATA=Lists basic company data
-ADMIN_BUSINESS_BASIC_DATA_LIST_EMPTY=There are currently no basic company data in database.
-TABLE_SUMMARY_ADMIN_LIST_BUSINESS_BASIC_DATA=This table lists basic company data.
-ADMIN_BUSINESS_BASIC_DATA_ID=Id Number:
+ADMIN_MENU_BUSINESS_CONTACTS_TITLE=Business contacts
+LINK_ADMIN_LIST_BASIC_COMPANY_DATA=List basic company data
+LINK_ADMIN_LIST_BASIC_COMPANY_DATA_TITLE=Lists basic company data
+LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA=Export basic company data
+LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA_TITLE=Exports basic company data
+PAGE_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA=List basic company data
+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_BUSINESS_BASIC_DATA_OWNER_ID=Assigned user:
-ADMIN_LINK_SHOW_BUSINESS_BASIC_DATA_OWNER_USER_TITLE=Shows assigned user profile.
+ADMIN_BASIC_COMPANY_DATA_OWNER_ID=Assigned user:
+ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_OWNER_USER_TITLE=Shows assigned user profile.
 ADMIN_LINK_ASSIGN=Assign
-ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_OWNER_USER_TITLE=Assigns this business contact to a user account.
-ADMIN_BUSINESS_BASIC_DATA_COMPANY_NAME=Company name:
-ADMIN_BUSINESS_BASIC_DATA_CONTACT_PERSON=Contact person:
-ADMIN_LINK_SHOW_BUSINESS_BASIC_DATA_CONTACT_PERSON_TITLE=Shows a single employee entry who has been assigned as contact person.
-ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_CONTACT_PERSON=Assign
-ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_CONTACT_PERSON_TITLE=Assigns an employee as a contact person for given business contact.
+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_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_ADD_BUSINESS_BASIC_DATA_TITLE=Add new business contact
-ADMIN_ADD_BUSINESS_BASIC_DATA_MINIMUM_DATA=Please enter at least company name including legal status.
+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_BUSINESS_BASIC_DATA_LEGEND=Basic data for business contact:
+ADMIN_BASIC_COMPANY_DATA_LEGEND=Basic data for business contact:
 #Geben Sie die Basisdaten fuer einen geschaeftlichen Kontakt ein.
-ADMIN_BUSINESS_BASIC_DATA_LEGEND_TITLE=Enter basic data for a business contact.
+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.):
@@ -847,9 +847,17 @@ URL_NOT_MATCHING_REGULAR_EXPRESSION=The entered URL does not match the common fo
 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_BUSINESS_BASIC_DATA_COMPANY_FOUNDER=Founder
-ADMIN_LINK_SHOW_BUSINESS_BASIC_DATA_COMPANY_FOUNDER_TITLE=Show data of company founder.
-ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_COMPANY_FOUNDER_TITLE=Assigns a company founder to this company entry.
-ADMIN_BUSINESS_BASIC_DATA_CREATED=Entry created
+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.
+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_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:
+ADMIN_BRANCH_OFFICE_LEGEND_TITLE=Enter branch office basic data here.
+ADMIN_SELECT_BRANCH_OFFICE_COMPANY=Assign branch office to company:
diff --git a/web/WEB-INF/faces-config.xml b/web/WEB-INF/faces-config.xml
index 18618ed3..d87c6c77 100644
--- a/web/WEB-INF/faces-config.xml
+++ b/web/WEB-INF/faces-config.xml
@@ -109,12 +109,16 @@
 			<to-view-id>/admin/contact/admin_contact_export.xhtml</to-view-id>
 		</navigation-case>
 		<navigation-case>
-			<from-outcome>admin_list_business_contacts</from-outcome>
-			<to-view-id>/admin/business_contacts/admin_business_contacts_list.xhtml</to-view-id>
+			<from-outcome>admin_list_basic_company_data</from-outcome>
+			<to-view-id>/admin/basic_company_data/admin_basic_company_data_list.xhtml</to-view-id>
 		</navigation-case>
 		<navigation-case>
-			<from-outcome>admin_export_business_contacts</from-outcome>
-			<to-view-id>/admin/business_contacts/admin_business_contacts_export.xhtml</to-view-id>
+			<from-outcome>admin_export_basic_company_data</from-outcome>
+			<to-view-id>/admin/basic_company_data/admin_basic_company_data_export.xhtml</to-view-id>
+		</navigation-case>
+		<navigation-case>
+			<from-outcome>admin_list_branch_offices</from-outcome>
+			<to-view-id>/admin/branch_offices/admin_branch_offices_list.xhtml</to-view-id>
 		</navigation-case>
 		<navigation-case>
 			<from-outcome>admin_list_user</from-outcome>
@@ -707,24 +711,27 @@
 		</navigation-case>
 	</navigation-rule>
 	<navigation-rule>
-		<from-view-id>/admin/business_contacts/admin_business_contacts_list.xhtml</from-view-id>
+		<from-view-id>/admin/basic_company_data/admin_basic_company_data_list.xhtml</from-view-id>
 		<navigation-case>
-			<from-outcome>admin_show_business_basic_data</from-outcome>
-			<to-view-id>/admin/business_contacts/admin_business_contacts_assign.xhtml</to-view-id>
+			<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>
 		</navigation-case>
 		<navigation-case>
-			<from-outcome>admin_assign_business_basic_data_contact</from-outcome>
-			<to-view-id>/admin/business_contacts/admin_business_contacts_assign_contact.xhtml</to-view-id>
+			<from-outcome>admin_assign_basic_company_data_contact</from-outcome>
+			<to-view-id>/admin/basic_company_data/admin_basic_company_data_assign_contact.xhtml</to-view-id>
 		</navigation-case>
 		<navigation-case>
-			<from-outcome>admin_assign_business_basic_data_founder</from-outcome>
-			<to-view-id>/admin/business_contacts/admin_business_contacts_assign_founder.xhtml</to-view-id>
+			<from-outcome>admin_assign_basic_company_data_founder</from-outcome>
+			<to-view-id>/admin/basic_company_data/admin_basic_company_data_assign_founder.xhtml</to-view-id>
 		</navigation-case>
 		<navigation-case>
-			<from-outcome>admin_assign_business_basic_data_owner</from-outcome>
-			<to-view-id>/admin/business_contacts/admin_business_contacts_assign_owner.xhtml</to-view-id>
+			<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-rule>
+	<navigation-rule>
+		<from-view-id>/admin/branch_offices/admin_branch_offices_list.xhtml</from-view-id>
+	</navigation-rule>
 	<!--
 	<factory>
 		<exception-handler-factory>
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 69267472..c3795203 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
@@ -58,7 +58,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="street" value="#{msg.ADMIN_PERSONAL_DATA_STREET}" />
+					<h:outputLabel for="street" value="#{msg.ADMIN_DATA_STREET_NAME}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -72,7 +72,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="houseNumber" value="#{msg.ADMIN_PERSONAL_DATA_HOUSE_NUMBER}" />
+					<h:outputLabel for="houseNumber" value="#{msg.ADMIN_DATA_HOUSE_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -88,7 +88,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="houseNumberExtension" value="#{msg.ADMIN_PERSONAL_DATA_HOUSE_NUMBER_EXTENSION}" />
+					<h:outputLabel for="houseNumberExtension" value="#{msg.ADMIN_DATA_HOUSE_NUMBER_EXTENSION}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -102,7 +102,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="zipCode" value="#{msg.ADMIN_PERSONAL_DATA_ZIP_CODE}" />
+					<h:outputLabel for="zipCode" value="#{msg.ADMIN_DATA_ZIP_CODE}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -118,7 +118,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="city" value="#{msg.ADMIN_PERSONAL_DATA_CITY}" />
+					<h:outputLabel for="city" value="#{msg.ADMIN_DATA_CITY}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -132,7 +132,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="country" value="#{msg.ADMIN_PERSONAL_DATA_COUNTRY_CODE}" />
+					<h:outputLabel for="country" value="#{msg.ADMIN_SELECT_COUNTRY}" />
 				</div>
 
 				<div class="table-right-medium">
diff --git a/web/WEB-INF/templates/admin/admin_menu.tpl b/web/WEB-INF/templates/admin/admin_menu.tpl
index d4e83b00..8da86ec5 100644
--- a/web/WEB-INF/templates/admin/admin_menu.tpl
+++ b/web/WEB-INF/templates/admin/admin_menu.tpl
@@ -33,14 +33,15 @@
 				<li><h:link title="#{msg.LINK_ADMIN_EXPORT_CONTACT_TITLE}" outcome="admin_export_contact" value="#{msg.LINK_ADMIN_EXPORT_CONTACT}" /></li>
 			</ul>
 
-			<ui:fragment rendered="#{featureController.isFeatureEnabled('business_contacts')}">
+			<ui:fragment rendered="#{featureController.isFeatureEnabled('basic_company_data')}">
 				<div class="menu-header">
-					<h:outputText value="#{msg.ADMIN_MENU_BUSINESS_BASIC_DATA_TITLE}" />
+					<h:outputText value="#{msg.ADMIN_MENU_BUSINESS_CONTACTS_TITLE}" />
 				</div>
 
 				<ul>
-					<li><h:link title="#{msg.LINK_ADMIN_LIST_BUSINESS_BASIC_DATA_TITLE}" outcome="admin_list_business_contacts" value="#{msg.LINK_ADMIN_LIST_BUSINESS_BASIC_DATA}" /></li>
-					<li><h:link title="#{msg.LINK_ADMIN_EXPORT_BUSINESS_BASIC_DATA_TITLE}" outcome="admin_export_business_contacts" value="#{msg.LINK_ADMIN_EXPORT_BUSINESS_BASIC_DATA}" /></li>
+					<li><h:link title="#{msg.LINK_ADMIN_LIST_BASIC_COMPANY_DATA_TITLE}" outcome="admin_list_basic_company_data" value="#{msg.LINK_ADMIN_LIST_BASIC_COMPANY_DATA}" /></li>
+					<li><h:link title="#{msg.LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA_TITLE}" outcome="admin_export_basic_company_data" value="#{msg.LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA}" /></li>
+					<li><h:link title="#{msg.LINK_ADMIN_LIST_BRANCH_OFFICES_TITLE}" outcome="admin_list_branch_offices" value="#{msg.LINK_ADMIN_LIST_BRANCH_OFFICES}" /></li>
 				</ul>
 			</ui:fragment>
 
diff --git a/web/WEB-INF/templates/admin/business_basic_data/admin_form_business_basic_data.tpl b/web/WEB-INF/templates/admin/basic_company_data/admin_form_basic_company_data.tpl
similarity index 86%
rename from web/WEB-INF/templates/admin/business_basic_data/admin_form_business_basic_data.tpl
rename to web/WEB-INF/templates/admin/basic_company_data/admin_form_basic_company_data.tpl
index 45e2f553..1143dc91 100644
--- a/web/WEB-INF/templates/admin/business_basic_data/admin_form_business_basic_data.tpl
+++ b/web/WEB-INF/templates/admin/basic_company_data/admin_form_basic_company_data.tpl
@@ -7,9 +7,9 @@
 	xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
 
 	<h:panelGroup styleClass="para" layout="block">
-		<fieldset class="fieldset" id="business_basic_data">
-			<legend title="#{msg.ADMIN_BUSINESS_BASIC_DATA_LEGEND_TITLE}">
-				<h:outputText value="#{msg.ADMIN_BUSINESS_BASIC_DATA_LEGEND}" />
+		<fieldset class="fieldset" id="basic_company_data">
+			<legend title="#{msg.ADMIN_BASIC_COMPANY_DATA_LEGEND_TITLE}">
+				<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_LEGEND}" />
 			</legend>
 
 			<h:panelGroup styleClass="table-row" layout="block">
@@ -165,11 +165,11 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="landLineCountryCode" value="#{msg.ADMIN_BUSINESS_DATA_PHONE_NUMBER}" />
+					<h:outputLabel for="landLineCountry" value="#{msg.ADMIN_BUSINESS_DATA_PHONE_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
-					<h:selectOneMenu styleClass="select divider-right" id="landLineCountryCode" value="#{adminCompanyDataController.landLineCountry}">
+					<h:selectOneMenu styleClass="select divider-right" id="landLineCountry" value="#{adminCompanyDataController.landLineCountry}">
 						<f:converter converterId="CountryConverter" />
 						<f:selectItem itemValue="#{null}" itemLabel="#{msg.NONE_SELECTED}" />
 						<f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryPhoneCode}" />
@@ -185,13 +185,25 @@
 				</div>
 			</h:panelGroup>
 
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="landLineCountry" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="landLineAreaCode" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="landLineNumber" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="faxCountryCode" value="#{msg.ADMIN_BUSINESS_DATA_FAX_NUMBER}" />
+					<h:outputLabel for="faxCountry" value="#{msg.ADMIN_BUSINESS_DATA_FAX_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
-					<h:selectOneMenu styleClass="select divider-right" id="faxCountryCode" value="#{adminCompanyDataController.faxCountry}">
+					<h:selectOneMenu styleClass="select divider-right" id="faxCountry" value="#{adminCompanyDataController.faxCountry}">
 						<f:converter converterId="CountryConverter" />
 						<f:selectItem itemValue="#{null}" itemLabel="#{msg.NONE_SELECTED}" />
 						<f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryPhoneCode}" />
@@ -207,6 +219,18 @@
 				</div>
 			</h:panelGroup>
 
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="faxCountry" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="faxAreaCode" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="faxNumber" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
 					<h:outputLabel for="companyComments" value="#{msg.ADMIN_BUSINESS_DATA_COMPANY_COMMENTS}" />
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
new file mode 100644
index 00000000..247113e6
--- /dev/null
+++ b/web/WEB-INF/templates/admin/branch_offices/admin_form_branch_offices_data.tpl
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+	xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:widgets="http://mxchange.org/jsf/core/widgets"
+	xmlns:f="http://xmlns.jcp.org/jsf/core"
+	xmlns:h="http://xmlns.jcp.org/jsf/html"
+	xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+	<h:panelGroup styleClass="para" layout="block">
+		<fieldset class="fieldset" id="branch_office">
+			<legend title="#{msg.ADMIN_BRANCH_OFFICE_LEGEND_TITLE}">
+				<h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_LEGEND}" />
+			</legend>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchCompany" value="#{msg.ADMIN_SELECT_BRANCH_OFFICE_COMPANY}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:selectOneMenu styleClass="select" id="branchCompany" value="#{adminBranchOfficeController.branchCompany}">
+						<f:converter converterId="BasicCompanyDataConverter" />
+						<f:selectItem itemValue="#{null}" itemLabel="#{msg.NONE_SELECTED}" />
+						<f:selectItems value="#{companyDataController.allCompanyBasicData()}" var="companyData" itemValue="#{companyData}" itemLabel="#{companyData.companyName}" />
+					</h:selectOneMenu>
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchCompany" errorClass="alert-danger" fatalClass="alert-danger" warnClass="alert-warning" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchContactEmployee" value="#{msg.ADMIN_SELECT_BRANCH_OFFICE_CONTACT_EMPLOYEE}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:selectOneMenu styleClass="select" id="branchContactEmployee" value="#{adminBranchOfficeController.branchContactEmployee}">
+						<f:converter converterId="CompanyEmployeeConverter" />
+						<f:selectItem itemValue="#{null}" itemLabel="#{msg.NONE_SELECTED}" />
+						<f:selectItems value="#{companyEmployeeController.allCompanyEmployees()}" var="companyHeadQuarters" itemValue="#{companyEmployee}" itemLabel="#{companyEmployee.foo}" />
+					</h:selectOneMenu>
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchContactEmployee" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchUserOwner" value="#{msg.ADMIN_SELECT_BRANCH_OFFICE_USER_OWNER}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:selectOneMenu styleClass="select" id="branchUserOwner" value="#{adminBranchOfficeController.branchUserOwner}">
+						<f:converter converterId="UserConverter" />
+						<f:selectItem itemValue="#{null}" itemLabel="#{msg.NONE_SELECTED}" />
+						<f:selectItems value="#{userController.allUsers()}" var="branchUserOwner" itemValue="#{branchUserOwner}" itemLabel="#{branchUserOwner.userContact.contactFirstName} #{branchUserOwner.userContact.contactFamilyName} (#{branchUserOwner.userName})" />
+					</h:selectOneMenu>
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchUserOwner" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchStreet" value="#{msg.ADMIN_DATA_STREET_NAME}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:inputText styleClass="input" id="branchStreet" size="20" maxlength="255" value="#{adminBranchOfficeController.branchStreet}" />
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchStreet" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchHouseNumber" value="#{msg.ADMIN_DATA_HOUSE_NUMBER}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:inputText styleClass="input" id="branchHouseNumber" size="20" maxlength="255" value="#{adminBranchOfficeController.branchHouseNumber}" />
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchHouseNumber" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchStore" value="#{msg.ADMIN_DATA_STORE}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:inputText styleClass="input" id="branchStore" size="20" maxlength="255" value="#{adminBranchOfficeController.branchStore}" />
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchStore" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchSuiteNumber" value="#{msg.ADMIN_DATA_SUITE_NUMBER}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:inputText styleClass="input" id="branchSuiteNumber" size="20" maxlength="255" value="#{adminBranchOfficeController.branchSuiteNumber}" />
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchSuiteNumber" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchZipCode" value="#{msg.ADMIN_DATA_ZIP_CODE}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:inputText styleClass="input" id="branchZipCode" size="20" maxlength="255" value="#{adminBranchOfficeController.branchZipCode}" />
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchZipCode" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchCity" value="#{msg.ADMIN_DATA_CITY}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:inputText styleClass="input" id="branchCity" size="20" maxlength="255" value="#{adminBranchOfficeController.branchCity}" />
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchCity" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchCountry" value="#{msg.ADMIN_SELECT_COUNTRY}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:selectOneMenu styleClass="select" id="branchCountry" value="#{adminBranchOfficeController.branchCountry}">
+						<f:converter converterId="CountryConverter" />
+						<f:selectItem itemValue="#{null}" itemLabel="#{msg.NONE_SELECTED}" />
+						<f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryCode} (#{msg[country.countryI18nKey]})" />
+					</h:selectOneMenu>
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchCountry" errorClass="alert-danger" fatalClass="alert-danger" warnClass="alert-warning" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="branchEmailAddress" value="#{msg.ADMIN_BRANCH_OFFICE_EMAIL_ADDRESS}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:inputText styleClass="input" id="branchEmailAddress" size="20" maxlength="255" value="#{adminBranchOfficeController.branchEmailAddress}" validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}">
+						<f:validator validatorId="EmailAddressValidator" />
+						<f:attribute name="allowEmptyValue" value="true" />
+					</h:inputText>
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="branchEmailAddress" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="landLineCountry" value="#{msg.ADMIN_BRANCH_OFFICE_PHONE_NUMBER}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:selectOneMenu styleClass="select divider-right" id="landLineCountry" value="#{adminBranchOfficeController.landLineCountry}">
+						<f:converter converterId="CountryConverter" />
+						<f:selectItem itemValue="#{null}" itemLabel="#{msg.NONE_SELECTED}" />
+						<f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryPhoneCode}" />
+					</h:selectOneMenu>
+
+					<h:inputText styleClass="input divider-right" id="landLineAreaCode" size="5" maxlength="10" value="#{adminBranchOfficeController.landLineAreaCode}">
+						<f:validator for="landLineAreaCode" validatorId="PhoneNumberValidator" />
+					</h:inputText>
+
+					<h:inputText styleClass="input" id="landLineNumber" size="10" maxlength="20" value="#{adminBranchOfficeController.landLineNumber}">
+						<f:validator for="landLineNumber" validatorId="PhoneNumberValidator" />
+					</h:inputText>
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="landLineCountry" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="landLineAreaCode" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="landLineNumber" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="table-row" layout="block">
+				<div class="table-left-medium">
+					<h:outputLabel for="faxCountry" value="#{msg.ADMIN_BRANCH_OFFICE_FAX_NUMBER}" />
+				</div>
+
+				<div class="table-right-medium">
+					<h:selectOneMenu styleClass="select divider-right" id="faxCountry" value="#{adminBranchOfficeController.faxCountry}">
+						<f:converter converterId="CountryConverter" />
+						<f:selectItem itemValue="#{null}" itemLabel="#{msg.NONE_SELECTED}" />
+						<f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryAbroadDialPrefix}#{country.countryPhoneCode}" />
+					</h:selectOneMenu>
+
+					<h:inputText styleClass="input divider-right" id="faxAreaCode" size="5" maxlength="10" value="#{adminBranchOfficeController.faxAreaCode}">
+						<f:validator for="faxAreaCode" validatorId="PhoneNumberValidator" />
+					</h:inputText>
+
+					<h:inputText styleClass="input" id="faxNumber" size="10" maxlength="20" value="#{adminBranchOfficeController.faxNumber}">
+						<f:validator for="faxNumber" validatorId="PhoneNumberValidator" />
+					</h:inputText>
+				</div>
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="faxCountry" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="faxAreaCode" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+
+			<h:panelGroup styleClass="error_container" layout="block">
+				<h:message for="faxNumber" errorClass="alert-danger" warnClass="alert-warning" fatalClass="alert-danger" />
+			</h:panelGroup>
+		</fieldset>
+	</h:panelGroup>
+</ui:composition>
diff --git a/web/WEB-INF/templates/contact/form_contact_data.tpl b/web/WEB-INF/templates/contact/form_contact_data.tpl
index 8f10f6e7..77a406f0 100644
--- a/web/WEB-INF/templates/contact/form_contact_data.tpl
+++ b/web/WEB-INF/templates/contact/form_contact_data.tpl
@@ -53,7 +53,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="street" value="#{msg.PERSONAL_DATA_STREET}" />
+					<h:outputLabel for="street" value="#{msg.DATA_STREET_NAME}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -69,7 +69,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="houseNumber" value="#{msg.PERSONAL_DATA_HOUSE_NUMBER}" />
+					<h:outputLabel for="houseNumber" value="#{msg.DATA_HOUSE_NUMBER}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -85,7 +85,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="houseNumberExtension" value="#{msg.PERSONAL_DATA_HOUSE_NUMBER_EXTENSION}" />
+					<h:outputLabel for="houseNumberExtension" value="#{msg.DATA_HOUSE_NUMBER_EXTENSION}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -99,7 +99,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="zipCode" value="#{msg.PERSONAL_DATA_ZIP_CODE}" />
+					<h:outputLabel for="zipCode" value="#{msg.DATA_ZIP_CODE}" />
 				</div>
 
 				<div class="table-right-medium">
@@ -115,7 +115,7 @@
 
 			<h:panelGroup styleClass="table-row" layout="block">
 				<div class="table-left-medium">
-					<h:outputLabel for="city" value="#{msg.PERSONAL_DATA_CITY}" />
+					<h:outputLabel for="city" value="#{msg.DATA_CITY}" />
 				</div>
 
 				<div class="table-right-medium">
diff --git a/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl b/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl
index ec56da69..003a8d22 100644
--- a/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl
+++ b/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl
@@ -85,7 +85,7 @@
 
 			<div class="table-footer">
 				<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-				<h:commandButton styleClass="submit" type="submit" id="continueRegisterPage1" value="#{msg.BUTTON_CONTINUE_REGISTER_PAGE2}" action="#{userRegistrationController.doRegisterMultiPage1()}" />
+				<h:commandButton styleClass="submit" type="submit" id="button_continue_register_page1" value="#{msg.BUTTON_CONTINUE_REGISTER_PAGE2}" action="#{userRegistrationController.doRegisterMultiPage1()}" />
 			</div>
 		</h:panelGroup>
 	</h:form>
diff --git a/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl b/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl
index 16505b77..832c0a41 100644
--- a/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl
+++ b/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl
@@ -89,7 +89,7 @@
 
 			<div class="table-footer">
 				<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-				<h:commandButton styleClass="submit" type="submit" id="finish_registration_single" value="#{msg.BUTTON_FINISH_REGISTRATION}" action="#{userRegistrationController.doFinishRegistration()}" />
+				<h:commandButton styleClass="submit" type="submit" id="button_finish_registration_single" value="#{msg.BUTTON_FINISH_REGISTRATION}" action="#{userRegistrationController.doFinishRegistration()}" />
 			</div>
 		</h:panelGroup>
 	</h:form>
diff --git a/web/WEB-INF/web.xml b/web/WEB-INF/web.xml
index e3823fcd..63afe9e7 100644
--- a/web/WEB-INF/web.xml
+++ b/web/WEB-INF/web.xml
@@ -119,7 +119,7 @@
     </context-param>
     <context-param>
         <description>Whether business contacts are used in this project.</description>
-        <param-name>is_feature_business_contacts_enabled</param-name>
+        <param-name>is_feature_basic_company_data_enabled</param-name>
         <param-value>true</param-value>
     </context-param>
     <context-param>
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
new file mode 100644
index 00000000..e43d20af
--- /dev/null
+++ b/web/admin/basic_company_data/admin_basic_company_data_list.xhtml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition template="/WEB-INF/templates/admin/admin_base.tpl"
+				xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:widgets="http://mxchange.org/jsf/core/widgets"
+				xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+				xmlns:h="http://xmlns.jcp.org/jsf/html"
+				xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+	<ui:define name="admin_title">
+		<h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA}" />
+	</ui:define>
+
+	<ui:define name="content_header">
+		<h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA}" />
+	</ui:define>
+
+	<ui:define name="content">
+		<widgets:outputMessageBox message="#{msg.ADMIN_BASIC_COMPANY_DATA_LIST_EMPTY}" messageStyleClass="alert-danger" rendered="#{companyDataController.allCompanyBasicData().isEmpty()}" />
+
+		<h:dataTable id="table_list_basic_company_data" var="companyData" value="#{companyDataController.allCompanyBasicData()}" styleClass="table-full" headerClass="table-header-column" summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_BASIC_COMPANY_DATA}" rendered="#{not companyDataController.allCompanyBasicData().isEmpty()}">
+			<h:column>
+				<f:facet name="header">
+					<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>
+			</h:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_OWNER_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}">
+					<f:param name="userId" value="#{companyData.companyUserOwner.userId}" />
+				</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}" />
+				</h:link>
+			</h:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_COMPANY_NAME}" />
+				</f:facet>
+
+				<h:outputLink value="#{companyData.companyWebsiteUrl}" target="_blank" title="#{msg.LINK_COMPANY_WEBSITE_URL_TITLE}" rel="external" rendered="#{not empty companyData.companyWebsiteUrl}">
+					<h:outputText value="#{companyData.companyName}" />
+				</h:outputLink>
+
+				<h:outputText value="#{companyData.companyName}" title="#{msg.NO_WEBSITE_URL_ENTERED}" rendered="#{empty companyData.companyWebsiteUrl}" />
+			</h:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_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>
+			</h:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_COMPANY_FOUNDER}" />
+				</f:facet>
+
+				<h:link outcome="admin_show_business_employee" title="#{msg.ADMIN_LINK_SHOW_BASIC_COMPANY_DATA_COMPANY_FOUNDER_TITLE}" value="#{companyData.companyFounder.employeeId}" rendered="#{not empty companyData.companyFounder}">
+					<f:param name="employeeId" value="#{companyData.companyFounder.employeeId}" />
+				</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}" />
+				</h:link>
+			</h:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{msg.ADMIN_BASIC_COMPANY_DATA_CREATED}" />
+				</f:facet>
+
+				<h:outputText id="companyCreated" value="#{companyData.companyCreated.time}">
+					<f:convertDateTime for="companyCreated" type="both" timeStyle="short" dateStyle="short" />
+				</h:outputText>
+			</h:column>
+		</h:dataTable>
+
+		<h:form id="form_admin_add_basic_company_data">
+			<h:panelGroup styleClass="table table-medium" layout="block">
+				<div class="table-header">
+					<h:outputText value="#{msg.ADMIN_ADD_BASIC_COMPANY_DATA_TITLE}" />
+				</div>
+
+				<div class="para">
+					<h:outputText value="#{msg.ADMIN_ADD_BASIC_COMPANY_DATA_MINIMUM_DATA}" />
+				</div>
+
+				<ui:include src="/WEB-INF/templates/admin/basic_company_data/admin_form_basic_company_data.tpl" />
+
+				<div class="table-footer">
+					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_add_basic_company_data" value="#{msg.BUTTON_ADMIN_CONTINUE_BUSINESS_CONTACT_PERSON}" action="#{adminCompanyDataController.addBusinessBasicData()}" />
+				</div>
+			</h:panelGroup>
+		</h:form>
+	</ui:define>
+</ui:composition>
diff --git a/web/admin/branch_offices/admin_branch_offices_list.xhtml b/web/admin/branch_offices/admin_branch_offices_list.xhtml
new file mode 100644
index 00000000..b4752e4c
--- /dev/null
+++ b/web/admin/branch_offices/admin_branch_offices_list.xhtml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition template="/WEB-INF/templates/admin/admin_base.tpl"
+				xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:widgets="http://mxchange.org/jsf/core/widgets"
+				xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+				xmlns:h="http://xmlns.jcp.org/jsf/html"
+				xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+	<ui:define name="admin_title">
+		<h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_BRANCH_OFFICES}" />
+	</ui:define>
+
+	<ui:define name="content_header">
+		<h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_BRANCH_OFFICES}" />
+	</ui:define>
+
+	<ui:define name="content">
+		<widgets:outputMessageBox message="#{msg.ADMIN_BRANCH_OFFICES_LIST_EMPTY}" messageStyleClass="alert-danger" rendered="#{branchOfficeController.allBranchOffices().isEmpty()}" />
+
+		<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}" />
+				</f:facet>
+
+				<h:link outcome="admin_show_branch_office" title="#{msg.ADMIN_LINK_SHOW_BUSINESS_CONTACT_DATA_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}" />
+				</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}">
+					<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}" />
+				</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:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_EMAIL_ADDRESS}" />
+				</f:facet>
+
+				<h:outputText value="#{branchOffice.branchEmailAddress}" />
+			</h:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{msg.DATA_CITY}" />
+				</f:facet>
+
+				<h:outputText value="#{branchOffice.branchZipCode} #{branchOffice.branchCity}" />
+			</h:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_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}">
+					<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}" />
+				</f:facet>
+
+				<h:outputText id="branchCreated" value="#{branchOffice.branchCreated.time}">
+					<f:convertDateTime for="branchCreated" type="both" timeStyle="short" dateStyle="short" />
+				</h:outputText>
+			</h:column>
+		</h:dataTable>
+
+		<h:form id="form_admin_add_branch_office">
+			<h:panelGroup styleClass="table table-medium" layout="block">
+				<div class="table-header">
+					<h:outputText value="#{msg.ADMIN_ADD_BRANCH_OFFICE_TITLE}" />
+				</div>
+
+				<div class="para">
+					<h:outputText value="#{msg.ADMIN_ADD_BRANCH_OFFICE_MINIMUM_DATA}" />
+				</div>
+
+				<ui:include src="/WEB-INF/templates/admin/branch_offices/admin_form_branch_offices_data.tpl" />
+
+				<div class="table-footer">
+					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_add_branch_office" value="#{msg.BUTTON_ADMIN_CONTINUE_BUSINESS_CONTACT_PERSON}" action="#{adminBranchOfficeController.addBranchOffice()}" />
+				</div>
+			</h:panelGroup>
+		</h:form>
+	</ui:define>
+</ui:composition>
diff --git a/web/admin/business_contacts/admin_business_contacts_list.xhtml b/web/admin/business_contacts/admin_business_contacts_list.xhtml
deleted file mode 100644
index b81e6c28..00000000
--- a/web/admin/business_contacts/admin_business_contacts_list.xhtml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<ui:composition template="/WEB-INF/templates/admin/admin_base.tpl"
-				xmlns="http://www.w3.org/1999/xhtml"
-				xmlns:widgets="http://mxchange.org/jsf/core/widgets"
-				xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
-				xmlns:h="http://xmlns.jcp.org/jsf/html"
-				xmlns:f="http://xmlns.jcp.org/jsf/core">
-
-	<ui:define name="admin_title">
-		<h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_BUSINESS_BASIC_DATA}" />
-	</ui:define>
-
-	<ui:define name="content_header">
-		<h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_BUSINESS_BASIC_DATA}" />
-	</ui:define>
-
-	<ui:define name="content">
-		<widgets:outputMessageBox message="#{msg.ADMIN_BUSINESS_BASIC_DATA_LIST_EMPTY}" messageStyleClass="alert-danger" rendered="#{companyDataController.allCompanyBasicData().isEmpty()}" />
-
-		<h:dataTable id="table_list_business_contacts" var="companyData" value="#{companyDataController.allCompanyBasicData()}" styleClass="table-full" headerClass="table-header-column" summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_BUSINESS_BASIC_DATA}" rendered="#{not companyDataController.allCompanyBasicData().isEmpty()}">
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BUSINESS_BASIC_DATA_ID}" />
-				</f:facet>
-
-				<h:link outcome="admin_show_business_basic_data" title="#{msg.ADMIN_LINK_SHOW_BUSINESS_CONTACT_DATA_TITLE}" value="#{companyData.companyDataId}">
-					<f:param name="companyDataId" value="#{companyData.companyDataId}" />
-				</h:link>
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BUSINESS_BASIC_DATA_OWNER_ID}" />
-				</f:facet>
-
-				<h:link outcome="admin_show_user" title="#{msg.ADMIN_LINK_SHOW_BUSINESS_BASIC_DATA_OWNER_USER_TITLE}" value="#{companyData.companyUserOwner.userId}" rendered="#{not empty companyData.companyUserOwner}">
-					<f:param name="userId" value="#{companyData.companyUserOwner.userId}" />
-				</h:link>
-
-				<h:link outcome="admin_assign_business_basic_data_owner" title="#{msg.ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_OWNER_USER_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN}" rendered="#{empty companyData.companyUserOwner}">
-					<f:param name="companyDataId" value="#{companyData.companyDataId}" />
-				</h:link>
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BUSINESS_BASIC_DATA_COMPANY_NAME}" />
-				</f:facet>
-
-				<h:outputLink value="#{companyData.companyWebsiteUrl}" target="_blank" title="#{msg.LINK_COMPANY_WEBSITE_URL_TITLE}" rel="external" rendered="#{not empty companyData.companyWebsiteUrl}">
-					<h:outputText value="#{companyData.companyName}" />
-				</h:outputLink>
-
-				<h:outputText value="#{companyData.companyName}" title="#{msg.NO_WEBSITE_URL_ENTERED}" rendered="#{empty companyData.companyWebsiteUrl}" />
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BUSINESS_BASIC_DATA_CONTACT_PERSON}" />
-				</f:facet>
-
-				<h:link outcome="admin_show_business_employee" title="#{msg.ADMIN_LINK_SHOW_BUSINESS_BASIC_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_business_basic_data_contact" title="#{msg.ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_CONTACT_PERSON_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_CONTACT_PERSON}" rendered="#{empty companyData.companyContactEmployee}">
-					<f:param name="companyDataId" value="#{companyData.companyDataId}" />
-				</h:link>
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BUSINESS_BASIC_DATA_COMPANY_FOUNDER}" />
-				</f:facet>
-
-				<h:link outcome="admin_show_business_employee" title="#{msg.ADMIN_LINK_SHOW_BUSINESS_BASIC_DATA_COMPANY_FOUNDER_TITLE}" value="#{companyData.companyFounder.employeeId}" rendered="#{not empty companyData.companyFounder}">
-					<f:param name="employeeId" value="#{companyData.companyFounder.employeeId}" />
-				</h:link>
-
-				<h:link outcome="admin_assign_business_basic_data_contact" title="#{msg.ADMIN_LINK_ASSIGN_BUSINESS_BASIC_DATA_COMPANY_FOUNDER_TITLE}" value="#{msg.ADMIN_LINK_ASSIGN}" rendered="#{empty companyData.companyFounder}">
-					<f:param name="companyDataId" value="#{companyData.companyDataId}" />
-				</h:link>
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="#{msg.ADMIN_BUSINESS_BASIC_DATA_CREATED}" />
-				</f:facet>
-
-				<h:outputText id="contactCreated" value="#{companyData.companyCreated.time}">
-					<f:convertDateTime for="contactCreated" type="both" timeStyle="short" dateStyle="short" />
-				</h:outputText>
-			</h:column>
-		</h:dataTable>
-
-		<h:form id="form_admin_add_business_basic_data">
-			<h:panelGroup styleClass="table table-medium" layout="block">
-				<div class="table-header">
-					<h:outputText value="#{msg.ADMIN_ADD_BUSINESS_BASIC_DATA_TITLE}" />
-				</div>
-
-				<div class="para">
-					<h:outputText value="#{msg.ADMIN_ADD_BUSINESS_BASIC_DATA_MINIMUM_DATA}" />
-				</div>
-
-				<ui:include src="/WEB-INF/templates/admin/business_basic_data/admin_form_business_basic_data.tpl" />
-
-				<div class="table-footer">
-					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="add_business_basic_data" value="#{msg.BUTTON_ADMIN_CONTINUE_BUSINESS_CONTACT_PERSON}" action="#{adminCompanyDataController.addBusinessBasicData()}" />
-				</div>
-			</h:panelGroup>
-		</h:form>
-	</ui:define>
-</ui:composition>
diff --git a/web/admin/contact/admin_contact_delete.xhtml b/web/admin/contact/admin_contact_delete.xhtml
index f8fcb08b..edf78955 100644
--- a/web/admin/contact/admin_contact_delete.xhtml
+++ b/web/admin/contact/admin_contact_delete.xhtml
@@ -40,7 +40,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="button-danger" type="submit" id="delete_contact" value="#{msg.BUTTON_ADMIN_DELETE_CONTACT}" action="#{adminContactController.deleteContactData()}" />
+					<h:commandButton styleClass="button-danger" type="submit" id="button_delete_contact" value="#{msg.BUTTON_ADMIN_DELETE_CONTACT}" action="#{adminContactController.deleteContactData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/contact/admin_contact_edit.xhtml b/web/admin/contact/admin_contact_edit.xhtml
index 384ad7a7..c431e5f4 100644
--- a/web/admin/contact/admin_contact_edit.xhtml
+++ b/web/admin/contact/admin_contact_edit.xhtml
@@ -40,7 +40,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="edit_contact" value="#{msg.BUTTON_ADMIN_EDIT_CONTACT}" action="#{adminContactController.editContactData()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_edit_contact" value="#{msg.BUTTON_ADMIN_EDIT_CONTACT}" action="#{adminContactController.editContactData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/contact/admin_contact_export.xhtml b/web/admin/contact/admin_contact_export.xhtml
index 2ac0f0f9..2a5685a3 100644
--- a/web/admin/contact/admin_contact_export.xhtml
+++ b/web/admin/contact/admin_contact_export.xhtml
@@ -165,7 +165,7 @@
 				</div>
 
 				<div class="table-footer">
-					<h:commandButton styleClass="submit" type="submit" id="export_contacts_xls" value="#{msg.BUTTON_ADMIN_EXPORT_CONTACTS_XLS}">
+					<h:commandButton styleClass="submit" type="submit" id="button_export_contacts_xls" value="#{msg.BUTTON_ADMIN_EXPORT_CONTACTS_XLS}">
 						<p:dataExporter type="xls" target="table_export_contacts" fileName="all_contacts" />
 					</h:commandButton>
 				</div>
diff --git a/web/admin/contact/admin_contact_list.xhtml b/web/admin/contact/admin_contact_list.xhtml
index 857c1df3..66cdad8d 100644
--- a/web/admin/contact/admin_contact_list.xhtml
+++ b/web/admin/contact/admin_contact_list.xhtml
@@ -85,7 +85,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="add_contact" value="#{msg.BUTTON_ADMIN_ADD_CONTACT}" action="#{adminContactController.addContact()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_add_contact" value="#{msg.BUTTON_ADMIN_ADD_CONTACT}" action="#{adminContactController.addContact()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/contact/unlink/admin_contact_fax_unlink.xhtml b/web/admin/contact/unlink/admin_contact_fax_unlink.xhtml
index 0efea096..402bde6b 100644
--- a/web/admin/contact/unlink/admin_contact_fax_unlink.xhtml
+++ b/web/admin/contact/unlink/admin_contact_fax_unlink.xhtml
@@ -49,7 +49,7 @@
 				</div>
 
 				<div class="table-footer">
-					<h:commandButton styleClass="button-warning" type="submit" id="unlink_fax" value="#{msg.BUTTON_ADMIN_UNLINK_FAX_NUMBER}" action="#{adminContactPhoneController.unlinkFaxContactData()}" />
+					<h:commandButton styleClass="button-warning" type="submit" id="button_unlink_fax" value="#{msg.BUTTON_ADMIN_UNLINK_FAX_NUMBER}" action="#{adminContactPhoneController.unlinkFaxContactData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/contact/unlink/admin_contact_landline_unlink.xhtml b/web/admin/contact/unlink/admin_contact_landline_unlink.xhtml
index 8dee96bb..c3399e2d 100644
--- a/web/admin/contact/unlink/admin_contact_landline_unlink.xhtml
+++ b/web/admin/contact/unlink/admin_contact_landline_unlink.xhtml
@@ -47,7 +47,7 @@
 				</div>
 
 				<div class="table-footer">
-					<h:commandButton styleClass="button-warning" type="submit" id="unlink_landline" value="#{msg.BUTTON_ADMIN_UNLINK_LAND_LINE_NUMBER}" action="#{adminContactPhoneController.unlinkLandLineContactData()}" />
+					<h:commandButton styleClass="button-warning" type="submit" id="button_unlink_landline" value="#{msg.BUTTON_ADMIN_UNLINK_LAND_LINE_NUMBER}" action="#{adminContactPhoneController.unlinkLandLineContactData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/contact/unlink/admin_contact_mobile_unlink.xhtml b/web/admin/contact/unlink/admin_contact_mobile_unlink.xhtml
index 1e899794..e758515e 100644
--- a/web/admin/contact/unlink/admin_contact_mobile_unlink.xhtml
+++ b/web/admin/contact/unlink/admin_contact_mobile_unlink.xhtml
@@ -47,7 +47,7 @@
 				</div>
 
 				<div class="table-footer">
-					<h:commandButton styleClass="button-warning" type="submit" id="unlink_mobile" value="#{msg.BUTTON_ADMIN_UNLINK_MOBILE_NUMBER}" action="#{adminContactPhoneController.unlinkMobileContactData()}" />
+					<h:commandButton styleClass="button-warning" type="submit" id="button_unlink_mobile" value="#{msg.BUTTON_ADMIN_UNLINK_MOBILE_NUMBER}" action="#{adminContactPhoneController.unlinkMobileContactData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/country/admin_country_list.xhtml b/web/admin/country/admin_country_list.xhtml
index 831eca61..ebde8b95 100644
--- a/web/admin/country/admin_country_list.xhtml
+++ b/web/admin/country/admin_country_list.xhtml
@@ -60,7 +60,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="add_country" value="#{msg.BUTTON_ADMIN_ADD_COUNTRY}" action="#{adminCountryController.addCountry()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_add_country" value="#{msg.BUTTON_ADMIN_ADD_COUNTRY}" action="#{adminCountryController.addCountry()}" />
 				</div>
 			</h:panelGroup>
 
diff --git a/web/admin/fax/admin_fax_delete.xhtml b/web/admin/fax/admin_fax_delete.xhtml
index 2c1c1a1c..f63c5a79 100644
--- a/web/admin/fax/admin_fax_delete.xhtml
+++ b/web/admin/fax/admin_fax_delete.xhtml
@@ -39,7 +39,7 @@
 				</div>
 
 				<div class="table-footer">
-					<h:commandButton styleClass="button-danger" type="submit" id="delete_fax" value="#{msg.BUTTON_ADMIN_DELETE_FAX}" action="#{adminPhoneController.deleteFaxData()}" />
+					<h:commandButton styleClass="button-danger" type="submit" id="button_delete_fax" value="#{msg.BUTTON_ADMIN_DELETE_FAX}" action="#{adminPhoneController.deleteFaxData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/fax/admin_fax_edit.xhtml b/web/admin/fax/admin_fax_edit.xhtml
index d7bc6b63..193de64c 100644
--- a/web/admin/fax/admin_fax_edit.xhtml
+++ b/web/admin/fax/admin_fax_edit.xhtml
@@ -36,7 +36,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="edit_fax" value="#{msg.BUTTON_ADMIN_EDIT_FAX_NUMBER}" action="#{adminPhoneController.doChangeFaxNumber()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_edit_fax" value="#{msg.BUTTON_ADMIN_EDIT_FAX_NUMBER}" action="#{adminPhoneController.doChangeFaxNumber()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/landline/admin_landline_delete.xhtml b/web/admin/landline/admin_landline_delete.xhtml
index 285284e6..3b6c6bd6 100644
--- a/web/admin/landline/admin_landline_delete.xhtml
+++ b/web/admin/landline/admin_landline_delete.xhtml
@@ -39,7 +39,7 @@
 				</div>
 
 				<div class="table-footer">
-					<h:commandButton styleClass="button-danger" type="submit" id="delete_landline" value="#{msg.BUTTON_ADMIN_DELETE_LAND_LINE}" action="#{adminPhoneController.deleteLandLineData()}" />
+					<h:commandButton styleClass="button-danger" type="submit" id="button_delete_landline" value="#{msg.BUTTON_ADMIN_DELETE_LAND_LINE}" action="#{adminPhoneController.deleteLandLineData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/landline/admin_landline_edit.xhtml b/web/admin/landline/admin_landline_edit.xhtml
index a005ef8c..ac0f2e30 100644
--- a/web/admin/landline/admin_landline_edit.xhtml
+++ b/web/admin/landline/admin_landline_edit.xhtml
@@ -36,7 +36,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="edit_landline" value="#{msg.BUTTON_ADMIN_EDIT_LAND_LINE_NUMBER}" action="#{adminPhoneController.doChangeLandLineNumber()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_edit_landline" value="#{msg.BUTTON_ADMIN_EDIT_LAND_LINE_NUMBER}" action="#{adminPhoneController.doChangeLandLineNumber()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/mobile/admin_mobile_delete.xhtml b/web/admin/mobile/admin_mobile_delete.xhtml
index 212490de..78d25c66 100644
--- a/web/admin/mobile/admin_mobile_delete.xhtml
+++ b/web/admin/mobile/admin_mobile_delete.xhtml
@@ -39,7 +39,7 @@
 				</div>
 
 				<div class="table-footer">
-					<h:commandButton styleClass="button-danger" type="submit" id="delete_mobile" value="#{msg.BUTTON_ADMIN_DELETE_MOBILE_NUMBER}" action="#{adminPhoneController.deleteMobileData()}" />
+					<h:commandButton styleClass="button-danger" type="submit" id="button_delete_mobile" value="#{msg.BUTTON_ADMIN_DELETE_MOBILE_NUMBER}" action="#{adminPhoneController.deleteMobileData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/mobile/admin_mobile_edit.xhtml b/web/admin/mobile/admin_mobile_edit.xhtml
index 0cd35719..d6a41a43 100644
--- a/web/admin/mobile/admin_mobile_edit.xhtml
+++ b/web/admin/mobile/admin_mobile_edit.xhtml
@@ -36,7 +36,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="edit_mobile" value="#{msg.BUTTON_ADMIN_EDIT_MOBILE_NUMBER}" action="#{adminPhoneController.doUpdateMobileNumber()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_edit_mobile" value="#{msg.BUTTON_ADMIN_EDIT_MOBILE_NUMBER}" action="#{adminPhoneController.doUpdateMobileNumber()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/mobile_provider/admin_mobile_provider_list.xhtml b/web/admin/mobile_provider/admin_mobile_provider_list.xhtml
index 6beca962..96158ade 100644
--- a/web/admin/mobile_provider/admin_mobile_provider_list.xhtml
+++ b/web/admin/mobile_provider/admin_mobile_provider_list.xhtml
@@ -70,7 +70,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="add_mobile_provider" value="#{msg.BUTTON_ADMIN_ADD_MOBILE_PROVIDER}" action="#{adminMobileProviderController.addMobileProvider()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_add_mobile_provider" value="#{msg.BUTTON_ADMIN_ADD_MOBILE_PROVIDER}" action="#{adminMobileProviderController.addMobileProvider()}" />
 				</div>
 			</h:panelGroup>
 
diff --git a/web/admin/user/admin_user_delete.xhtml b/web/admin/user/admin_user_delete.xhtml
index 31212c78..4c3cb46e 100644
--- a/web/admin/user/admin_user_delete.xhtml
+++ b/web/admin/user/admin_user_delete.xhtml
@@ -51,7 +51,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="button-danger" type="submit" id="delete_user" value="#{msg.BUTTON_ADMIN_DELETE_USER}" action="#{adminUserController.deleteUserData()}" />
+					<h:commandButton styleClass="button-danger" type="submit" id="button_delete_user" value="#{msg.BUTTON_ADMIN_DELETE_USER}" action="#{adminUserController.deleteUserData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/user/admin_user_edit.xhtml b/web/admin/user/admin_user_edit.xhtml
index a9975b55..6dad39e1 100644
--- a/web/admin/user/admin_user_edit.xhtml
+++ b/web/admin/user/admin_user_edit.xhtml
@@ -38,7 +38,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="edit_user" value="#{msg.BUTTON_ADMIN_EDIT_USER}" action="#{adminUserController.editUserData()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_edit_user" value="#{msg.BUTTON_ADMIN_EDIT_USER}" action="#{adminUserController.editUserData()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/admin/user/admin_user_export.xhtml b/web/admin/user/admin_user_export.xhtml
index e2542a2b..da33a133 100644
--- a/web/admin/user/admin_user_export.xhtml
+++ b/web/admin/user/admin_user_export.xhtml
@@ -183,7 +183,7 @@
 				</div>
 
 				<div class="table-footer">
-					<h:commandButton styleClass="submit" type="submit" id="export_users_xls" value="#{msg.BUTTON_ADMIN_EXPORT_USERS_XLS}">
+					<h:commandButton styleClass="submit" type="submit" id="button_export_users_xls" value="#{msg.BUTTON_ADMIN_EXPORT_USERS_XLS}">
 						<p:dataExporter type="xls" target="table_export_users" fileName="all_users" />
 					</h:commandButton>
 				</div>
diff --git a/web/admin/user/admin_user_list.xhtml b/web/admin/user/admin_user_list.xhtml
index f08378c9..af71ba3c 100644
--- a/web/admin/user/admin_user_list.xhtml
+++ b/web/admin/user/admin_user_list.xhtml
@@ -128,7 +128,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="add_user" value="#{msg.BUTTON_ADMIN_ADD_USER}" action="#{adminUserController.addUser()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_add_user" value="#{msg.BUTTON_ADMIN_ADD_USER}" action="#{adminUserController.addUser()}" />
 				</div>
 			</h:form>
 		</h:panelGroup>
diff --git a/web/guest/user/user_resend_link.xhtml b/web/guest/user/user_resend_link.xhtml
index bface6f7..8bdf9d1f 100644
--- a/web/guest/user/user_resend_link.xhtml
+++ b/web/guest/user/user_resend_link.xhtml
@@ -51,7 +51,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="resend_link" value="#{msg.BUTTON_RESEND_CONFIRMATION_LINK}" action="#{userResendConfirmationController.doResendLink()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_resend_link" value="#{msg.BUTTON_RESEND_CONFIRMATION_LINK}" action="#{userResendConfirmationController.doResendLink()}" />
 				</div>
 			</h:panelGroup>
 		</h:form>
diff --git a/web/user/login_user_change_email_address.xhtml b/web/user/login_user_change_email_address.xhtml
index 77e5d7dd..fbecaf83 100644
--- a/web/user/login_user_change_email_address.xhtml
+++ b/web/user/login_user_change_email_address.xhtml
@@ -47,7 +47,7 @@
 
 				<div class="table-footer">
 					<h:commandButton class="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton class="submit" type="submit" id="change_email" value="#{msg.BUTTON_CHANGE_EMAIL_ADDRESS}" action="#{userEmailChangeController.doUserChangeEmailAddress()}" />
+					<h:commandButton class="submit" type="submit" id="button_change_email" value="#{msg.BUTTON_CHANGE_EMAIL_ADDRESS}" action="#{userEmailChangeController.doUserChangeEmailAddress()}" />
 				</div>
 			</h:form>
 		</h:panelGroup>
diff --git a/web/user/login_user_change_password.xhtml b/web/user/login_user_change_password.xhtml
index 032ac788..ec604868 100644
--- a/web/user/login_user_change_password.xhtml
+++ b/web/user/login_user_change_password.xhtml
@@ -71,7 +71,7 @@
 
 					<div class="table-footer">
 						<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-						<h:commandButton styleClass="submit" type="submit" id="change_password" value="#{msg.BUTTON_USER_CHANGE_PASSWORD}" action="#{userPasswordController.doChangePassword()}" />
+						<h:commandButton styleClass="submit" type="submit" id="button_change_password" value="#{msg.BUTTON_USER_CHANGE_PASSWORD}" action="#{userPasswordController.doChangePassword()}" />
 					</div>
 				</h:panelGroup>
 			</h:form>
diff --git a/web/user/login_user_change_personal_data.xhtml b/web/user/login_user_change_personal_data.xhtml
index 94530db2..e5ee9bac 100644
--- a/web/user/login_user_change_personal_data.xhtml
+++ b/web/user/login_user_change_personal_data.xhtml
@@ -39,7 +39,7 @@
 
 				<div class="table-footer">
 					<h:commandButton styleClass="reset divider-right" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
-					<h:commandButton styleClass="submit" type="submit" id="change_personal_data" value="#{msg.BUTTON_CHANGE_PERSONAL_DATA}" action="#{userController.doChangePersonalData()}" />
+					<h:commandButton styleClass="submit" type="submit" id="button_change_personal_data" value="#{msg.BUTTON_CHANGE_PERSONAL_DATA}" action="#{userController.doChangePersonalData()}" />
 				</div>
 			</h:form>
 		</h:panelGroup>
-- 
2.39.5