Add BlackRoad CRM enhancements - validation rules, relationships, views, app, and dashboard
- Added 3 validation rules for Company__c (Require Industry, Valid Website, Positive Revenue) - Created 8 lookup relationship fields connecting CRM objects - Built 7 list views for Companies, Leads, Deals, Agents, Clients - Updated 8 custom tabs with appropriate motif icons - Created BlackRoad CRM Lightning App with unified navigation - Added CRM Overview Dashboard with bar charts 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomApplication xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<brand>
|
||||
<headerColor>#000000</headerColor>
|
||||
<shouldOverrideOrgTheme>true</shouldOverrideOrgTheme>
|
||||
</brand>
|
||||
<description>BlackRoad CRM - Unified customer relationship management for General CRM and Agency CRM</description>
|
||||
<formFactors>Large</formFactors>
|
||||
<isNavAutoTempTabsDisabled>false</isNavAutoTempTabsDisabled>
|
||||
<isNavPersonalizationDisabled>false</isNavPersonalizationDisabled>
|
||||
<isNavTabPersistenceDisabled>false</isNavTabPersistenceDisabled>
|
||||
<label>BlackRoad CRM</label>
|
||||
<navType>Standard</navType>
|
||||
<tabs>standard-home</tabs>
|
||||
<tabs>Company__c</tabs>
|
||||
<tabs>Lead__c</tabs>
|
||||
<tabs>Deal__c</tabs>
|
||||
<tabs>Agent__c</tabs>
|
||||
<tabs>Client__c</tabs>
|
||||
<tabs>Policy__c</tabs>
|
||||
<tabs>Listing__c</tabs>
|
||||
<tabs>Commission__c</tabs>
|
||||
<tabs>standard-report</tabs>
|
||||
<uiType>Lightning</uiType>
|
||||
</CustomApplication>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<DashboardFolder xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<accessType>Public</accessType>
|
||||
<folderShares>
|
||||
<accessLevel>View</accessLevel>
|
||||
<sharedTo>AllInternalUsers</sharedTo>
|
||||
<sharedToType>Group</sharedToType>
|
||||
</folderShares>
|
||||
<name>BlackRoad CRM Dashboards</name>
|
||||
<publicFolderAccess>ReadWrite</publicFolderAccess>
|
||||
</DashboardFolder>
|
||||
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Dashboard xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<backgroundEndColor>#FFFFFF</backgroundEndColor>
|
||||
<backgroundFadeDirection>Diagonal</backgroundFadeDirection>
|
||||
<backgroundStartColor>#FFFFFF</backgroundStartColor>
|
||||
<dashboardType>SpecifiedUser</dashboardType>
|
||||
<description>BlackRoad CRM Overview - Key metrics for General CRM and Agency CRM</description>
|
||||
<isGridLayout>false</isGridLayout>
|
||||
<leftSection>
|
||||
<columnSize>Medium</columnSize>
|
||||
<components>
|
||||
<autoselectColumnsFromReport>true</autoselectColumnsFromReport>
|
||||
<chartAxisRange>Auto</chartAxisRange>
|
||||
<componentType>Bar</componentType>
|
||||
<displayUnits>Auto</displayUnits>
|
||||
<drillEnabled>false</drillEnabled>
|
||||
<drillToDetailEnabled>false</drillToDetailEnabled>
|
||||
<enableHover>true</enableHover>
|
||||
<expandOthers>false</expandOthers>
|
||||
<footer>Company Industries</footer>
|
||||
<header>Companies by Industry</header>
|
||||
<legendPosition>Bottom</legendPosition>
|
||||
<report>BlackRoad_CRM_Reports/Companies_by_Industry</report>
|
||||
<showPercentage>false</showPercentage>
|
||||
<showValues>true</showValues>
|
||||
<sortBy>RowLabelAscending</sortBy>
|
||||
<useReportChart>false</useReportChart>
|
||||
</components>
|
||||
</leftSection>
|
||||
<middleSection>
|
||||
<columnSize>Medium</columnSize>
|
||||
<components>
|
||||
<autoselectColumnsFromReport>true</autoselectColumnsFromReport>
|
||||
<chartAxisRange>Auto</chartAxisRange>
|
||||
<componentType>Bar</componentType>
|
||||
<displayUnits>Auto</displayUnits>
|
||||
<drillEnabled>false</drillEnabled>
|
||||
<drillToDetailEnabled>false</drillToDetailEnabled>
|
||||
<enableHover>true</enableHover>
|
||||
<expandOthers>false</expandOthers>
|
||||
<footer>Sales Pipeline</footer>
|
||||
<header>Deal Pipeline</header>
|
||||
<legendPosition>Bottom</legendPosition>
|
||||
<report>BlackRoad_CRM_Reports/Deal_Pipeline</report>
|
||||
<showPercentage>false</showPercentage>
|
||||
<showValues>true</showValues>
|
||||
<sortBy>RowLabelAscending</sortBy>
|
||||
<useReportChart>false</useReportChart>
|
||||
</components>
|
||||
</middleSection>
|
||||
<rightSection>
|
||||
<columnSize>Medium</columnSize>
|
||||
<components>
|
||||
<autoselectColumnsFromReport>true</autoselectColumnsFromReport>
|
||||
<chartAxisRange>Auto</chartAxisRange>
|
||||
<componentType>Bar</componentType>
|
||||
<displayUnits>Auto</displayUnits>
|
||||
<drillEnabled>false</drillEnabled>
|
||||
<drillToDetailEnabled>false</drillToDetailEnabled>
|
||||
<enableHover>true</enableHover>
|
||||
<expandOthers>false</expandOthers>
|
||||
<footer>Real Estate Listings</footer>
|
||||
<header>Active Listings</header>
|
||||
<legendPosition>Bottom</legendPosition>
|
||||
<report>BlackRoad_CRM_Reports/Active_Listings</report>
|
||||
<showPercentage>false</showPercentage>
|
||||
<showValues>true</showValues>
|
||||
<sortBy>RowLabelAscending</sortBy>
|
||||
<useReportChart>false</useReportChart>
|
||||
</components>
|
||||
</rightSection>
|
||||
<runningUser>alexa@blackroad-hub.dev</runningUser>
|
||||
<textColor>#000000</textColor>
|
||||
<title>CRM Overview</title>
|
||||
<titleColor>#000000</titleColor>
|
||||
<titleSize>12</titleSize>
|
||||
</Dashboard>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListView xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>All_Agents</fullName>
|
||||
<columns>NAME</columns>
|
||||
<columns>CREATED_DATE</columns>
|
||||
<filterScope>Everything</filterScope>
|
||||
<label>All Agents</label>
|
||||
</ListView>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListView xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>All_Clients</fullName>
|
||||
<columns>NAME</columns>
|
||||
<columns>CREATED_DATE</columns>
|
||||
<filterScope>Everything</filterScope>
|
||||
<label>All Clients</label>
|
||||
</ListView>
|
||||
@@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Agent__c</fullName>
|
||||
<deleteConstraint>SetNull</deleteConstraint>
|
||||
<externalId>false</externalId>
|
||||
<label>Agent</label>
|
||||
<type>Lookup</type>
|
||||
<referenceTo>Agent__c</referenceTo>
|
||||
<relationshipLabel>Commissions</relationshipLabel>
|
||||
<relationshipName>Commissions</relationshipName>
|
||||
<required>false</required>
|
||||
<trackHistory>false</trackHistory>
|
||||
<trackTrending>false</trackTrending>
|
||||
<type>Lookup</type>
|
||||
</CustomField>
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Listing__c</fullName>
|
||||
<deleteConstraint>SetNull</deleteConstraint>
|
||||
<externalId>false</externalId>
|
||||
<label>Listing</label>
|
||||
<type>Lookup</type>
|
||||
<referenceTo>Listing__c</referenceTo>
|
||||
<relationshipLabel>Commissions</relationshipLabel>
|
||||
<relationshipName>Commissions</relationshipName>
|
||||
<required>false</required>
|
||||
<trackHistory>false</trackHistory>
|
||||
<trackTrending>false</trackTrending>
|
||||
<type>Lookup</type>
|
||||
</CustomField>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListView xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>All_Companies</fullName>
|
||||
<columns>NAME</columns>
|
||||
<columns>Industry__c</columns>
|
||||
<columns>Account_Status__c</columns>
|
||||
<columns>Company_Size__c</columns>
|
||||
<columns>Phone__c</columns>
|
||||
<filterScope>Everything</filterScope>
|
||||
<label>All Companies</label>
|
||||
</ListView>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListView xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Customers</fullName>
|
||||
<columns>NAME</columns>
|
||||
<columns>Industry__c</columns>
|
||||
<columns>Annual_Revenue__c</columns>
|
||||
<columns>Phone__c</columns>
|
||||
<filterScope>Everything</filterScope>
|
||||
<filters>
|
||||
<field>Account_Status__c</field>
|
||||
<operation>equals</operation>
|
||||
<value>Customer</value>
|
||||
</filters>
|
||||
<label>Customers</label>
|
||||
</ListView>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListView xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Prospects</fullName>
|
||||
<columns>NAME</columns>
|
||||
<columns>Industry__c</columns>
|
||||
<columns>Annual_Revenue__c</columns>
|
||||
<columns>Phone__c</columns>
|
||||
<filterScope>Everything</filterScope>
|
||||
<filters>
|
||||
<field>Account_Status__c</field>
|
||||
<operation>equals</operation>
|
||||
<value>Prospect</value>
|
||||
</filters>
|
||||
<label>Prospects</label>
|
||||
</ListView>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ValidationRule xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Positive_Revenue</fullName>
|
||||
<active>true</active>
|
||||
<description>Annual Revenue must be positive if provided</description>
|
||||
<errorConditionFormula>AND(
|
||||
NOT(ISBLANK(Annual_Revenue__c)),
|
||||
Annual_Revenue__c < 0
|
||||
)</errorConditionFormula>
|
||||
<errorDisplayField>Annual_Revenue__c</errorDisplayField>
|
||||
<errorMessage>Annual Revenue cannot be negative</errorMessage>
|
||||
</ValidationRule>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ValidationRule xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Require_Industry_for_Customers</fullName>
|
||||
<active>true</active>
|
||||
<description>Industry is required when Account Status is Customer</description>
|
||||
<errorConditionFormula>AND(
|
||||
ISPICKVAL(Account_Status__c, "Customer"),
|
||||
ISPICKVAL(Industry__c, "")
|
||||
)</errorConditionFormula>
|
||||
<errorDisplayField>Industry__c</errorDisplayField>
|
||||
<errorMessage>Industry is required for Customer accounts</errorMessage>
|
||||
</ValidationRule>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ValidationRule xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Valid_Website_Format</fullName>
|
||||
<active>true</active>
|
||||
<description>Website must start with http:// or https://</description>
|
||||
<errorConditionFormula>AND(
|
||||
NOT(ISBLANK(Website__c)),
|
||||
NOT(OR(
|
||||
BEGINS(Website__c, "http://"),
|
||||
BEGINS(Website__c, "https://")
|
||||
))
|
||||
)</errorConditionFormula>
|
||||
<errorDisplayField>Website__c</errorDisplayField>
|
||||
<errorMessage>Website must start with http:// or https://</errorMessage>
|
||||
</ValidationRule>
|
||||
@@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Company__c</fullName>
|
||||
<deleteConstraint>SetNull</deleteConstraint>
|
||||
<externalId>false</externalId>
|
||||
<label>Company</label>
|
||||
<type>Lookup</type>
|
||||
<referenceTo>Company__c</referenceTo>
|
||||
<relationshipLabel>Deals</relationshipLabel>
|
||||
<relationshipName>Deals</relationshipName>
|
||||
<required>false</required>
|
||||
<trackHistory>false</trackHistory>
|
||||
<trackTrending>false</trackTrending>
|
||||
<type>Lookup</type>
|
||||
</CustomField>
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Lead__c</fullName>
|
||||
<label>Original Lead</label>
|
||||
<type>Lookup</type>
|
||||
<deleteConstraint>SetNull</deleteConstraint>
|
||||
<externalId>false</externalId>
|
||||
<label>Source Lead</label>
|
||||
<referenceTo>Lead__c</referenceTo>
|
||||
<relationshipLabel>Deals</relationshipLabel>
|
||||
<relationshipName>Deals</relationshipName>
|
||||
<required>false</required>
|
||||
<trackHistory>false</trackHistory>
|
||||
<trackTrending>false</trackTrending>
|
||||
<type>Lookup</type>
|
||||
</CustomField>
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListView xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>All_Deals</fullName>
|
||||
<columns>NAME</columns>
|
||||
<columns>Company__c</columns>
|
||||
<columns>Lead__c</columns>
|
||||
<columns>CREATED_DATE</columns>
|
||||
<filterScope>Everything</filterScope>
|
||||
<label>All Deals</label>
|
||||
</ListView>
|
||||
@@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Company__c</fullName>
|
||||
<deleteConstraint>SetNull</deleteConstraint>
|
||||
<externalId>false</externalId>
|
||||
<label>Company</label>
|
||||
<type>Lookup</type>
|
||||
<referenceTo>Company__c</referenceTo>
|
||||
<relationshipLabel>Leads</relationshipLabel>
|
||||
<relationshipName>Leads</relationshipName>
|
||||
<required>false</required>
|
||||
<trackHistory>false</trackHistory>
|
||||
<trackTrending>false</trackTrending>
|
||||
<type>Lookup</type>
|
||||
</CustomField>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListView xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>All_Leads</fullName>
|
||||
<columns>NAME</columns>
|
||||
<columns>Company__c</columns>
|
||||
<columns>CREATED_DATE</columns>
|
||||
<filterScope>Everything</filterScope>
|
||||
<label>All Leads</label>
|
||||
</ListView>
|
||||
@@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Agent__c</fullName>
|
||||
<deleteConstraint>SetNull</deleteConstraint>
|
||||
<externalId>false</externalId>
|
||||
<label>Listing Agent</label>
|
||||
<type>Lookup</type>
|
||||
<referenceTo>Agent__c</referenceTo>
|
||||
<relationshipLabel>Listings</relationshipLabel>
|
||||
<relationshipName>Listings</relationshipName>
|
||||
<required>false</required>
|
||||
<trackHistory>false</trackHistory>
|
||||
<trackTrending>false</trackTrending>
|
||||
<type>Lookup</type>
|
||||
</CustomField>
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Agent__c</fullName>
|
||||
<deleteConstraint>SetNull</deleteConstraint>
|
||||
<externalId>false</externalId>
|
||||
<label>Agent</label>
|
||||
<type>Lookup</type>
|
||||
<referenceTo>Agent__c</referenceTo>
|
||||
<relationshipLabel>Policies</relationshipLabel>
|
||||
<relationshipName>Policies</relationshipName>
|
||||
<required>false</required>
|
||||
<trackHistory>false</trackHistory>
|
||||
<trackTrending>false</trackTrending>
|
||||
<type>Lookup</type>
|
||||
</CustomField>
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<fullName>Client__c</fullName>
|
||||
<deleteConstraint>SetNull</deleteConstraint>
|
||||
<externalId>false</externalId>
|
||||
<label>Client</label>
|
||||
<type>Lookup</type>
|
||||
<referenceTo>Client__c</referenceTo>
|
||||
<relationshipLabel>Policies</relationshipLabel>
|
||||
<relationshipName>Policies</relationshipName>
|
||||
<required>false</required>
|
||||
<trackHistory>false</trackHistory>
|
||||
<trackTrending>false</trackTrending>
|
||||
<type>Lookup</type>
|
||||
</CustomField>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomTab xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<customObject>true</customObject>
|
||||
<motif>Custom63: Handsaw</motif>
|
||||
<motif>Custom57: Ticket</motif>
|
||||
</CustomTab>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomTab xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<customObject>true</customObject>
|
||||
<motif>Custom41: Prospect</motif>
|
||||
<motif>Custom63: Heart</motif>
|
||||
</CustomTab>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomTab xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<customObject>true</customObject>
|
||||
<motif>Custom18: Dollar</motif>
|
||||
<motif>Custom64: Coins</motif>
|
||||
</CustomTab>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomTab xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<customObject>true</customObject>
|
||||
<motif>Custom20: Factory</motif>
|
||||
<motif>Custom70: Building</motif>
|
||||
</CustomTab>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomTab xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<customObject>true</customObject>
|
||||
<motif>Custom18: Dollar</motif>
|
||||
<motif>Custom87: Handshake</motif>
|
||||
</CustomTab>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomTab xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<customObject>true</customObject>
|
||||
<motif>Custom41: Prospect</motif>
|
||||
<motif>Custom53: People</motif>
|
||||
</CustomTab>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomTab xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<customObject>true</customObject>
|
||||
<motif>Custom24: House</motif>
|
||||
<motif>Custom68: Home</motif>
|
||||
</CustomTab>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CustomTab xmlns="http://soap.sforce.com/2006/04/metadata">
|
||||
<customObject>true</customObject>
|
||||
<motif>Custom53: Wasp</motif>
|
||||
<motif>Custom74: Safe</motif>
|
||||
</CustomTab>
|
||||
|
||||
Reference in New Issue
Block a user