protected DDLRecordSet updateRecordSet(ActionRequest actionRequest) throws Exception {

    String cmd = ParamUtil.getString(actionRequest, Constants.CMD);

    long recordSetId = ParamUtil.getLong(actionRequest, "recordSetId");

    long groupId = ParamUtil.getLong(actionRequest, "groupId");
    long ddmStructureId = ParamUtil.getLong(actionRequest, "ddmStructureId");
    Map<Locale, String> nameMap = LocalizationUtil.getLocalizationMap(actionRequest, "name");
    Map<Locale, String> descriptionMap =
        LocalizationUtil.getLocalizationMap(actionRequest, "description");
    int scope = ParamUtil.getInteger(actionRequest, "scope");

    ServiceContext serviceContext =
        ServiceContextFactory.getInstance(DDLRecordSet.class.getName(), actionRequest);

    DDLRecordSet recordSet = null;

    if (cmd.equals(Constants.ADD)) {
      recordSet =
          DDLRecordSetServiceUtil.addRecordSet(
              groupId,
              ddmStructureId,
              null,
              nameMap,
              descriptionMap,
              DDLRecordSetConstants.MIN_DISPLAY_ROWS_DEFAULT,
              scope,
              serviceContext);
    } else {
      recordSet =
          DDLRecordSetServiceUtil.updateRecordSet(
              recordSetId,
              ddmStructureId,
              nameMap,
              descriptionMap,
              DDLRecordSetConstants.MIN_DISPLAY_ROWS_DEFAULT,
              serviceContext);
    }

    String workflowDefinition = ParamUtil.getString(actionRequest, "workflowDefinition");

    WorkflowDefinitionLinkLocalServiceUtil.updateWorkflowDefinitionLink(
        serviceContext.getUserId(),
        serviceContext.getCompanyId(),
        groupId,
        DDLRecordSet.class.getName(),
        recordSet.getRecordSetId(),
        0,
        workflowDefinition);

    String portletResource = ParamUtil.getString(actionRequest, "portletResource");

    if (Validator.isNotNull(portletResource)) {
      PortletPreferences preferences =
          PortletPreferencesFactoryUtil.getPortletSetup(actionRequest, portletResource);

      preferences.reset("detailDDMTemplateId");
      preferences.reset("editable");
      preferences.reset("listDDMTemplateId");
      preferences.reset("spreadsheet");

      preferences.setValue("recordSetId", String.valueOf(recordSet.getRecordSetId()));

      preferences.store();
    }

    return recordSet;
  }