- π I'm the founder of X-Squared On Demand, a Salesforce consultancy, with a passion for governance, auditability, standards, and extensible architectural design
- π Based in Sydney, Australia
I've been working on Salesforce since the Summer 06 release (142, API 7.0) (Yes, that's a long time!)- πΌ To see a list of some things I've done, check out my online portfolio
- π‘οΈ My main focus is Salesforce DevSecOps: code, metadata, and pipeline quality and security. Declarative metadata like Flows and Permission Sets can skip pipelines and quality gates entirely, so I put GitHub Actions gates around the whole change surface, not just Apex.
- π§ͺ I write and maintain custom PMD rulesets for Apex that go beyond the defaults.
I run one central Prettier configuration and let my other configurations build on it, so I edit formatting rules in one place. It is on npm too: @x2od/prettier-config- π€ Recent talks: "Implementing CodeScan at Scale" at AutoRABIT Dev(H)ops (May 2025) and "What Could Go Wrong If I Don't Build Secure Apex?" at Cactusforce (Feb 2025).
- π± Lots of work on GitHub Actions!
- Using Release Please, a wonderful changelog generator from Google, with GitHub Actions, expanding it to create an AppExchange package automatically when a new project version is released.
- Automatically rename Dependabot pull requests so they are more useful in changelogs and semver-compliant
- A repository of starter GitHub workflows: https://github.com/x2od/.github
Configuring Renovate as a
Dependabot replacement and exploring custom configurations for that tool: Renovate central configuration and a local extension- π AutoRABIT's product CodeScan has fast become one of my favorite tools. It's like PMD on steroids, with memory, so you can mark violations in PR branches and the tool magically remembers the override after you merge to main!
- π I also use Salesforce's Code Analyzer as a complementary tool in GitHub CI workflows.
- βΏ Currently learning about accessibility in Salesforce UI and exploring various tools to enforce accessibility standards in declarative metadata and custom code.
I released an updated Apex highlighter plugin for highlight.js so any Apex on a webpage will look great - and I published it to npm!
- It now comes with an (optional) Monokai theme that mimics the wonderful MavensMate Sublime Text Monokai theme.
- Exploring AutoRABIT's Automated Release Management (ARM) product for CI/CD in Salesforce.
- Building a repository or gist of my favorite custom XPath static code analysis rules (Apex, XML, HTML, etc)
- I'm a fan of Gearset for straightforward pipelines, and I think that it could work well with Release-Please, even though R-P recommends Squash Merging and Gearset does simple merges. It would involve complex linting, possibly, but could enable Salesforce admins/devs to see a concise changelog of all changes pushed to Production with dates!
- I'd like to add some features to Mitch Spano's Apex Trigger Actions Framework. I'm considering per-user global bypasses, allowing multiple custom permissions to bypass execution, an option to debug limits, and some other things. Thoughts?
- Have you used ApexDox? I am thinking of updating it and putting in some cool features. What would you like to see it do? All my repos have ApexDox sites - here's a great example.
- Looking for people to swap Salesforce DevSecOps notes with: pipelines, PMD rules, CodeScan, and metadata drift. Say hi!
π These are some of the
Salesforce projects I'm proud of
- RecordTypes utility class
- Enhanced Duplicate Record Handling
- Campaign Member Status (adapted from Sercante LLC)
- A simple Trigger Framework
I revised and released ACTION PLANS version 4 from Salesforce Labs! Find it on the AppExchange- π I rewrote large chunks of SurveyForce - check it out!
A reusable Prettier config for all my projects. It is so helpful to edit in one place (with overrides in each project)- Kevin Poorman and I have been working on ApexKit, which is a very cool set of tools for Apex
| Repository | Stars | Purpose |
|---|---|---|
| ChatterBINGO | The only community-created app used at Dreamforce 2010 | |
| salesforce-trigger-framework | 33 β | Trigger handler framework with performance improvements and full documentation |
| duplicatehandling | 5 β | Enhanced standard Salesforce duplicate handling |
| record-types | 2 β | RecordType utility class for quick, efficient retrieval |
| ACTION PLANS V4 | Contrib | Salesforce Labs app for managing action plans |
| ApexKit | Contrib | Co-authored toolkit for Apex development |
| campaign-member-status | Enforce CampaignMemberStatuses based on Campaign Type | |
| github-actions | Centralized GitHub Actions workflows and configurations | |
| prettier-config | Central Prettier configuration used across all projects | |
| PMD | Contrib | Apex rules and enhancements for PMD static code analysis |
| ApexDox | Contrib | Documentation generation for Apex code |
| Apex-Rollup | Contrib | Fast, configurable custom rollup solution |
- π Former Salesforce MVP with 18 Salesforce certifications, continuously certified since 2008
- ποΈ 11-time Dreamforce speaker, and a featured guest on the Salesforce Developers Podcast (episodes 152 and 153, "Being a Trusted Advisor")
- πΊπΈ Original Salesforce Architect for the Obama reelection campaign
- βοΈ Creator of Chatter BINGO at Dreamforce 2010, the only community member to have an app included in the Dreamforce app
Surfaced a dwarf error message in Salesforce - IYKYKFounder of the Dreamforce Tweetup, the first and largest community-led user event at Dreamforce
- π π΄ββοΈ π 2x Ironman!

All-Star Trailhead Ranger 
- π Pronouns: he/him
- π¨βπ» All my GitHub projects are available at https://github.com/dschach and https://github.com/x2od
- π I should blog more at X-Squared on Demand
- π Here's my professional experience: LinkedIn
I am a Life Member of Mensa- π¬ Ask me about apprenticeships and equity in the tech industry
Let's jam about Salesforce, Apex, and Security on the Salesforce Einstein 1 Lightning Agent 36O Platform- π« How to reach me: Find me via LinkedIn, Threads, or some other site!
- β‘ Fun fact: I was born in South Africa
- π§ More fun facts: I have lived in South Africa, the United States, Israel, and Australia; I swam NCAA Division I; I am a Life Member of Mensa; and I will defend the Oxford comma to the end
| Top Languages | GitHub Stats |
|---|---|
- Prevent Duplicate Emails on Leads
- Duplicate Record Item Enrichment and Auto-Deletion Code
- Lightning Component With Running User Information
- ChatterBINGO is Now Open-Source
- Display Only My Roleβs Records on a Report
- Answer by DavidSchach for Insufficient access to view report in Visualforce?
- Answer by DavidSchach for Process builder create task
- Answer by DavidSchach for enums - assigning values to constants
- Comment by DavidSchach on Is Developer Console going to be deprecated?
- Comment by DavidSchach on APEX test user creation







