private CustomField.Nature getNature(final RemoveCustomFieldPossibleValueForm form) {
   CustomField.Nature nature;
   try {
     nature = CustomField.Nature.valueOf(form.getNature());
   } catch (final Exception e) {
     throw new ValidationException();
   }
   return nature;
 }
  @Override
  protected ActionForward executeAction(final ActionContext context) throws Exception {
    final RemoveCustomFieldPossibleValueForm form = context.getForm();
    final long id = form.getPossibleValueId();
    if (id <= 0) {
      throw new ValidationException();
    }
    final Nature nature = getNature(form);
    final Map<String, Object> params = new HashMap<String, Object>();
    String key;
    try {
      final BaseCustomFieldService<CustomField> service = resolveService(nature);
      final CustomFieldPossibleValue possibleValue = service.loadPossibleValue(id);
      final CustomField customField = possibleValue.getField();
      switch (customField.getNature()) {
        case PAYMENT:
          final PaymentCustomField paymentField = (PaymentCustomField) customField;
          params.put("transferTypeId", paymentField.getTransferType().getId());
          break;
        case MEMBER_RECORD:
          final MemberRecordCustomField memberRecordField = (MemberRecordCustomField) customField;
          params.put("memberRecordTypeId", memberRecordField.getMemberRecordType().getId());
        default:
          service.removePossibleValue(id);
          break;
      }
      key = "customField.possibleValue.removed";
    } catch (final DaoException e) {
      key = "customField.possibleValue.error.removing";
    }
    params.put("fieldId", form.getFieldId());
    params.put("nature", nature);
    context.sendMessage(key);

    return ActionHelper.redirectWithParams(
        context.getRequest(), context.getSuccessForward(), params);
  }