@Override
 public TagDefinition getTagDefinition(final UUID tagDefinitionId, final TenantContext context)
     throws TagDefinitionApiException {
   final TagDefinitionModelDao tagDefinitionModelDao =
       tagDefinitionDao.getById(
           tagDefinitionId,
           internalCallContextFactory.createInternalTenantContextWithoutAccountRecordId(context));
   return new DefaultTagDefinition(
       tagDefinitionModelDao, TagModelDaoHelper.isControlTag(tagDefinitionModelDao.getName()));
 }
 @Override
 public TagDefinition getTagDefinitionForName(
     final String tagDefinitionName, final TenantContext context)
     throws TagDefinitionApiException {
   return new DefaultTagDefinition(
       tagDefinitionDao.getByName(
           tagDefinitionName,
           internalCallContextFactory.createInternalTenantContextWithoutAccountRecordId(context)),
       TagModelDaoHelper.isControlTag(tagDefinitionName));
 }
 @Override
 public TagDefinition createTagDefinition(
     final String definitionName, final String description, final CallContext context)
     throws TagDefinitionApiException {
   if (definitionName.matches(".*[A-Z].*")) {
     throw new TagDefinitionApiException(ErrorCode.TAG_DEFINITION_HAS_UPPERCASE, definitionName);
   }
   final TagDefinitionModelDao tagDefinitionModelDao =
       tagDefinitionDao.create(
           definitionName,
           description,
           internalCallContextFactory.createInternalCallContextWithoutAccountRecordId(context));
   return new DefaultTagDefinition(
       tagDefinitionModelDao, TagModelDaoHelper.isControlTag(tagDefinitionModelDao.getName()));
 }
 @Override
 public Tag apply(final TagModelDao input) {
   return TagModelDaoHelper.isControlTag(input.getTagDefinitionId())
       ? new DefaultControlTag(
           input.getId(),
           ControlTagType.getTypeFromId(input.getTagDefinitionId()),
           input.getObjectType(),
           input.getObjectId(),
           input.getCreatedDate())
       : new DescriptiveTag(
           input.getId(),
           input.getTagDefinitionId(),
           input.getObjectType(),
           input.getObjectId(),
           input.getCreatedDate());
 }