From: Roland Häder <roland@mxchange.org>
Date: Tue, 17 Oct 2017 20:30:29 +0000 (+0200)
Subject: Please cherry-pick:
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=4df98d30c5d8735f0e3ca6f067098ee6dbfbaa37;p=pizzaservice-ejb.git

Please cherry-pick:
- renamed employee as there will be no other employees
- added administrative country EJB due to remote interface separation
- removed find*ById() as this was causing load on EJB container which can be
  prevented by application's JCache
- fixed persistence unit as entities have been moved

Signed-off-by: Roland Häder <roland@mxchange.org>
---

diff --git a/src/conf/persistence.xml b/src/conf/persistence.xml
index d7fd347..9847968 100644
--- a/src/conf/persistence.xml
+++ b/src/conf/persistence.xml
@@ -3,10 +3,10 @@
   <persistence-unit name="pizzaservice-ejbPU" transaction-type="JTA">
     <jta-data-source>jdbc/pizzaservice</jta-data-source>
     <class>org.mxchange.jcontacts.model.contact.UserContact</class>
-    <class>org.mxchange.jcontactsbusiness.model.basicdata.CompanyBasicData</class>
-    <class>org.mxchange.jcontactsbusiness.model.branchoffice.CompanyBranchOffice</class>
-    <class>org.mxchange.jcontactsbusiness.model.department.CompanyDepartment</class>
-    <class>org.mxchange.jcontactsbusiness.model.employee.CompanyEmployee</class>
+    <class>org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData</class>
+    <class>org.mxchange.jcontactsbusiness.model.branchoffice.BusinessBranchOffice</class>
+    <class>org.mxchange.jcontactsbusiness.model.department.BusinessDepartment</class>
+    <class>org.mxchange.jcontactsbusiness.model.employee.BusinessEmployee</class>
     <class>org.mxchange.jcontactsbusiness.model.headquarters.CompanyHeadquartersData</class>
     <class>org.mxchange.jcontactsbusiness.model.jobposition.EmployeePosition</class>
     <class>org.mxchange.jcontactsbusiness.model.logo.CompanyLogo</class>
diff --git a/src/java/org/mxchange/jcontacts/model/contact/PizzaContactSessionBean.java b/src/java/org/mxchange/jcontacts/model/contact/PizzaContactSessionBean.java
index 0298a3d..34d8d38 100644
--- a/src/java/org/mxchange/jcontacts/model/contact/PizzaContactSessionBean.java
+++ b/src/java/org/mxchange/jcontacts/model/contact/PizzaContactSessionBean.java
@@ -84,92 +84,6 @@ public class PizzaContactSessionBean extends BasePizzaEnterpriseBean implements
 		return emailAddresses;
 	}
 
-	@Override
-	public Contact findContactByEmailAddress (final String emailAddress) throws ContactNotFoundException {
-		// Log trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactByEmailAddress: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N
-
-		// The parameter must be valid
-		if (null == emailAddress) {
-			// Throw NPE
-			throw new NullPointerException("emailAddress is null"); //NOI18N
-		} else if (emailAddress.isEmpty()) {
-			// Not valid
-			throw new IllegalArgumentException("emailAddress is empty"); //NOI18N
-		}
-
-		// Get query instance
-		final Query query = this.getEntityManager().createNamedQuery("SearchContactByEmailAddress", UserContact.class); //NOI18N
-
-		// Set parameter and limit
-		query.setParameter("emailAddress", emailAddress); //NOI18N
-		query.setMaxResults(1);
-
-		// Init contact instance
-		final Contact contact;
-
-		// Try to find a result
-		try {
-			// Find a single result
-			contact = (Contact) query.getSingleResult();
-
-			// Log trace message
-			this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactByEmailAddress: Found contact={1}", this.getClass().getSimpleName(), contact)); //NOI18N
-		} catch (final NoResultException ex) {
-			// No result found
-			throw new ContactNotFoundException(emailAddress, ex);
-		}
-
-		// Log trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactByEmailAddress: contact={1} - EXIT!", this.getClass().getSimpleName(), contact)); //NOI18N
-
-		// Return found instance
-		return contact;
-	}
-
-	@Override
-	public Contact findContactById (final Long contactId) throws ContactNotFoundException {
-		// Log trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactById: contactId={1} - CALLED!", this.getClass().getSimpleName(), contactId)); //NOI18N
-
-		// The parameter must be valid
-		if (null == contactId) {
-			// Throw NPE
-			throw new NullPointerException("contactId is null"); //NOI18N
-		} else if (contactId < 1) {
-			// Not valid
-			throw new IllegalArgumentException(MessageFormat.format("contactId={0} is not valid", contactId)); //NOI18N
-		}
-
-		// Get query instance
-		final Query query = this.getEntityManager().createNamedQuery("SearchContactById", UserContact.class); //NOI18N
-
-		// Set parameter
-		query.setParameter("contactId", contactId); //NOI18N
-		query.setMaxResults(1);
-
-		// Init contact instance
-		final Contact contact;
-
-		// Try to find a result
-		try {
-			// Find a single result
-			contact = (Contact) query.getSingleResult();
-
-			// Log trace message
-			this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactById: Found contact={1}", this.getClass().getSimpleName(), contact)); //NOI18N
-		} catch (final NoResultException ex) {
-			// No result found
-			throw new ContactNotFoundException(contactId, ex);
-		}
-
-		// Log trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactById: contact={1} - EXIT!", this.getClass().getSimpleName(), contact)); //NOI18N
-
-		// Return found instance
-		return contact;
-	}
-
 	@Override
 	public boolean isEmailAddressRegistered (final String emailAddress) {
 		// Log trace message
@@ -327,4 +241,106 @@ public class PizzaContactSessionBean extends BasePizzaEnterpriseBean implements
 		return detachedContact;
 	}
 
