<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anurag Bhardwaj</title>
    <description>The latest articles on DEV Community by Anurag Bhardwaj (@anuragsfdc).</description>
    <link>https://dev.to/anuragsfdc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4225713%2F2d2cfe6a-1ceb-4c12-bd3f-2ffa1e9f8b13.png</url>
      <title>DEV Community: Anurag Bhardwaj</title>
      <link>https://dev.to/anuragsfdc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anuragsfdc"/>
    <language>en</language>
    <item>
      <title>Modelling FCA Complaints Data in Salesforce: Five Fields and a Time Zone Trap</title>
      <dc:creator>Anurag Bhardwaj</dc:creator>
      <pubDate>Tue, 10 Nov 2026 10:06:50 +0000</pubDate>
      <link>https://dev.to/anuragsfdc/modelling-fca-complaints-data-in-salesforce-five-fields-and-a-time-zone-trap-1c6k</link>
      <guid>https://dev.to/anuragsfdc/modelling-fca-complaints-data-in-salesforce-five-fields-and-a-time-zone-trap-1c6k</guid>
      <description>&lt;p&gt;From 1 January 2027, UK financial services firms report complaints to the FCA in a new return, COM001, for fixed half-years: 1 January to 30 June and 1 July to 31 December. If your org holds complaints as Cases, here is the data model that return depends on, built with standard features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Legal entity (required picklist)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Group reporting is removed, so every complaint needs the FCA-authorised legal entity responsible for it. Use a restricted picklist or a lookup to a reference object that compliance controls, and make it required on the complaint record type. Map every trading name and acquired brand to exactly one entity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Two vulnerability checkboxes, with history&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The return counts two things separately: complaints from customers identified as vulnerable, and complaints about a failure to consider or respond to a customer's vulnerability. A complaint can have either, both or neither, so use two checkboxes, not one picklist. Switch on Field History Tracking for both. Standard field history is kept for up to 18 months (24 via the API) unless Field Audit Trail is on, so do not rely on history alone for anything you must keep longer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The time zone trap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Datetime fields are stored in UTC. A complaint received at 00:30 on 1 July 2027, British Summer Time, is 23:30 on 30 June in UTC. Any report or formula that takes the date from UTC puts that complaint in the wrong half-year.&lt;/p&gt;

&lt;p&gt;One fix: store the UK date in its own Date field, set in a before-save trigger or invocable Apex, using the Europe/London time zone.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apex"&gt;&lt;code&gt;&lt;span class="nc"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;ukDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;valueOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;received&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'yyyy-MM-dd'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Europe/London'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Date_Received_UK__c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ukDate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do the same for the closed date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. A half-year formula on the UK date&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apex"&gt;&lt;code&gt;&lt;span class="no"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;YEAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Date_Received_UK__c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;
&lt;span class="no"&gt;IF&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;MONTH&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Date_Received_UK__c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"-H1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"-H2"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Group your report by legal entity and this field.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Restrict the notes, not the marker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reporting needs only the checkbox. Put the reason in a separate field or related record and use field-level security so only the people who need it can see it. Health details can be special category data under UK GDPR.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test it before 1 January&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a test complaint at 00:30 UK time on 1 July and check which half-year it lands in.&lt;/li&gt;
&lt;li&gt;Run the same half-year report twice, a week apart, and explain any difference.&lt;/li&gt;
&lt;li&gt;Change a vulnerability marker on a closed complaint and confirm the change is logged.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exact field names and validations for the return are in the FCA's COM001 Data Reference Guides. We wrote up the full requirements, with a six-step test for any complaints system: &lt;a href="https://www.idslogic.co.uk/modelling-fca-complaints-data-in-salesforce-five-fields-and-a-time-zone-trap/" rel="noopener noreferrer"&gt;FCA Complaints Reporting Changes 2027: What COM001 Needs from Your CRM&lt;/a&gt;&lt;/p&gt;

</description>
      <category>salesforce</category>
      <category>crm</category>
      <category>apex</category>
      <category>compliance</category>
    </item>
  </channel>
</rss>
