• SQLAccess - гибкая настройка доступов в бесплатной SugarCRM CE

    Постановка задачи

    Умные маркетологи SugarCRM предлагают "замануху" в виде SugarCRM CE. Но в бесплатных версиях нет так много полезных функций, которые присутствуют в PRO-версиях SugarCRM. К основным возможностям, за которые компании готовы оплачивать PRO-версию, можно отнести: Отчеты, номенклатурный перечень и возможность выставления коммерческих предложений, более гибкая настройка доступов к записям через работу с Командами, настройка бизнес-процессов, Контракты, более расширенные проектные задачи с диаграммой Ганта и многое другое. Платить за PRO-версию многим компаниям не по карману, в силу ли малого бюджета, выделяемого на CRM-систему, или большого штата сотрудников. Ведь если одна лицензия стоит $360/за пользователя/в год и в компании 200 и более пользователей, то даже при наличии хорошего дисконта это все равно получится огромная сумма (да еще платить ее каждый год).

    Потому бесплатная CE-версия остается наиболее популярной CRM-системой, и расширение ее функционала является одной из самых актуальных задач.

    Идея написания модуля управления доступами пользователей пришла с расширением нашего штата сотрудников. Ведь стандартный механизм бесплатной версии SugarCRM достаточно скуден: можно тому или иному сотруднику или вообще запретить работать с тем или иным модулем, или разрешить видеть/править только свои записи, или видеть/править все. И ВСЕ.

    А так хочется иметь возможность управлять командной работой, когда, допустим, все клиенты делятся не на "свои" и "не свои", а когда сотрудник может получить доступ к целому сегменту клиентов основываясь только на каком-то признаке у клиента. Я говорю про то, что мой сотрудник должен видеть (или не видеть) клиентов, основываясь на целом ряде параметров, а не только на том, что тот или иной клиент указан как "мой". Ведь если клиент "мой", то получается его уже не видят другие. А это не правильно.

    Непосредственно у меня, с приходом нового сотрудника, возникла необходимость передать этому сотруднику работу с только одним определенным клиентом: карточку самого клиента, заметки, задачи, проекты и проектные задачи именно по этому клиенту. Но при этом клиент и его сопутствующая информация должны оставаться в зоне видимости других сотрудников. Всех остальных клиентов, и сопутствующую их информацию, новый сотрудник не должен видеть. Вот такая вроде бы не сложная и насущная задача. И она могла бы быть решена стандартными средствами SugarCRM CE путем назначения роли сотруднику, где он видит только "свои" записи, а в нужном клиенте и во всех его сопровождающих записях поставить ответственным этого нового сотрудника. Но речь идет про то, что другие сотрудники тогда уже не увидят этих записей. А работа с клиентом должна вестись многосторонне: один занимается анализом потребностей, другой общается с клиентом, третий программирует для него и т.д. Потому без доработок SugarCRM CE тут не обойтись.

    В качестве примеров потребности в сегментировании клиентов можно привести такие задачи:

    • разделение клиентов по типу (VIP, не VIP, размер заключенных сделок и т.д.)
    • разделение по географическому признаку (по говорам, странам и т.д.)
    • разделение по типу взаимодействия (партнеры, клиенты, поставщики и т.д.)
    • разделение вообще по чему угодно

    и для каждого сегмента можно назначить своего сотрудника: указать что он должен и не должен видеть (допустим, один сотрудник должен видеть всех клиентов, другой только не-вип, а третий вип только из Москвы и т.д.). Настройка должна быть максимально гибкой и позволять реализовать любые, даже самые изощренные требования.

    Реализация

    В SugarCRM PRO есть такой функционал, как работа с командами. Это когда создаются произвольные команды, в эти команды добавляются клиенты и их сопровождающие записи (задачи, звонки, сделки, проекты и прочее). Также тем или иным сотрудникам предоставляется доступ к тем или иным командам. С одной стороны это достаточно удобный функционал. Но с другой он достаточно громоздок в реализации, и, на мой взгляд, недостаточно гибок и интуитивно понятен.

    Я решил пойти по другому пути, и буквально за пол-дня сделал механизм сегментации и назначения доступов к клиентам и другим записям CRM-системы через явное указание параметров, по которым идет определение доступов к той или иной записи в CRM-системе.

    В рамках этой статьи я не буду рассматривать техническую реализацию созданного функционала, а покажу как это работает.

    Основной смысл сегментирования и настройки доступов: в CRM-системе создаются сегменты записей того или иного модуля. Т.е. набор записей, удовлетворяющих тому или иному правилу. И эти сегменты назначаются тому или иному сотруднику. Таким образом, когда сотрудник запрашивает список записей (например, список клиентов), CRM-система проверяет, а есть ли у этого сотрудника ограничения по отображаемым записям, и если есть, то показываются только те записи, к которым у сотрудника определен доступ.

    В качестве примера рассмотрим мою задачу предоставления новому сотруднику доступа к клиенту ООО "Лемарс", а также ко всем заметкам, задачам, проектам и проектным задачам, связанным с этим клиентом.

    Для этого сначала создадим необходимые сегменты. В разделе администрирования у нас появилась новая ссылка "Управление SQL-доступом": Systems_sugarcrm_example_lemars_sqlacces

    В этом разделе мы можем создавать сегменты записей. Следует отметить, что сегменты создаются для каждого модуля CRM-системы отдельно. Задание сегмента заключается в добавлении новой записи в модуле SQL-доступов, где в качестве ограничивающего сегмент параметра указывается SQL-запрос на выборку данных: Systems_sugarcrm_example_lemars_sqlacces

    Здесь желтым выделен SQL-запрос, который будет определять настройку сегментирования. Это ключевой параметр, благодаря которому мы и сможем определять какие записи будут входить в тот или иной сегмент. Наша фантазия по сегментированию ограничена только возможностями SQL-запросов и "пряморукости" программистов, которые будут создавать эти запросы по запросам клиентов.

    После сохранения сегмента мы попадаем на его карточку просмотра:

    Systems_sugarcrm_example_lemars_sqlacces

    Как вы видите, у вновь добавленного доступа, помимо его основных характеристик, есть еще две сабпанели: "Пользователи" и "Список записей". В сабпанели "Пользователи" можно указать каким сотрудникам вашей компании предоставляется доступ к этому сегменту. А вот в сабпанели "Список записей" будет отображен список записей текущего сегмента. Сразу после создания сегмента он пуст. Но в планировщике CRM-системы есть задача актуализации этого списка, которая выполняется каждую минут. Таким образом через минуту (или ранее) мы получаем записи, удовлетворяющие заданному SQL-запросу, и которые входят в наш сегмент:

    Systems_sugarcrm_example_lemars_sqlacces

    Таким образом, теперь, когда сотрудник Иван Иванов войдет в свою учетную запись в CRM-системе, и перейдет на вкладку "Контрагенты", он увидит только те записи, к которым он имеет доступ, а именно к ООО Лемарс:

    Systems_sugarcrm_example_lemars_sqlacces

    Все остальные записи модуля Контрагенты для этого сотрудника просто не видны. Если со временем появится необходимость расширить зону видимости для этого сотрудника, мы просто добавим его в нужные сегменты, и он сразу получит доступ к записям из этих сегментов.

    Но произведенные настройки коснулись только записей модуля Контрагенты. Нашему сотруднику попрежнему доступны все записи модулей Заметки, Задачи, Проекты и т.д. Для каждого из модулей необходимо создать свой сегмент и добавить в него нашего сотрудника. Покажу, как это делается на примере предоставления доступа ко всем задачам, относящимся к контрагенту ООО "Лемарс".

    Для начала создаем новый сегмент для модуля "Задачи":

    Systems_sugarcrm_example_lemars_sqlacces

    После сохранения сегмента назначаем для него пользователя Иван Иванов и через минуту получаем список записей сегмента:

    Systems_sugarcrm_example_lemars_sqlacces

    Все! Теперь пользователь Иван Иванов имеет доступ только к задачам по контрагенту ООО "Лемарс". Другие задачи для него недоступны.

    Резюмируя

    Вот так, относительно малой кровью, был получен достаточно гибкий функционал по настройке прав доступа в бесплатной SugarCRM CE. Конечно же данный функционал еще далек от совершенства. Настройка таким образом доступов пользователей без участия программистов, знакомых с иерархией базы данных SugarCRM, не возможна. Но, настроив один раз сегменты, мы получаем рабочую и надежную систему ограничения прав доступа для сотрудников. Со временем можно будет разработать механизм составления SQL-запроса при помощи визуального редактора (наподобие как это сделано при добавлении отчетов в PRO-версии SugarCRM). Но это будет со временем ...

    А сейчас, если Вас заинтересовал показанный функционал, Вы можете связаться с нами и заказать себе такой же. В силу того, что мы его уже сделали, Вы не будете тратить наше время и свои деньги на его повторную разработку. А потому работа по установке этого функционала в Вашу CRM-систему будет дешева. Как с нами связаться и немного про нашу компанию есть на этой странице.