class BusinessObjectFormatServiceImpl implements BusinessObjectFormatService {

    @NamespacePermission(fields = "#businessObjectFormatKey.namespace", permissions = NamespacePermissionEnum.WRITE)
    @Override
    public BusinessObjectFormat updateBusinessObjectFormatSchemaBackwardsCompatibilityChanges(BusinessObjectFormatKey businessObjectFormatKey,
        BusinessObjectFormatSchemaBackwardsCompatibilityUpdateRequest businessObjectFormatSchemaBackwardsCompatibilityUpdateRequest)
    {
        // Validate business object format schema backwards compatibility changes update request.
        Assert.notNull(businessObjectFormatSchemaBackwardsCompatibilityUpdateRequest,
            "A business object format schema backwards compatibility changes update request must be specified.");
        Assert.notNull(businessObjectFormatSchemaBackwardsCompatibilityUpdateRequest.isAllowNonBackwardsCompatibleChanges(),
            "allowNonBackwardsCompatibleChanges flag in business object format schema backwards compatibility changes update request must be specified.");

        // Validate and trim the business object format key parameters.
        businessObjectFormatHelper.validateBusinessObjectFormatKey(businessObjectFormatKey, false);
        Assert.isNull(businessObjectFormatKey.getBusinessObjectFormatVersion(), "Business object format version must not be specified.");

        // Retrieve and ensure that a business object format exists.
        BusinessObjectFormatEntity businessObjectFormatEntity = businessObjectFormatDaoHelper.getBusinessObjectFormatEntity(businessObjectFormatKey);
        businessObjectFormatEntity.setAllowNonBackwardsCompatibleChanges(
            BooleanUtils.isTrue(businessObjectFormatSchemaBackwardsCompatibilityUpdateRequest.isAllowNonBackwardsCompatibleChanges()));

        // Persist and refresh the entity.
        businessObjectFormatEntity = businessObjectFormatDao.saveAndRefresh(businessObjectFormatEntity);

        // Create and return the business object format object from the persisted entity.
        return businessObjectFormatHelper.createBusinessObjectFormatFromEntity(businessObjectFormatEntity);
    }

}