How to Track Field Changes in Salesforce: A Guide to History Tracking Fields

Привет!
Сегодня разберемся, что такое Field History Tracking, зачем он нужен и как его настроить.

Очень часто возникает ситуация, когда на рекорде какого-либо объекта изменяется какое-то поле, и через время никто не помнит ни кто сделал эти изменения, ни когда они были сделаны, никакие предыдущие значения это поле имело. Для отслеживания всей этой информации и используется Field History Tracking.

Как включить?
Для того чтобы включить Field History Tracking на стандартном объекте – нужно зайти на вкладку Fields & Relationships. Кликаем Set History Tracking, затем Enable Account History и выбираем нужные поля для трекинга истории изменений
1

2

На кастомном объекте сначала нужно включить Track Field History. Для этого в Object Manager кликаем Edit напротив нужного объекта
3

И ставим галочку возле Track Field History в секции Optional Features.

4
После этого, как и на стандартном объекте, заходим в Fields & Relationship. Кликаем Set History Tracking и выбираем нужные поля для трекинга истории изменений.
5

Как отслеживать изменение?
Теперь, когда мы включили трекинг, нужно еще добавить History объект в Related List на основном объекте, где мы трекаем историю изменения полей.

Для этого заходим на Page Layout и в разделе Related Lists добавляем объект History
6

Теперь мы можем видеть записи объекта History на табе Related на записи основного объекта.

7

Сейчас там нет записей, но если мы сделаем изменения в поле, которое мы пометили для отслеживания, то увидим такую картину.
8

Собственно на этом процедура включения Field History Tracking завершена.

Что “под капотом”?

После активации Field History Tracking создается новый объект - для стандартных объектов он имеет название {Имя объекта}History, например AccountHistory. Для кастомных объектов он имеет название {Имя объекта}__History, например Master1__History.
Этот объект имеет такой набор полей:

Поле Описание
ObjectNameId (AccountId) - для стандартных объектов. ParentId - для кастомных объектов Это Lookup на запись изменения полей на которой отслеживаются.
Field Имя отслеживаемого поля.
NewValue Новое значение поля.
OldValue Старое значение поля.
CreatedBy Lookup на пользователя, который сделал изменения.
CreatedDate Дата изменений.
DataType Тип поля, которое было изменено.

Примечание: Исключением является объект Opportunity, для которого при активации Field History Tracking создается объект OpportunityFieldHistory имеющий описанную выше структуру. А объект OpportunityHistory имеет другую структуру и назначение.

Для работы с History объектом можно использовать SOQL:

      SELECT AccountId, 
         DataType, 
         Field, 
         NewValue, 
         OldValue, 
         CreatedById, 
         CreatedDate
      FROM AccountHistory

Ограничения

Как и все в Salesforce Field History Tracking имеет свои ограничения. Основные из них такие:

  • можно использовать для кастомных объектов и для таких стандартных
    • Accounts
    • Articles
    • Assets
    • Campaigns
    • Cases
    • Contacts
    • Contracts
    • Contract Line Items
    • Crisis
    • Employees
    • Employee Crisis Assessments
    • Entitlements
    • Events
    • Individuals
    • Internal Organization Units
    • Knowledge
    • Leads
    • Opportunities
    • Orders
    • Order Products
    • Products
    • Price Book Entries
    • Quote
    • Quote Line Item
    • Service Appointments
    • Service Contracts
    • Solutions
    • Tasks
    • Work Orders
    • Work Order Line Items
  • максимум 20 полей на объект (при помощи Field Audit Trail - до 60)
  • нельзя использовать для Formula и Roll-Up Summary Fields
  • если изменения сделаны в текстовом поле длинной больше 255 символов, то Field History Tracking зафиксирует факт изменения, но при этом не зафиксирует, какое это было изменение, то есть NewValue и OldValue будут пустыми
  • время хранения записей объекта History ограничено:
    • к записям за последние 18 месяцев после активации Field History Tracking можно получить доступ через SOQL
    • к записям за последние 18-24 месяца можно получить доступ через Data Loader или API
    • через 24 месяца данные становятся недоступны (Это ограничение можно обойти при помощи Field Audit Trail)
  • если изменения сделаны Process Builder, Flow или Trigger в системном режиме, то они не отображаются в Field History Tracking
  • изменения сделанные до активации Field History Tracking не отображаются

Мы рассмотрели общий функционал, настройки и ограничения для Field History Tracking. Теперь Вы сможете легко настроить данный функционал для практически любого объекта в Salesforce. Хочу сразу отметить, что при настройке Field History Tracking для некоторых объектов есть определенные нюансы. Более подробно можно об этом можно почитать в документации по ссылке - Help And Training Community.

5 Вподобань