Use doctrine register mapping
Abstract externalContactCount to a mapped superclass
Abstract internalContactCount to a mapped superclass
HasExternalContactHasAddress is not suitable in this chain of inheritance. Maybe use traits next time
Update business rule in Email and Phone