+	/**
+	 * Returns a contact instance which has the given email address.
+	 * <p>
+	 * @param emailAddress Email address
+	 * <p>
+	 * @return Contact instance
+	 * <p>
+	 * @throws ContactNotFoundException If the contact was not found
+	 */
+	private Contact findContactByEmailAddress (final String emailAddress) throws ContactNotFoundException {
+		// Log trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactByEmailAddress: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N
+
+		// The parameter must be valid
+		if (null == emailAddress) {
+			// Throw NPE
+			throw new NullPointerException("emailAddress is null"); //NOI18N
+		} else if (emailAddress.isEmpty()) {
+			// Not valid
+			throw new IllegalArgumentException("emailAddress is empty"); //NOI18N
+		}
+
+		// Get query instance
+		final Query query = this.getEntityManager().createNamedQuery("SearchContactByEmailAddress", UserContact.class); //NOI18N
+
+		// Set parameter and limit
+		query.setParameter("emailAddress", emailAddress); //NOI18N
+		query.setMaxResults(1);
+
+		// Init contact instance
+		final Contact contact;
+
+		// Try to find a result
+		try {
+			// Find a single result
+			contact = (Contact) query.getSingleResult();
+
+			// Log trace message
+			this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactByEmailAddress: Found contact={1}", this.getClass().getSimpleName(), contact)); //NOI18N
+		} catch (final NoResultException ex) {
+			// No result found
+			throw new ContactNotFoundException(emailAddress, ex);
+		}
+
+		// Log trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactByEmailAddress: contact={1} - EXIT!", this.getClass().getSimpleName(), contact)); //NOI18N
+
+		// Return found instance
+		return contact;
+	}
+
+	/**
+	 * Returns a contact instance which has the given id number.
+	 * <p>
+	 * @param contactId Contact id
+	 * <p>
+	 * @return Contact instance
+	 * <p>
+	 * @throws ContactNotFoundException If the contact was not found
+	 */
+	private Contact findContactById (final Long contactId) throws ContactNotFoundException {
+		// Log trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactById: contactId={1} - CALLED!", this.getClass().getSimpleName(), contactId)); //NOI18N
+
+		// The parameter must be valid
+		if (null == contactId) {
+			// Throw NPE
+			throw new NullPointerException("contactId is null"); //NOI18N
+		} else if (contactId < 1) {
+			// Not valid
+			throw new IllegalArgumentException(MessageFormat.format("contactId={0} is not valid", contactId)); //NOI18N
+		}
+
+		// Get query instance
+		final Query query = this.getEntityManager().createNamedQuery("SearchContactById", UserContact.class); //NOI18N
+
+		// Set parameter
+		query.setParameter("contactId", contactId); //NOI18N
+		query.setMaxResults(1);
+
+		// Init contact instance
+		final Contact contact;
+
+		// Try to find a result
+		try {
+			// Find a single result
+			contact = (Contact) query.getSingleResult();
+
+			// Log trace message
+			this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactById: Found contact={1}", this.getClass().getSimpleName(), contact)); //NOI18N
+		} catch (final NoResultException ex) {
+			// No result found
+			throw new ContactNotFoundException(contactId, ex);
+		}
+
+		// Log trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactById: contact={1} - EXIT!", this.getClass().getSimpleName(), contact)); //NOI18N
+
+		// Return found instance
+		return contact;
+	}
+
 }
diff --git a/src/java/org/mxchange/jcontacts/model/phone/PizzaAdminContactPhoneSessionBean.java b/src/java/org/mxchange/jcontacts/model/phone/PizzaAdminContactPhoneSessionBean.java
index 173b509..dee137d 100644
--- a/src/java/org/mxchange/jcontacts/model/phone/PizzaAdminContactPhoneSessionBean.java
+++ b/src/java/org/mxchange/jcontacts/model/phone/PizzaAdminContactPhoneSessionBean.java
@@ -23,8 +23,8 @@ import javax.ejb.EJB;
 import javax.ejb.Stateless;
 import org.mxchange.jcontacts.model.contact.Contact;
 import org.mxchange.jcontacts.model.contact.ContactSessionBeanRemote;
-import org.mxchange.jphone.exceptions.PhoneNumberAlreadyLinkedException;
-import org.mxchange.jphone.exceptions.PhoneNumberNotLinkedException;
+import org.mxchange.jphone.exceptions.phone.PhoneNumberAlreadyLinkedException;
+import org.mxchange.jphone.exceptions.phone.PhoneNumberNotLinkedException;
 import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
 import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
 import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber;
diff --git a/src/java/org/mxchange/jcontactsbusiness/model/basicdata/PizzaAdminBusinessDataSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/basicdata/PizzaAdminBusinessDataSessionBean.java
index 90498c0..5e9d683 100644
--- a/src/java/org/mxchange/jcontactsbusiness/model/basicdata/PizzaAdminBusinessDataSessionBean.java
+++ b/src/java/org/mxchange/jcontactsbusiness/model/basicdata/PizzaAdminBusinessDataSessionBean.java
@@ -22,8 +22,8 @@ import java.util.List;
 import java.util.Objects;
 import javax.ejb.EJB;
 import javax.ejb.Stateless;
-import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicCompanyDataAlreadyAddedException;
-import org.mxchange.jcontactsbusiness.model.employee.Employee;
+import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicDataAlreadyAddedException;
+import org.mxchange.jcontactsbusiness.model.employee.Employable;
 import org.mxchange.jusercore.model.user.User;
 import org.mxchange.pizzaaplication.database.BasePizzaEnterpriseBean;
 
@@ -55,7 +55,7 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaEnterpriseBean i
 	}
 
 	@Override
-	public BusinessBasicData addCompanyBasicData (final BusinessBasicData basicData) throws BasicCompanyDataAlreadyAddedException {
+	public BasicData addBusinessBasicData (final BasicData basicData) throws BasicDataAlreadyAddedException {
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addBusinessBasicData: basicData={1} - CALLED!", this.getClass().getSimpleName(), basicData)); //NOI18N
 
@@ -68,7 +68,7 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaEnterpriseBean i
 			throw new IllegalArgumentException(MessageFormat.format("basicData.basicDataId={0} - is not null", basicData.getBasicDataId())); //NOI18N
 		} else if (this.isSameCompanyNameAdded(basicData)) {
 			// Throw exception
-			throw new BasicCompanyDataAlreadyAddedException(basicData);
+			throw new BasicDataAlreadyAddedException(basicData);
 		}
 
 		// Now add current date
@@ -84,18 +84,18 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaEnterpriseBean i
 		}
 
 		// Is a founder set?
