public String editPermission( final B2BPermissionForm b2BPermissionForm, final BindingResult bindingResult, final Model model, final RedirectAttributes redirectModel) throws CMSItemNotFoundException, ParseException { b2BPermissionFormValidator.validate(b2BPermissionForm, bindingResult); if (bindingResult.hasErrors()) { model.addAttribute(b2BPermissionForm); GlobalMessages.addErrorMessage(model, "form.global.error"); return editPermission(b2BPermissionForm.getOriginalCode(), model); } final B2BPermissionData b2BPermissionData = populateB2BPermissionDataFromForm(b2BPermissionForm); try { b2bCommercePermissionFacade.updatePermissionDetails(b2BPermissionData); } catch (final Exception e) { LOG.warn("Exception while saving the permission details " + e); model.addAttribute(b2BPermissionForm); GlobalMessages.addErrorMessage(model, "form.global.error"); bindingResult.rejectValue("code", "text.company.managePermissions.code.exists.error.title"); return editPermission(b2BPermissionForm.getOriginalCode(), model); } storeCmsPageInModel(model, getContentPageForLabelOrId(ORGANIZATION_MANAGEMENT_CMS_PAGE)); setUpMetaDataForContentPage( model, getContentPageForLabelOrId(ORGANIZATION_MANAGEMENT_CMS_PAGE)); final List<Breadcrumb> breadcrumbs = myCompanyBreadcrumbBuilder.createManagePermissionsBreadcrumb(); breadcrumbs.add( new Breadcrumb( "/my-company/organization-management/manage-budgets/update", getMessageSource() .getMessage( "text.company.budget.editPage", null, getI18nService().getCurrentLocale()), null)); model.addAttribute("breadcrumbs", breadcrumbs); GlobalMessages.addFlashMessage( redirectModel, GlobalMessages.CONF_MESSAGES_HOLDER, "text.confirmation.permission.updated"); return String.format(REDIRECT_TO_PERMISSION_DETAILS, urlEncode(b2BPermissionData.getCode())); }