-		if (basicData.getCompanyFounder() instanceof Employee) {
+		if (basicData.getCompanyFounder() instanceof Employable) {
 			// Get managed instance
-			final Employee managedEmployee = this.createManaged(basicData.getCompanyFounder());
+			final Employable managedEmployee = this.createManaged(basicData.getCompanyFounder());
 
 			// Set it back
 			basicData.setCompanyFounder(managedEmployee);
 		}
 
 		// Is a contact person set?
-		if (basicData.getCompanyContactEmployee() instanceof Employee) {
+		if (basicData.getCompanyContactEmployee() instanceof Employable) {
 			// Get managed instance
-			final Employee managedEmployee = this.createManaged(basicData.getCompanyContactEmployee());
+			final Employable managedEmployee = this.createManaged(basicData.getCompanyContactEmployee());
 
 			// Set it back
 			basicData.setCompanyContactEmployee(managedEmployee);
@@ -121,15 +121,15 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaEnterpriseBean i
 	 *
 	 * @return Whether same company name has been used
 	 */
-	private boolean isSameCompanyNameAdded (final BusinessBasicData basicData) {
+	private boolean isSameCompanyNameAdded (final BasicData basicData) {
 		// Get all available entries
-		final List<BusinessBasicData> list = this.businessDataBean.allCompanyBasicData();
+		final List<BasicData> list = this.businessDataBean.allBusinessBasicData();
 
 		// Default is not found
 		boolean isFound = false;
 
 		// Then check each entry
-		for (final BusinessBasicData entry : list) {
+		for (final BasicData entry : list) {
 			// Is the company name matching?
 			if (Objects.equals(entry.getCompanyName(), basicData.getCompanyName())) {
 				// Found match
diff --git a/src/java/org/mxchange/jcontactsbusiness/model/basicdata/PizzaBusinessDataSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/basicdata/PizzaBusinessDataSessionBean.java
index 6a6a9d6..f83f144 100644
--- a/src/java/org/mxchange/jcontactsbusiness/model/basicdata/PizzaBusinessDataSessionBean.java
+++ b/src/java/org/mxchange/jcontactsbusiness/model/basicdata/PizzaBusinessDataSessionBean.java
@@ -18,12 +18,9 @@ package org.mxchange.jcontactsbusiness.model.basicdata;
 
 import java.text.MessageFormat;
 import java.util.List;
-import java.util.Objects;
 import javax.ejb.Stateless;
-import javax.persistence.NoResultException;
 import javax.persistence.Query;
 import org.mxchange.pizzaaplication.database.BasePizzaEnterpriseBean;
-import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicCompanyDataNotFoundException;
 
 /**
  * A stateless session bean for business data
@@ -48,7 +45,7 @@ public class PizzaBusinessDataSessionBean extends BasePizzaEnterpriseBean implem
 
 	@Override
 	@SuppressWarnings ("unchecked")
-	public List<BusinessBasicData> allCompanyBasicData () {
+	public List<BasicData> allBusinessBasicData () {
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allBusinessContacts: CALLED!", this.getClass().getSimpleName())); //NOI18N
 
@@ -56,7 +53,7 @@ public class PizzaBusinessDataSessionBean extends BasePizzaEnterpriseBean implem
 		final Query query = this.getEntityManager().createNamedQuery("AllBusinessData"); //NOI18N
 
 		// Get list from it
-		final List<BusinessBasicData> list = query.getResultList();
+		final List<BasicData> list = query.getResultList();
 
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allBusinessContacts: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N
@@ -65,85 +62,4 @@ public class PizzaBusinessDataSessionBean extends BasePizzaEnterpriseBean implem
 		return list;
 	}
 
-	@Override
-	public BusinessBasicData findBasicDataById (final Long basicDataId) throws BasicCompanyDataNotFoundException {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBasicDataById: CALLED!", this.getClass().getSimpleName())); //NOI18N
-
-		// Validate parameter
-		if (null == basicDataId) {
-			// Throw NPE
-			throw new NullPointerException("basicDataId is null"); //NOI18N
-		} else if (basicDataId < 1) {
-			// Throw NPE
-			throw new NullPointerException(MessageFormat.format("basicDataId={0}is invalid", basicDataId)); //NOI18N
-		}
-
-		// Get query
-		final Query query = this.getEntityManager().createNamedQuery("SearchBusinessDataById", CompanyBasicData.class); //NOI18N
-
-		// Set parameter
-		query.setParameter("basicDataId", basicDataId); //NOI18N
-
-		// Get single instance
-		final BusinessBasicData basicData;
-
-		// Try to find a result
-		try {
-			// Find a single result
-			basicData = (BusinessBasicData) query.getSingleResult();
-
-			// Log trace message
-			this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBasicDataById: Found basicData={1}", this.getClass().getSimpleName(), basicData)); //NOI18N
-		} catch (final NoResultException ex) {
-			// No result found
-			throw new BasicCompanyDataNotFoundException(basicDataId, ex);
-		}
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBasicDataById: basicData={1} - EXIT!", this.getClass().getSimpleName(), basicData)); //NOI18N
-
-		// Return it
-		return basicData;
-	}
-
-	@Override
-	public Boolean isCompanyNameUsed (final String companyName) {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isCompanyNameUsed: companyName={1} - CALLED!", this.getClass().getSimpleName(), companyName)); //NOI18N
-
-		// Is the parameter valid?
-		if (null == companyName) {
-			// Throw NPE
-			throw new NullPointerException("companyName is null"); //NOI18N
-		} else if (companyName.isEmpty()) {
-			// Throw IAE
-			throw new IllegalArgumentException("companyName is empty"); //NOI18N
-		}
-
-		// Default is not found
-		Boolean isCompanyNameUsed = Boolean.FALSE;
-
-		// Get whole list
-		final List<BusinessBasicData> list = this.allCompanyBasicData();
-
-		// Check whole list
-		for (final BusinessBasicData basicData : list) {
-			// Is name used?
-			if (Objects.equals(basicData.getCompanyName(), companyName)) {
-				// Found one
-				isCompanyNameUsed = Boolean.TRUE;
-
-				// Abort search
-				break;
-			}
-		}
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isCompanyNameUsed: isCompanyNameUsed={1} - EXIT!", this.getClass().getSimpleName(), isCompanyNameUsed)); //NOI18N
-
-		// Return it
-		return isCompanyNameUsed;
-	}
-
 }
diff --git a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/PizzaAdminBranchOfficeSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/PizzaAdminBranchOfficeSessionBean.java
index d924dbe..8e1c654 100644
--- a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/PizzaAdminBranchOfficeSessionBean.java
+++ b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/PizzaAdminBranchOfficeSessionBean.java
@@ -22,11 +22,11 @@ import java.util.List;
 import javax.ejb.EJB;
 import javax.ejb.Stateless;
 import org.mxchange.jcontactsbusiness.exceptions.branchoffice.BranchOfficeAlreadyAddedException;
-import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData;
 import org.mxchange.jcontactsbusiness.model.opening_time.OpeningTime;
 import org.mxchange.jcountry.model.data.Country;
 import org.mxchange.jusercore.model.user.User;
 import org.mxchange.pizzaaplication.database.BasePizzaEnterpriseBean;
+import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
 
 /**
  * A stateless session bean for administrative branch office purposes
@@ -76,9 +76,9 @@ public class PizzaAdminBranchOfficeSessionBean extends BasePizzaEnterpriseBean i
 		branchOffice.setBranchCreated(new Date());
 
 		// Is user instance set?
-		if (branchOffice.getBranchCompany() instanceof BusinessBasicData) {
+		if (branchOffice.getBranchCompany() instanceof BasicData) {
 			// Get managed instance back
-			final BusinessBasicData managedBasicData = this.createManaged(branchOffice.getBranchCompany());
+			final BasicData managedBasicData = this.createManaged(branchOffice.getBranchCompany());
 
 			// Set it back in branch office
 			branchOffice.setBranchCompany(managedBasicData);
diff --git a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/PizzaBranchOfficeSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/PizzaBranchOfficeSessionBean.java
index 2557638..d6f801e 100644
--- a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/PizzaBranchOfficeSessionBean.java
+++ b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/PizzaBranchOfficeSessionBean.java
@@ -19,10 +19,8 @@ package org.mxchange.jcontactsbusiness.model.branchoffice;
 import java.text.MessageFormat;
 import java.util.List;
 import javax.ejb.Stateless;
-import javax.persistence.NoResultException;
 import javax.persistence.Query;
 import org.mxchange.pizzaaplication.database.BasePizzaEnterpriseBean;
-import org.mxchange.jcontactsbusiness.exceptions.branchoffice.BranchOfficeNotFoundException;
 
 /**
  * A stateless session bean for general branch office purposes
@@ -56,46 +54,4 @@ public class PizzaBranchOfficeSessionBean extends BasePizzaEnterpriseBean implem
 		return list;
 	}
 
-	@Override
-	public BranchOffice findBranchOfficeById (final Long branchOfficeId) throws BranchOfficeNotFoundException {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBranchOfficeById: CALLED!", this.getClass().getSimpleName())); //NOI18N
-
-		// Validate parameter
-		if (null == branchOfficeId) {
-			// Throw NPE
-			throw new NullPointerException("branchOfficeId is null"); //NOI18N
-		} else if (branchOfficeId < 1) {
-			// Throw NPE
-			throw new NullPointerException(MessageFormat.format("branchOfficeId={0}is invalid", branchOfficeId)); //NOI18N
-		}
-
-		// Get query
-		final Query query = this.getEntityManager().createNamedQuery("SearchBranchOfficeById", CompanyBranchOffice.class); //NOI18N
-
-		// Set parameter
-		query.setParameter("branchOfficeId", branchOfficeId); //NOI18N
-
-		// Get single instance
-		final BranchOffice branchOffice;
-
-		// Try to find a result
-		try {
-			// Find a single result
-			branchOffice = (BranchOffice) query.getSingleResult();
-
-			// Log trace message
-			this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBranchOfficeById: Found branchOffice={1}", this.getClass().getSimpleName(), branchOffice)); //NOI18N
-		} catch (final NoResultException ex) {
-			// No result found
-			throw new BranchOfficeNotFoundException(branchOfficeId, ex);
-		}
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBranchOfficeById: branchOffice={1} - EXIT!", this.getClass().getSimpleName(), branchOffice)); //NOI18N
-
-		// Return it
-		return branchOffice;
-	}
-
 }
diff --git a/src/java/org/mxchange/jcontactsbusiness/model/department/PizzaAdminDepartmentSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/department/PizzaAdminDepartmentSessionBean.java
index 6849c36..f1fd2e7 100644
--- a/src/java/org/mxchange/jcontactsbusiness/model/department/PizzaAdminDepartmentSessionBean.java
+++ b/src/java/org/mxchange/jcontactsbusiness/model/department/PizzaAdminDepartmentSessionBean.java
@@ -22,12 +22,12 @@ import java.util.List;
 import javax.ejb.EJB;
 import javax.ejb.Stateless;
 import org.mxchange.jcontactsbusiness.exceptions.department.DepartmentAlreadyAddedException;
-import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData;
 import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffice;
-import org.mxchange.jcontactsbusiness.model.employee.Employee;
 import org.mxchange.jcontactsbusiness.model.headquarters.HeadquartersData;
 import org.mxchange.jfinancials.database.BasePizzaEnterpriseBean;
 import org.mxchange.jusercore.model.user.User;
+import org.mxchange.jcontactsbusiness.model.employee.Employable;
+import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
 
 /**
  * A stateless session bean for administrative department purposes
@@ -92,7 +92,7 @@ public class PizzaAdminDepartmentSessionBean extends BasePizzaEnterpriseBean imp
 		department.setDepartmentCreated(new Date());
 
 		// Get managed basic data instance
-		final BusinessBasicData managedBasicData = this.createManaged(department.getDepartmentCompany());
+		final BasicData managedBasicData = this.createManaged(department.getDepartmentCompany());
 
 		// Set it back
 		department.setDepartmentCompany(managedBasicData);
@@ -116,9 +116,9 @@ public class PizzaAdminDepartmentSessionBean extends BasePizzaEnterpriseBean imp
 		}
 
 		// Is lead employee set?
-		if (department.getDepartmentLead()instanceof Employee) {
+		if (department.getDepartmentLead()instanceof Employable) {
 			// Get managed lead employee
-			final Employee managedEmployee = this.createManaged(department.getDepartmentLead());
+			final Employable managedEmployee = this.createManaged(department.getDepartmentLead());
 
 			// Set it back
 			department.setDepartmentLead(managedEmployee);
diff --git a/src/java/org/mxchange/jcontactsbusiness/model/department/PizzaDepartmentSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/department/PizzaDepartmentSessionBean.java
index b75845b..7966d2f 100644
--- a/src/java/org/mxchange/jcontactsbusiness/model/department/PizzaDepartmentSessionBean.java
+++ b/src/java/org/mxchange/jcontactsbusiness/model/department/PizzaDepartmentSessionBean.java
@@ -19,9 +19,7 @@ package org.mxchange.jcontactsbusiness.model.department;
 import java.text.MessageFormat;
 import java.util.List;
 import javax.ejb.Stateless;
-import javax.persistence.NoResultException;
 import javax.persistence.Query;
-import org.mxchange.jcontactsbusiness.exceptions.department.DepartmentNotFoundException;
 import org.mxchange.jfinancials.database.BasePizzaEnterpriseBean;
 
 /**
@@ -56,46 +54,4 @@ public class PizzaDepartmentSessionBean extends BasePizzaEnterpriseBean implemen
 		return list;
 	}
 
-	@Override
-	public Department findDepartmentById (final Long departmentId) throws DepartmentNotFoundException {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findDepartmentById: CALLED!", this.getClass().getSimpleName())); //NOI18N
-
-		// Validate parameter
-		if (null == departmentId) {
-			// Throw NPE
-			throw new NullPointerException("departmentId is null"); //NOI18N
-		} else if (departmentId < 1) {
-			// Throw NPE
-			throw new NullPointerException(MessageFormat.format("departmentId={0}is invalid", departmentId)); //NOI18N
-		}
-
-		// Get query
-		final Query query = this.getEntityManager().createNamedQuery("SearchDepartmentById", CompanyDepartment.class); //NOI18N
-
-		// Set parameter
-		query.setParameter("departmentId", departmentId); //NOI18N
-
-		// Get single instance
-		final Department department;
-
-		// Try to find a result
-		try {
-			// Find a single result
-			department = (Department) query.getSingleResult();
-
-			// Log trace message
-			this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findDepartmentById: Found department={1}", this.getClass().getSimpleName(), department)); //NOI18N
-		} catch (final NoResultException ex) {
-			// No result found
-			throw new DepartmentNotFoundException(departmentId, ex);
-		}
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findDepartmentById: department={1} - EXIT!", this.getClass().getSimpleName(), department)); //NOI18N
-
-		// Return it
-		return department;
-	}
-
 }
diff --git a/src/java/org/mxchange/jcontactsbusiness/model/opening_time/PizzaOpeningTimesSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/opening_time/PizzaOpeningTimesSessionBean.java
index 104ec79..3bf5072 100644
--- a/src/java/org/mxchange/jcontactsbusiness/model/opening_time/PizzaOpeningTimesSessionBean.java
+++ b/src/java/org/mxchange/jcontactsbusiness/model/opening_time/PizzaOpeningTimesSessionBean.java
@@ -19,9 +19,7 @@ package org.mxchange.jcontactsbusiness.model.opening_time;
 import java.text.MessageFormat;
 import java.util.List;
 import javax.ejb.Stateless;
-import javax.persistence.NoResultException;
 import javax.persistence.Query;
-import org.mxchange.jcontactsbusiness.exceptions.opening_time.OpeningTimeNotFoundException;
 import org.mxchange.jfinancials.database.BasePizzaEnterpriseBean;
 
 /**
@@ -56,46 +54,4 @@ public class PizzaOpeningTimesSessionBean extends BasePizzaEnterpriseBean implem
 		return list;
 	}
 
-	@Override
-	public OpeningTime findOpeningTimesById (final Long departmentId) throws OpeningTimeNotFoundException {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findOpeningTimesById: CALLED!", this.getClass().getSimpleName())); //NOI18N
-
-		// Validate parameter
-		if (null == departmentId) {
-			// Throw NPE
-			throw new NullPointerException("departmentId is null"); //NOI18N
-		} else if (departmentId < 1) {
-			// Throw NPE
-			throw new NullPointerException(MessageFormat.format("departmentId={0}is invalid", departmentId)); //NOI18N
-		}
-
-		// Get query
-		final Query query = this.getEntityManager().createNamedQuery("SearchOpeningTimesById", BusinessOpeningTime.class); //NOI18N
-
-		// Set parameter
-		query.setParameter("departmentId", departmentId); //NOI18N
-
-		// Get single instance
-		final OpeningTime department;
-
-		// Try to find a result
-		try {
-			// Find a single result
-			department = (OpeningTime) query.getSingleResult();
-
-			// Log trace message
-			this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findOpeningTimesById: Found department={1}", this.getClass().getSimpleName(), department)); //NOI18N
-		} catch (final NoResultException ex) {
-			// No result found
-			throw new OpeningTimeNotFoundException(departmentId, ex);
-		}
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findOpeningTimesById: department={1} - EXIT!", this.getClass().getSimpleName(), department)); //NOI18N
-
-		// Return it
-		return department;
-	}
-
 }
diff --git a/src/java/org/mxchange/jcountry/model/data/PizzaAdminCountrySingletonBean.java b/src/java/org/mxchange/jcountry/model/data/PizzaAdminCountrySingletonBean.java
new file mode 100644
index 0000000..c0db475
--- /dev/null
+++ b/src/java/org/mxchange/jcountry/model/data/PizzaAdminCountrySingletonBean.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2016, 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.jcountry.model.data;
+
+import java.text.MessageFormat;
+import java.util.Date;
+import javax.ejb.Stateless;
+import javax.persistence.NoResultException;
+import javax.persistence.Query;
+import org.mxchange.jcountry.exceptions.CountryAlreadyAddedException;
+import org.mxchange.pizzaapplication.enterprise.BasePizzaEnterpriseBean;
+
+/**
+ * A stateless EJB for administrative country purposes
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@Stateless (name = "adminCountry", description = "A stateless session-scoped bean for administrative country purposes")
+public class PizzaAdminCountrySingletonBean extends BasePizzaEnterpriseBean implements AdminCountrySessionBeanRemote {
+
+	/**
+	 * Serial number
+	 */
+	private static final long serialVersionUID = 15_846_983_298_691_208L;
+
+	/**
+	 * Default constructor
+	 */
+	public PizzaAdminCountrySingletonBean () {
+		// Call super constructor
+		super();
+	}
+
+	@Override
+	public Country addCountry (final Country country) throws CountryAlreadyAddedException {
+		// Trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addCountry: country={1} - CALLED!", this.getClass().getSimpleName(), country)); //NOI18N
+
+		// Is it already there?
+		if (null == country) {
+			// Throw NPE
+			throw new NullPointerException("country is null"); //NOI18N
+		} else if (country.getCountryCode().isEmpty()) {
+			// Code is not set
+			throw new IllegalArgumentException("country.countryCode is empty"); //NOI18N
+		} else if (country.getCountryI18nKey().isEmpty()) {
+			// I18n key is not set
+			throw new IllegalArgumentException("country.countryI18nKey is empty"); //NOI18N
+		} else if (country.getCountryId() != null) {
+			// Should be null
+			throw new IllegalArgumentException(MessageFormat.format("country.countryId is not null ({0})", country.getCountryId())); //NOI18N
+		} else if (this.isCountryAdded(country)) {
+			// Yes, then abort here
+			throw new CountryAlreadyAddedException(country);
+		}
+
+		// Add timestamp
+		country.setCountryEntryCreated(new Date());
+
+		// It is not added, so persist it
+		this.getEntityManager().persist(country);
+
+		// Trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addCountry: country={1} - EXIT!", this.getClass().getSimpleName(), country)); //NOI18N
+
+		// Return updated instance
+		return country;
+	}
+
+	/**
+	 * Checks whether given country is already added by i18n key or country
+	 * code, what comes first.
+	 * <p>
+	 * @param country Country instance to check
+	 * <p>
+	 * @return Whether the country was found
+	 */
+	private boolean isCountryAdded (final Country country) {
+		if (null == country) {
+			// Throw NPE
+			throw new NullPointerException("country is null"); //NOI18N
+		} else if (country.getCountryCode().isEmpty()) {
+			// Code is not set
+			throw new IllegalArgumentException("country.countryCode is empty"); //NOI18N
+		} else if (country.getCountryI18nKey().isEmpty()) {
+			// I18n key is not set
+			throw new IllegalArgumentException("country.countryI18nKey is empty"); //NOI18N
+		} else if (country.getCountryId() != null) {
+			// Should be null
+			throw new IllegalArgumentException(MessageFormat.format("country.countryId is not null ({0})", country.getCountryId())); //NOI18N
+		}
+
+		// Default is not found
+		boolean isAdded = false;
+
+		// Get query instance
+		final Query query = this.getEntityManager().createNamedQuery("SearchCountryByCodeI18nKey", CountryData.class); //NOI18N
+
+		// Assign all parameters
+		query.setParameter("code", country.getCountryCode()); //NOI18N
+		query.setParameter("key", country.getCountryI18nKey()); //NOI18N
+
+		// Try to get a single result
+		try {
+			// Get single result
+			final Country foundCountry = (Country) query.getSingleResult();
+
+			// Found it?
+			isAdded = (foundCountry instanceof Country);
+		} catch (final NoResultException ex) {
+			// Not found, don't log this
+		}
+
+		// Return result
+		return isAdded;
+	}
+
+}
diff --git a/src/java/org/mxchange/jcountry/model/data/PizzaCountrySingletonBean.java b/src/java/org/mxchange/jcountry/model/data/PizzaCountrySingletonBean.java
index a8a8ea3..2536b80 100644
--- a/src/java/org/mxchange/jcountry/model/data/PizzaCountrySingletonBean.java
+++ b/src/java/org/mxchange/jcountry/model/data/PizzaCountrySingletonBean.java
@@ -17,13 +17,10 @@
 package org.mxchange.jcountry.model.data;
 
 import java.text.MessageFormat;
-import java.util.Date;
 import java.util.List;
 import javax.ejb.Singleton;
 import javax.ejb.Startup;
-import javax.persistence.NoResultException;
 import javax.persistence.Query;
-import org.mxchange.jcountry.exceptions.CountryAlreadyAddedException;
 import org.mxchange.pizzaaplication.database.BasePizzaEnterpriseBean;
 
 /**
@@ -48,42 +45,6 @@ public class PizzaCountrySingletonBean extends BasePizzaEnterpriseBean implement
 		super();
 	}
 
-	@Override
-	public Country addCountry (final Country country) throws CountryAlreadyAddedException {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addCountry: country={1} - CALLED!", this.getClass().getSimpleName(), country)); //NOI18N
-
-		// Is it already there?
-		if (null == country) {
-			// Throw NPE
-			throw new NullPointerException("country is null"); //NOI18N
-		} else if (country.getCountryCode().isEmpty()) {
-			// Code is not set
-			throw new IllegalArgumentException("country.countryCode is empty"); //NOI18N
-		} else if (country.getCountryI18nKey().isEmpty()) {
-			// I18n key is not set
-			throw new IllegalArgumentException("country.countryI18nKey is empty"); //NOI18N
-		} else if (country.getCountryId() != null) {
-			// Should be null
-			throw new IllegalArgumentException(MessageFormat.format("country.countryId is not null ({0})", country.getCountryId())); //NOI18N
-		} else if (this.isCountryAdded(country)) {
-			// Yes, then abort here
-			throw new CountryAlreadyAddedException(country);
-		}
-
-		// Add timestamp
-		country.setCountryEntryCreated(new Date());
-
-		// It is not added, so persist it
-		this.getEntityManager().persist(country);
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addCountry: country={1} - EXIT!", this.getClass().getSimpleName(), country)); //NOI18N
-
-		// Return updated instance
-		return country;
-	}
-
 	@Override
 	@SuppressWarnings ("unchecked")
 	public List<Country> allCountries () {
@@ -103,52 +64,4 @@ public class PizzaCountrySingletonBean extends BasePizzaEnterpriseBean implement
 		return countries;
 	}
 
-	/**
-	 * Checks whether given country is already added by i18n key or country
-	 * code, what comes first.
-	 * <p>
-	 * @param country Country instance to check
-	 * <p>
-	 * @return Whether the country was found
-	 */
-	private boolean isCountryAdded (final Country country) {
-		if (null == country) {
-			// Throw NPE
-			throw new NullPointerException("country is null"); //NOI18N
-		} else if (country.getCountryCode().isEmpty()) {
-			// Code is not set
-			throw new IllegalArgumentException("country.countryCode is empty"); //NOI18N
-		} else if (country.getCountryI18nKey().isEmpty()) {
-			// I18n key is not set
-			throw new IllegalArgumentException("country.countryI18nKey is empty"); //NOI18N
-		} else if (country.getCountryId() != null) {
-			// Should be null
-			throw new IllegalArgumentException(MessageFormat.format("country.countryId is not null ({0})", country.getCountryId())); //NOI18N
-		}
-
-		// Default is not found
-		boolean isAdded = false;
-
-		// Get query instance
-		final Query query = this.getEntityManager().createNamedQuery("SearchCountryByCodeI18nKey", CountryData.class); //NOI18N
-
-		// Assign all parameters
-		query.setParameter("code", country.getCountryCode()); //NOI18N
-		query.setParameter("key", country.getCountryI18nKey()); //NOI18N
-
-		// Try to get a single result
-		try {
-			// Get single result
-			final Country foundCountry = (Country) query.getSingleResult();
-
-			// Found it?
-			isAdded = (foundCountry instanceof Country);
-		} catch (final NoResultException ex) {
-			// Not found, don't log this
-		}
-
-		// Return result
-		return isAdded;
-	}
-
 }
diff --git a/src/java/org/mxchange/jphone/model/phonenumbers/phone/PizzaPhoneSessionBean.java b/src/java/org/mxchange/jphone/model/phonenumbers/phone/PizzaPhoneSessionBean.java
index 26b665b..3a1ec0d 100644
--- a/src/java/org/mxchange/jphone/model/phonenumbers/phone/PizzaPhoneSessionBean.java
+++ b/src/java/org/mxchange/jphone/model/phonenumbers/phone/PizzaPhoneSessionBean.java
@@ -19,7 +19,6 @@ package org.mxchange.jphone.model.phonenumbers.phone;
 import java.text.MessageFormat;
 import java.util.List;
 import javax.ejb.Stateless;
-import javax.persistence.NoResultException;
 import javax.persistence.Query;
 import org.mxchange.jphone.exceptions.PhoneEntityNotFoundException;
 import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
@@ -108,121 +107,4 @@ public class PizzaPhoneSessionBean extends BasePizzaEnterpriseBean implements Ph
 		return list;
 	}
 
-	@Override
-	public DialableFaxNumber findFaxNumberById (final Long faxNumberId) throws PhoneEntityNotFoundException {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findFaxNumberById: mobileNumberId={1} - CALLED!", this.getClass().getSimpleName(), faxNumberId)); //NOI18N
-
-		// The id number should be valid
-		if (null == faxNumberId) {
-			// Throw NPE
-			throw new NullPointerException("faxNumberId is null"); //NOI18N
-		} else if (faxNumberId < 1) {
-			// Not valid
-			throw new IllegalArgumentException(MessageFormat.format("faxNumberId={0} is not valid.", faxNumberId)); //NOI18N
-		}
-
-		// Now find it
-		final Query query = this.getEntityManager().createNamedQuery("SearchFaxNumberId", FaxNumber.class); //NOI18N
-
-		// Set parameter
-		query.setParameter("faxNumberId", faxNumberId); //NOI18N
-
-		// Init instance
-		final DialableFaxNumber faxNumber;
-
-		// Try to get a result
-		try {
-			// Get a single result
-			faxNumber = (DialableFaxNumber) query.getSingleResult();
-		} catch (NoResultException ex) {
-			// The entry was not found, so throw it again
-			throw new PhoneEntityNotFoundException(faxNumberId, ex);
-		}
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findFaxNumberById: mobile={1} - EXIT!", this.getClass().getSimpleName(), faxNumber)); //NOI18N
-
-		// Return found instance
-		return faxNumber;
-	}
-
-	@Override
-	public DialableLandLineNumber findLandLineNumberById (final Long landLineNumberId) throws PhoneEntityNotFoundException {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findLandLineNumberById: mobileNumberId={1} - CALLED!", this.getClass().getSimpleName(), landLineNumberId)); //NOI18N
-
-		// The id number should be valid
-		if (null == landLineNumberId) {
-			// Throw NPE
-			throw new NullPointerException("landLineNumberId is null"); //NOI18N
-		} else if (landLineNumberId < 1) {
-			// Not valid
-			throw new IllegalArgumentException(MessageFormat.format("landLineNumberId={0} is not valid.", landLineNumberId)); //NOI18N
-		}
-
-		// Now find it
-		final Query query = this.getEntityManager().createNamedQuery("SearchLandLineNumberId", LandLineNumber.class); //NOI18N
-
-		// Set parameter
-		query.setParameter("landLineNumberId", landLineNumberId); //NOI18N
-
-		// Init instance
-		final DialableLandLineNumber landLineNumber;
-
-		// Try to get a result
-		try {
-			// Get a single result
-			landLineNumber = (DialableLandLineNumber) query.getSingleResult();
-		} catch (NoResultException ex) {
-			// The entry was not found, so throw it again
-			throw new PhoneEntityNotFoundException(landLineNumberId, ex);
-		}
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findLandLineNumberById: mobile={1} - EXIT!", this.getClass().getSimpleName(), landLineNumber)); //NOI18N
-
-		// Return found instance
-		return landLineNumber;
-	}
-
-	@Override
-	public DialableMobileNumber findMobileNumberById (final Long mobileNumberId) throws PhoneEntityNotFoundException {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findMobileNumberById: mobileNumberId={1} - CALLED!", this.getClass().getSimpleName(), mobileNumberId)); //NOI18N
-
-		// The id number should be valid
-		if (null == mobileNumberId) {
-			// Throw NPE
-			throw new NullPointerException("mobileNumberId is null"); //NOI18N
-		} else if (mobileNumberId < 1) {
-			// Not valid
-			throw new IllegalArgumentException(MessageFormat.format("mobileNumberId={0} is not valid.", mobileNumberId)); //NOI18N
-		}
-
-		// Now find it
-		final Query query = this.getEntityManager().createNamedQuery("SearchMobileNumberId", MobileNumber.class); //NOI18N
-
-		// Set parameter
-		query.setParameter("mobileNumberId", mobileNumberId); //NOI18N
-
-		// Init instance
-		final DialableMobileNumber mobile;
-
-		// Try to get a result
-		try {
-			// Get a single result
-			mobile = (DialableMobileNumber) query.getSingleResult();
-		} catch (NoResultException ex) {
-			// The entry was not found, so throw it again
-			throw new PhoneEntityNotFoundException(mobileNumberId, ex);
-		}
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findMobileNumberById: mobile={1} - EXIT!", this.getClass().getSimpleName(), mobile)); //NOI18N
-
-		// Return found instance
-		return mobile;
-	}
-
 }
diff --git a/src/java/org/mxchange/jusercore/model/user/PizzaUserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/PizzaUserSessionBean.java
index 1427407..7ffbbb9 100644
--- a/src/java/org/mxchange/jusercore/model/user/PizzaUserSessionBean.java
+++ b/src/java/org/mxchange/jusercore/model/user/PizzaUserSessionBean.java
@@ -252,39 +252,6 @@ public class PizzaUserSessionBean extends BasePizzaEnterpriseBean implements Use
 		return foundUser;
 	}
 
-	@Override
-	public User findUserById (final Long userId) throws UserNotFoundException {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findUserById: userId={1} - CALLED!", this.getClass().getSimpleName(), userId)); //NOI18N
-
-		// Is the parameter valid?
-		if (null == userId) {
-			// Throw NPE
-			throw new NullPointerException("userId is null"); //NOI18N
-		} else if (userId < 1) {
-			// Not valid
-			throw new IllegalArgumentException(MessageFormat.format("userId={0} is not valid", userId)); //NOI18N
-		} else if (!this.ifUserIdExists(userId)) {
-			// Does not exist
-			throw new UserNotFoundException(userId);
-		}
-
-		// Create query instance
-		final Query query = this.getEntityManager().createNamedQuery("SearchUserById", LoginUser.class); //NOI18N
-
-		// Set user id
-		query.setParameter("id", userId); //NOI18N
-
-		// Fetch the result, it should be there by now
-		final User user = (User) query.getSingleResult();
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findUserById: user={1} - EXIT!", this.getClass().getSimpleName(), user)); //NOI18N
-
-		// Return found user
-		return user;
-	}
-
 	@Override
 	public String generateRandomUserName () {
 		// Trace message
@@ -379,54 +346,6 @@ public class PizzaUserSessionBean extends BasePizzaEnterpriseBean implements Use
 		return true;
 	}
 
-	@Override
-	public boolean ifUserIdExists (final Long userId) {
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserIdExists: userId={1} - CALLED!", this.getClass().getSimpleName(), userId)); //NOI18N
-
-		// userId should not be null
-		if (null == userId) {
-			// Abort here
-			throw new NullPointerException("userId is null"); //NOI18N
-		} else if (userId < 1) {
-			// Invalid number
-			throw new IllegalArgumentException(MessageFormat.format("userId={0} is not valid", userId)); //NOI18N
-		}
-
-		// Generate query
-		final Query query = this.getEntityManager().createNamedQuery("SearchUserById", LoginUser.class); //NOI18N
-
-		// Set parameter
-		query.setParameter("id", userId); //NOI18N
-
-		// Try this
-		try {
-			// Try to get single result
-			final User dummy = (User) query.getSingleResult();
-
-			// Debug message
-			this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.ifUserIdExists: dummy.userId={1} found.", this.getClass().getSimpleName(), dummy.getUserId())); //NOI18N
-		} catch (final NoResultException ex) {
-			// Log it
-			this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.ifUserIdExists: getSingleResult() returned no result: {1}", this.getClass().getSimpleName(), ex)); //NOI18N
-
-			// User name does not exist
-			return false;
-		} catch (final PersistenceException ex) {
-			// Something bad happened
-			this.getLoggerBeanLocal().logWarning(MessageFormat.format("More than one user id {0} found.", userId, ex)); //NOI18N
-
-			// Throw again
-			throw ex;
-		}
-
-		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserIdExists: Found userId={1} - EXIT!", this.getClass().getSimpleName(), userId)); //NOI18N
-
-		// Found it
-		return true;
-	}
-
 	@Override
 	public boolean ifUserNameExists (final String userName) {
 		// Trace message
diff --git a/src/java/org/mxchange/pizzaapplication/enterprise/BasePizzaEnterpriseBean.java b/src/java/org/mxchange/pizzaapplication/enterprise/BasePizzaEnterpriseBean.java
index 26661c3..189fce1 100644
--- a/src/java/org/mxchange/pizzaapplication/enterprise/BasePizzaEnterpriseBean.java
+++ b/src/java/org/mxchange/pizzaapplication/enterprise/BasePizzaEnterpriseBean.java
@@ -31,11 +31,9 @@ import org.mxchange.jcontacts.model.contact.Contact;
 import org.mxchange.jcontacts.model.contact.ContactUtils;
 import org.mxchange.jcontacts.model.contact.UserContact;
 import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData;
-import org.mxchange.jcontactsbusiness.model.basicdata.CompanyBasicData;
 import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffice;
-import org.mxchange.jcontactsbusiness.model.branchoffice.CompanyBranchOffice;
-import org.mxchange.jcontactsbusiness.model.employee.CompanyEmployee;
-import org.mxchange.jcontactsbusiness.model.employee.Employee;
+import org.mxchange.jcontactsbusiness.model.branchoffice.BusinessBranchOffice;
+import org.mxchange.jcontactsbusiness.model.employee.BusinessEmployee;
 import org.mxchange.jcontactsbusiness.model.headquarters.CompanyHeadquartersData;
 import org.mxchange.jcontactsbusiness.model.headquarters.HeadquartersData;
 import org.mxchange.jcontactsbusiness.model.opening_time.OpeningTime;
@@ -54,6 +52,8 @@ import org.mxchange.jphone.utils.PhoneUtils;
 import org.mxchange.jusercore.model.user.LoginUser;
 import org.mxchange.jusercore.model.user.User;
 import org.mxchange.jusercore.model.user.UserUtils;
+import org.mxchange.jcontactsbusiness.model.employee.Employable;
+import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
 
 /**
  * A helper class for beans that access the database.
@@ -372,7 +372,7 @@ public abstract class BasePizzaEnterpriseBean extends BaseEnterpriseBean {
 	 * <p>
 	 * @return Managed basic data instance
 	 */
-	protected BusinessBasicData createManaged (final BusinessBasicData basicData) {
+	protected BasicData createManaged (final BasicData basicData) {
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: basicData={1} - CALLED!", this.getClass().getSimpleName(), basicData)); //NOI18N
 
@@ -389,10 +389,10 @@ public abstract class BasePizzaEnterpriseBean extends BaseEnterpriseBean {
 		}
 
 		// Try to find it (should be there)
-		final BusinessBasicData managedBasicData = this.getEntityManager().find(CompanyBasicData.class, basicData.getBasicDataId());
+		final BasicData managedBasicData = this.getEntityManager().find(BusinessBasicData.class, basicData.getBasicDataId());
 
 		// Should be there
-		assert (managedBasicData instanceof BusinessBasicData) : "managedBasicData is null"; //NOI18N
+		assert (managedBasicData instanceof BasicData) : "managedBasicData is null"; //NOI18N
 
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: managedBasicData={1} - EXIT!", this.getClass().getSimpleName(), managedBasicData)); //NOI18N
@@ -425,10 +425,10 @@ public abstract class BasePizzaEnterpriseBean extends BaseEnterpriseBean {
 		}
 
 		// Try to find it (should be there)
-		final BranchOffice managedBranchOffice = this.getEntityManager().find(CompanyBranchOffice.class, branchOffice.getBranchId());
+		final BranchOffice managedBranchOffice = this.getEntityManager().find(BusinessBranchOffice.class, branchOffice.getBranchId());
 
 		// Should be there
-		assert (managedBranchOffice instanceof BusinessBasicData) : "managedBranchOffice is null"; //NOI18N
+		assert (managedBranchOffice instanceof BasicData) : "managedBranchOffice is null"; //NOI18N
 
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: managedBranchOffice={1} - EXIT!", this.getClass().getSimpleName(), managedBranchOffice)); //NOI18N
@@ -444,7 +444,7 @@ public abstract class BasePizzaEnterpriseBean extends BaseEnterpriseBean {
 	 * <p>
 	 * @return Managed employee instance
 	 */
-	protected Employee createManaged (final Employee employee) {
+	protected Employable createManaged (final Employable employee) {
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: employee={1} - CALLED!", this.getClass().getSimpleName(), employee)); //NOI18N
 
@@ -461,10 +461,10 @@ public abstract class BasePizzaEnterpriseBean extends BaseEnterpriseBean {
 		}
 
 		// Try to find it (should be there)
-		final Employee managedEmployee = this.getEntityManager().find(CompanyEmployee.class, employee.getEmployeeId());
+		final Employable managedEmployee = this.getEntityManager().find(BusinessEmployee.class, employee.getEmployeeId());
 
 		// Should be there
-		assert (managedEmployee instanceof Employee) : "managedEmployee is null"; //NOI18N
+		assert (managedEmployee instanceof Employable) : "managedEmployee is null"; //NOI18N
 
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: managedEmployee={1} - EXIT!", this.getClass().getSimpleName(), managedEmployee)); //NOI18N
@@ -500,7 +500,7 @@ public abstract class BasePizzaEnterpriseBean extends BaseEnterpriseBean {
 		final HeadquartersData managedHeadquarters = this.getEntityManager().find(CompanyHeadquartersData.class, headquarters.getHeadquartersId());
 
 		// Should be there
-		assert (managedHeadquarters instanceof BusinessBasicData) : "managedHeadquarters is null"; //NOI18N
+		assert (managedHeadquarters instanceof BasicData) : "managedHeadquarters is null"; //NOI18N
 
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: managedHeadquarters={1} - EXIT!", this.getClass().getSimpleName(), managedHeadquarters)); //NOI18N
@@ -695,7 +695,7 @@ public abstract class BasePizzaEnterpriseBean extends BaseEnterpriseBean {
 	 * <p>
 	 * @param basicData Company basic data instance to update
 	 */
-	protected void setAllPhoneEntriesCreated (final BusinessBasicData basicData) {
+	protected void setAllPhoneEntriesCreated (final BasicData basicData) {
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("setAllPhoneEntriesCreated: basicData={0} - CALLED!", basicData)); //NOI18N