<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://sugarclub.sugarai.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs</link><pubDate>Fri, 07 Feb 2025 16:36:05 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Alex Nassi</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Current Revision posted to Dev Tutorials by Alex Nassi on 2/7/2025 4:36:05 PM&lt;br /&gt;
&lt;table style="margin-left:auto;margin-right:auto;width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#extensions"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#logichooks"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#batch"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#howto"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;&lt;a href="https://sugarclub.sugarai.com/dev-club/m/event-recaps/2158"&gt;Developer Office Hours dedicated to Sugar Batch Jobs with Sugar Experts Sharing experiences and best practices&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/smartlinks/developer_guide/architecture/job_queue/schedulers/creating_custom_schedulers/"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;How To&amp;#39;s&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allow a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/smartlinks/developer_guide/cookbook/prepopulating_the_compose_email_view/"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-size:150%;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. &lt;br /&gt;&lt;strong&gt;Now it&amp;#39;s time&amp;nbsp;for&amp;nbsp;&lt;a href="https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/687/deployment-for-devs"&gt;Deployment&lt;/a&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/22</link><pubDate>Thu, 08 Feb 2024 14:22:35 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 22 posted to Dev Tutorials by Rafael Fernandes on 2/8/2024 2:22:35 PM&lt;br /&gt;
&lt;table style="margin-left:auto;margin-right:auto;width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#extensions"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#logichooks"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#batch"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#howto"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/dev-club/m/event-recaps/2158"&gt;Developer Office Hours dedicated to Sugar Batch Jobs with Sugar Experts Sharing experiences and best practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/smartlinks/developer_guide/architecture/job_queue/schedulers/creating_custom_schedulers/"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;How To&amp;#39;s&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allow a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/smartlinks/developer_guide/cookbook/prepopulating_the_compose_email_view/"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-size:150%;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. &lt;br /&gt;&lt;strong&gt;Now it&amp;#39;s time&amp;nbsp;for&amp;nbsp;&lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/21</link><pubDate>Tue, 06 Feb 2024 20:18:19 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 21 posted to Dev Tutorials by Rafael Fernandes on 2/6/2024 8:18:19 PM&lt;br /&gt;
&lt;table style="margin-left:auto;margin-right:auto;width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#extensions"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#logichooks"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#batch"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#howto"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/dev-club/m/event-recaps/2158"&gt;Developer Office Hours dedicated to Sugar Batch Jobs with Sugar Experts Sharing experiences and best practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/smartlinks/developer_guide/architecture/job_queue/schedulers/creating_custom_schedulers/"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;How To&amp;#39;s&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allow a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-size:150%;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. &lt;br /&gt;&lt;strong&gt;Now it&amp;#39;s time&amp;nbsp;for&amp;nbsp;&lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/20</link><pubDate>Tue, 13 Sep 2022 16:16:25 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 20 posted to Dev Tutorials by Rafael Fernandes on 9/13/2022 4:16:25 PM&lt;br /&gt;
&lt;table style="margin-left:auto;margin-right:auto;width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#extensions"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#logichooks"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#batch"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#howto"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/dev-club/m/event-recaps/2158"&gt;Developer Office Hours dedicated to Sugar Batch Jobs with Sugar Experts Sharing experiences and best practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;How To&amp;#39;s&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allow a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-size:150%;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. &lt;br /&gt;&lt;strong&gt;Now it&amp;#39;s time&amp;nbsp;for&amp;nbsp;&lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/19</link><pubDate>Tue, 13 Sep 2022 16:01:49 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 19 posted to Dev Tutorials by Rafael Fernandes on 9/13/2022 4:01:49 PM&lt;br /&gt;
&lt;table style="margin-left:auto;margin-right:auto;width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#extensions"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#logichooks"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#batch"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#howto"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/dev-club/m/event-recaps/2158"&gt;Developer Office Hours dedicated to Sugar Batch Jobs with Sugar Experts Sharing experiences and best practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;How To&amp;#39;s&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allow a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-size:150%;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. &lt;br /&gt;&lt;strong&gt;Now it&amp;#39;s time&amp;nbsp;for&amp;nbsp;&lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/18</link><pubDate>Wed, 07 Sep 2022 18:24:52 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 18 posted to Dev Tutorials by Rafael Fernandes on 9/7/2022 6:24:52 PM&lt;br /&gt;
&lt;table style="margin-left:auto;margin-right:auto;width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#extensions"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#logichooks"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#batch"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#howto"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/dev-club/m/event-recaps/2158"&gt;Developer Office Hours dedicated to Sugar Batch Jobs with Sugar Experts Sharing experiences and best practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;How To&amp;#39;s&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allow a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-size:150%;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. &lt;br /&gt;&lt;strong&gt;Now it&amp;#39;s time&amp;nbsp;for&amp;nbsp;&lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/17</link><pubDate>Fri, 05 Aug 2022 17:45:09 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Alex Nassi</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 17 posted to Dev Tutorials by Alex Nassi on 8/5/2022 5:45:09 PM&lt;br /&gt;
&lt;table style="margin-left:auto;margin-right:auto;width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#extensions"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#logichooks"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#batch"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#howto"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/0636.Guides.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/5618.Guides-_2800_2_2900_.png" /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-14/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;How To&amp;#39;s&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-14/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allow a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-size:150%;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. &lt;br /&gt;&lt;strong&gt;Now it&amp;#39;s time&amp;nbsp;for&amp;nbsp;&lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/16</link><pubDate>Wed, 03 Aug 2022 23:07:35 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Alex Nassi</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 16 posted to Dev Tutorials by Alex Nassi on 8/3/2022 11:07:35 PM&lt;br /&gt;
&lt;table style="margin-left:auto;margin-right:auto;width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#extensions"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/0636.Guides.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#logichooks"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/5618.Guides-_2800_2_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#batch"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#howto"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-61/0636.Guides.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/5618.Guides-_2800_2_2900_.png" /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;How To&amp;#39;s&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-61/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allow a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-size:150%;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. &lt;br /&gt;&lt;strong&gt;Now it&amp;#39;s time&amp;nbsp;for&amp;nbsp;&lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/15</link><pubDate>Wed, 03 Aug 2022 23:06:54 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Alex Nassi</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 15 posted to Dev Tutorials by Alex Nassi on 8/3/2022 11:06:54 PM&lt;br /&gt;
&lt;table style="margin-left:auto;margin-right:auto;width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#extensions"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/0636.Guides.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#logichooks"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/5618.Guides-_2800_2_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#batch"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td style="text-align:center;vertical-align:middle;"&gt;&lt;a href="#howto"&gt;&lt;img style="height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-61/0636.Guides.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/5618.Guides-_2800_2_2900_.png" /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;img class="align-right" style="float:right;height:auto;" alt=" " src="/resized-image/__size/2000x0/__key/communityserver-wikis-components-files/00-00-00-00-61/4604.Guides-_2800_3_2900_.png" /&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;HOWTOs&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/510x200/__key/communityserver-wikis-components-files/00-00-00-00-61/7774.Guides-_2800_4_2900_.png" /&gt;&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allow a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-size:150%;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. &lt;br /&gt;&lt;strong&gt;Now it&amp;#39;s time&amp;nbsp;for&amp;nbsp;&lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/14</link><pubDate>Thu, 21 Jul 2022 18:50:35 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Matt Marum</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 14 posted to Dev Tutorials by Matt Marum on 7/21/2022 6:50:35 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#extensions"&gt;&lt;img alt=" " src="/resized-image/__size/269x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#logichooks"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#batch"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#howto"&gt;&lt;img alt=" " src="/resized-image/__size/268x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.44-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework&amp;nbsp;provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/267x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/260x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer-running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;HOWTOs&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section, you will find a few real-world examples of how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.44-AM.png" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allows a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/13</link><pubDate>Tue, 12 Jul 2022 12:47:32 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 13 posted to Dev Tutorials by Rafael Fernandes on 7/12/2022 12:47:32 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#extensions"&gt;&lt;img alt=" " src="/resized-image/__size/269x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#logichooks"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#batch"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#howto"&gt;&lt;img alt=" " src="/resized-image/__size/268x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.44-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/267x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/260x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;HOWTOs&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section you will find few real world examples on how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.44-AM.png" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allows a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/12</link><pubDate>Fri, 08 Jul 2022 16:00:38 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 12 posted to Dev Tutorials by Rafael Fernandes on 7/8/2022 4:00:38 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#extensions"&gt;&lt;img alt=" " src="/resized-image/__size/269x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#logichooks"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#batch"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#howto"&gt;&lt;img alt=" " src="/resized-image/__size/268x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.44-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/267x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/260x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;HOWTOs&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section you will find few real world examples on how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allows a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Validation_Constraints/"&gt;Validation Constraints&lt;/a&gt; &lt;span&gt;how to add validation constraints to&amp;nbsp;your custom&amp;nbsp;code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/11</link><pubDate>Fri, 08 Jul 2022 15:42:17 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 11 posted to Dev Tutorials by Rafael Fernandes on 7/8/2022 3:42:17 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#extensions"&gt;&lt;img alt=" " src="/resized-image/__size/269x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#logichooks"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#batch"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#howto"&gt;&lt;img alt=" " src="/resized-image/__size/268x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.44-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/267x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/260x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/System/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;HOWTOs&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section you will find few real world examples on how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allows a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/10</link><pubDate>Fri, 08 Jul 2022 15:39:14 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 10 posted to Dev Tutorials by Rafael Fernandes on 7/8/2022 3:39:14 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#extensions"&gt;&lt;img alt=" " src="/resized-image/__size/269x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#logichooks"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#batch"&gt;&lt;img alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#howto"&gt;&lt;img alt=" " src="/resized-image/__size/268x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.44-AM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="extensions"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/267x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.31.37-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="logichooks"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/260x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.33.50-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="batch"&gt;&lt;/a&gt;Batch Jobs&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/270x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_07_2D00_08-at-11.34.24-AM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="howto"&gt;&lt;/a&gt;HOWTOs&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section you will find few real world examples on how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allows a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/9</link><pubDate>Fri, 08 Jul 2022 15:19:26 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 9 posted to Dev Tutorials by Rafael Fernandes on 7/8/2022 3:19:26 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#register"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#setup"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#api"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#learn"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="register"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/271x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="setup"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/263x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="api"&gt;&lt;/a&gt;Batch Jobs&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="learn"&gt;&lt;/a&gt;HOWTOs&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section you will find few real world examples on how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allows a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/687/deployment-for-devs"&gt;Deployments&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/8</link><pubDate>Fri, 08 Jul 2022 15:18:37 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 8 posted to Dev Tutorials by Rafael Fernandes on 7/8/2022 3:18:37 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#register"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#setup"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#api"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#learn"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="register"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/271x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="setup"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/263x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="api"&gt;&lt;/a&gt;Batch Jobs&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Job Queue executes automated tasks in Sugar through a&amp;nbsp;scheduler, which integrates with external UNIX systems and Windows systems to run jobs that are scheduled through those systems.&amp;nbsp;Jobs are the individual runs of the specified function from a scheduler:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/"&gt;Job Queues&lt;/a&gt;&amp;nbsp;&lt;span&gt;executes automated tasks in Sugar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Schedulers/"&gt;Schedulers&lt;/a&gt;&amp;nbsp;&lt;span&gt;Sugar provides a Scheduler service that can execute predefined functions asynchronously on a periodic basis&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Architecture/Job_Queue/Schedulers/Creating_Custom_Schedulers"&gt;Creating Custom Schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/"&gt;Scheduler Jobs&lt;/a&gt;&amp;nbsp;&lt;span&gt;Jobs are the individual runs of the specified function from a scheduler&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Creating_Custom_Jobs/"&gt;Creating a Custom Job&lt;/a&gt;&amp;nbsp;&lt;span&gt;How to create and execute your own custom jobs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Job_Queue/Jobs/Queuing_Logic_Hook_Actions/"&gt;Queuing Logic Hook Actions&lt;/a&gt;&amp;nbsp;&lt;span&gt;enables you to send longer running jobs such as sending emails&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="learn"&gt;&lt;/a&gt;HOWTOs&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;In this section you will find few real world examples on how to enable and customize functionalities that makes Sugar better for your end-users and admins.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Global_Search/"&gt;Global Search&lt;/a&gt;&amp;nbsp;h&lt;span&gt;ow to customize the global search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Elastic_Search"&gt;Elasticsearch&lt;/a&gt;&amp;nbsp;&lt;span&gt;how Sugar integrates with Elasticsearch&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Duplicate_Check/"&gt;Duplicate Check&lt;/a&gt;&amp;nbsp;&lt;span&gt;framework provides the capability to alter how the system searches for duplicate records in the database when creating records&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Configurator/"&gt;Configuration Settings&lt;/a&gt;&amp;nbsp;y&lt;span&gt;ou can access the Sugar config (filesystem) settings by using this&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Administration/"&gt;Administration Settings&lt;/a&gt;&amp;nbsp;&lt;span&gt;is used to manage settings stored in the database config table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Tags/"&gt;Tags&lt;/a&gt;&amp;nbsp;&lt;span&gt;allows a user to apply as many &amp;quot;tags&amp;quot; as they choose on any record they want to categorize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Application_Footer/"&gt;Adding Buttons to the Application Footer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Adding_Buttons_to_the_Record_View/"&gt;Adding Buttons to the Record View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_Custom_Fields"&gt;Creating Custom Field Types&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Creating_an_Auto-Incrementing_Field"&gt;Creating an Auto-Incrementing Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Dynamically_Hiding_Subpanels_Based_on_Record_Values"&gt;Dynamically Hiding Subpanels Based on Record Values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Prepopulating_the_Compose_Email_View//"&gt;Prepopulating the Compose Email View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/686/customization-for-devs"&gt;Customizations&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/7</link><pubDate>Fri, 08 Jul 2022 14:45:48 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 7 posted to Dev Tutorials by Rafael Fernandes on 7/8/2022 2:45:48 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#register"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#setup"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#api"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#learn"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="register"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/271x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="setup"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/263x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Comparing_Bean_Properties_Between_Logic_Hooks"&gt;Comparing Bean Properties Between Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="api"&gt;&lt;/a&gt;Studio and Module Builder&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Studio and Module Builder section includes topics covering creating, modifying, and troubleshooting custom fields, relationships, dropdown lists, and modules via Sugar&amp;#39;s Studio and Module Builder tools:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Integration/Web_Services/REST_API/#Authentication"&gt;Best Practices When Building Custom Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Understanding_Module_Builders_Functions/"&gt;Understanding Module Builder&amp;#39;s Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Custom_Module_With_Module_Builder/"&gt;Creating a Custom Module With Module Builder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="are custom buttons that can be added to records to enable users to perform quick actions directly from records such as sending an email, creating or editing a related record, and opening an external web page" href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/Action_Buttons/"&gt;Add ActionButtons to your records&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Dropdown_Field/"&gt;Creating a Dropdown Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Dependent_Dropdown_Lists/"&gt;Creating Dependent Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Relationship/"&gt;Creating Relationship between Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Role-based views provide a way for administrators to set unique layouts for users depending on their role" href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Record_Views/"&gt;Creating Role-Based Record Views&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Dropdown_Lists/"&gt;Creating Role-Based Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Editing_a_Modules_Layouts/"&gt;Editing a Module&amp;#39;s Layouts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Adding_a_Google_Map_to_a_Module/"&gt;Adding a Google Map to a Module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="learn"&gt;&lt;/a&gt;SugarBPM - Advanced Workflow&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;SugarBPM&lt;span class="emoticon" data-url="https://sugarclub.sugarai.com/cfs-file/__key/system/emoji/2122.svg" title="Tm"&gt;&amp;#x2122;&lt;/span&gt;&amp;nbsp;enables administrators to streamline common business processes by managing approvals, sales processes, call triaging, and more. SugarBPM&amp;nbsp;is an easy-to-use business process management (BPM) and workflow tool that adds advanced BPM functionality to Sugar.&lt;/p&gt;
&lt;p&gt;The SugarBPM suite features an extensive toolbox of modules that provide the ability to easily create digital forms and map out robust workflows using a drag-and-drop interface.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prerequisites&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Basic knowledge of process design is required.&lt;/li&gt;
&lt;li&gt;Basic knowledge of process standards such as BPMN is preferred. BPMN is a flowchart-based notation used to define business processes within an organization.&lt;/li&gt;
&lt;li&gt;You should know which business processes you want to automate in Sugar.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/SugarBPM/"&gt;SugarBPM&lt;/a&gt; Overview&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Business_Process_Automation_via_SugarBPM/"&gt;Introduction to Business Process Automation via SugarBPM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Getting_Started_With_SugarBPM_for_Sugar_Serve/"&gt;Getting Started With SugarBPM for Sugar Serve&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Using_SugarBPM_to_Notify_a_Team_or_User_on_Record_Creation/"&gt;Using SugarBPM to Notify a Team or User on Record Creation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Email_Direction_in_Process_Definitions/"&gt;Understanding Email Direction in Process Definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Round_Robin_Activities_vs_Round_Robin_Actions/"&gt;Understanding Round Robin Activities vs. Round Robin Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/686/customization-for-devs"&gt;Customizations&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/6</link><pubDate>Fri, 08 Jul 2022 14:22:07 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 6 posted to Dev Tutorials by Rafael Fernandes on 7/8/2022 2:22:07 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#register"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#setup"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#api"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#learn"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="register"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/271x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="setup"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/263x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Web_Logic_Hooks/"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="api"&gt;&lt;/a&gt;Studio and Module Builder&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Studio and Module Builder section includes topics covering creating, modifying, and troubleshooting custom fields, relationships, dropdown lists, and modules via Sugar&amp;#39;s Studio and Module Builder tools:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Integration/Web_Services/REST_API/#Authentication"&gt;Best Practices When Building Custom Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Understanding_Module_Builders_Functions/"&gt;Understanding Module Builder&amp;#39;s Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Custom_Module_With_Module_Builder/"&gt;Creating a Custom Module With Module Builder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="are custom buttons that can be added to records to enable users to perform quick actions directly from records such as sending an email, creating or editing a related record, and opening an external web page" href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/Action_Buttons/"&gt;Add ActionButtons to your records&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Dropdown_Field/"&gt;Creating a Dropdown Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Dependent_Dropdown_Lists/"&gt;Creating Dependent Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Relationship/"&gt;Creating Relationship between Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Role-based views provide a way for administrators to set unique layouts for users depending on their role" href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Record_Views/"&gt;Creating Role-Based Record Views&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Dropdown_Lists/"&gt;Creating Role-Based Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Editing_a_Modules_Layouts/"&gt;Editing a Module&amp;#39;s Layouts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Adding_a_Google_Map_to_a_Module/"&gt;Adding a Google Map to a Module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="learn"&gt;&lt;/a&gt;SugarBPM - Advanced Workflow&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;SugarBPM&lt;span class="emoticon" data-url="https://sugarclub.sugarai.com/cfs-file/__key/system/emoji/2122.svg" title="Tm"&gt;&amp;#x2122;&lt;/span&gt;&amp;nbsp;enables administrators to streamline common business processes by managing approvals, sales processes, call triaging, and more. SugarBPM&amp;nbsp;is an easy-to-use business process management (BPM) and workflow tool that adds advanced BPM functionality to Sugar.&lt;/p&gt;
&lt;p&gt;The SugarBPM suite features an extensive toolbox of modules that provide the ability to easily create digital forms and map out robust workflows using a drag-and-drop interface.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prerequisites&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Basic knowledge of process design is required.&lt;/li&gt;
&lt;li&gt;Basic knowledge of process standards such as BPMN is preferred. BPMN is a flowchart-based notation used to define business processes within an organization.&lt;/li&gt;
&lt;li&gt;You should know which business processes you want to automate in Sugar.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/SugarBPM/"&gt;SugarBPM&lt;/a&gt; Overview&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Business_Process_Automation_via_SugarBPM/"&gt;Introduction to Business Process Automation via SugarBPM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Getting_Started_With_SugarBPM_for_Sugar_Serve/"&gt;Getting Started With SugarBPM for Sugar Serve&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Using_SugarBPM_to_Notify_a_Team_or_User_on_Record_Creation/"&gt;Using SugarBPM to Notify a Team or User on Record Creation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Email_Direction_in_Process_Definitions/"&gt;Understanding Email Direction in Process Definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Round_Robin_Activities_vs_Round_Robin_Actions/"&gt;Understanding Round Robin Activities vs. Round Robin Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/686/customization-for-devs"&gt;Customizations&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/5</link><pubDate>Fri, 08 Jul 2022 14:20:57 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 5 posted to Dev Tutorials by Rafael Fernandes on 7/8/2022 2:20:57 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#register"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#setup"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#api"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#learn"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="register"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/271x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="setup"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/263x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Web Logic Hooks" href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/Web_Logic_Hooks"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Cookbook/Logic_Hooks/Preventing_Infinite_Loops_with_Logic_Hooks"&gt;Preventing Infinite Loops with Logic Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="api"&gt;&lt;/a&gt;Studio and Module Builder&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Studio and Module Builder section includes topics covering creating, modifying, and troubleshooting custom fields, relationships, dropdown lists, and modules via Sugar&amp;#39;s Studio and Module Builder tools:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Integration/Web_Services/REST_API/#Authentication"&gt;Best Practices When Building Custom Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Understanding_Module_Builders_Functions/"&gt;Understanding Module Builder&amp;#39;s Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Custom_Module_With_Module_Builder/"&gt;Creating a Custom Module With Module Builder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="are custom buttons that can be added to records to enable users to perform quick actions directly from records such as sending an email, creating or editing a related record, and opening an external web page" href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/Action_Buttons/"&gt;Add ActionButtons to your records&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Dropdown_Field/"&gt;Creating a Dropdown Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Dependent_Dropdown_Lists/"&gt;Creating Dependent Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Relationship/"&gt;Creating Relationship between Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Role-based views provide a way for administrators to set unique layouts for users depending on their role" href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Record_Views/"&gt;Creating Role-Based Record Views&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Dropdown_Lists/"&gt;Creating Role-Based Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Editing_a_Modules_Layouts/"&gt;Editing a Module&amp;#39;s Layouts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Adding_a_Google_Map_to_a_Module/"&gt;Adding a Google Map to a Module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="learn"&gt;&lt;/a&gt;SugarBPM - Advanced Workflow&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;SugarBPM&lt;span class="emoticon" data-url="https://sugarclub.sugarai.com/cfs-file/__key/system/emoji/2122.svg" title="Tm"&gt;&amp;#x2122;&lt;/span&gt;&amp;nbsp;enables administrators to streamline common business processes by managing approvals, sales processes, call triaging, and more. SugarBPM&amp;nbsp;is an easy-to-use business process management (BPM) and workflow tool that adds advanced BPM functionality to Sugar.&lt;/p&gt;
&lt;p&gt;The SugarBPM suite features an extensive toolbox of modules that provide the ability to easily create digital forms and map out robust workflows using a drag-and-drop interface.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prerequisites&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Basic knowledge of process design is required.&lt;/li&gt;
&lt;li&gt;Basic knowledge of process standards such as BPMN is preferred. BPMN is a flowchart-based notation used to define business processes within an organization.&lt;/li&gt;
&lt;li&gt;You should know which business processes you want to automate in Sugar.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/SugarBPM/"&gt;SugarBPM&lt;/a&gt; Overview&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Business_Process_Automation_via_SugarBPM/"&gt;Introduction to Business Process Automation via SugarBPM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Getting_Started_With_SugarBPM_for_Sugar_Serve/"&gt;Getting Started With SugarBPM for Sugar Serve&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Using_SugarBPM_to_Notify_a_Team_or_User_on_Record_Creation/"&gt;Using SugarBPM to Notify a Team or User on Record Creation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Email_Direction_in_Process_Definitions/"&gt;Understanding Email Direction in Process Definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Round_Robin_Activities_vs_Round_Robin_Actions/"&gt;Understanding Round Robin Activities vs. Round Robin Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/686/customization-for-devs"&gt;Customizations&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/4</link><pubDate>Fri, 08 Jul 2022 14:18:37 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 4 posted to Dev Tutorials by Rafael Fernandes on 7/8/2022 2:18:37 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#register"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#setup"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#api"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#learn"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="register"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/271x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="setup"&gt;&lt;/a&gt;Logic Hooks / System Events&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Logic Hook framework allows you to&amp;nbsp;append actions to system&amp;nbsp;events such as when creating, editing, and deleting records.&amp;nbsp;Logic hook definitions can&amp;nbsp;pertain&amp;nbsp;to&amp;nbsp;a&amp;nbsp;specific module or to the entire application. Either way, you must decide if the logic hook definition will be implemented as an extension of or directly to the module or application.&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/263x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/#Module_Extension_Hooks"&gt;Module Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer&amp;nbsp;to define&amp;nbsp;hook actions that will be executed for the specified&amp;nbsp;events in a given module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/#Application%20Extension%20Hooks"&gt;Application Extension Hooks&lt;/a&gt; &lt;span&gt;allow a developer to define&amp;nbsp;hook actions that will be executed for all specified application-level events&amp;nbsp;using the extension framework&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Web Logic Hooks" href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/Web_Logic_Hooks"&gt;&lt;span&gt;Web Logic Hooks&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span&gt;Web logic hooks let administrators post record and event information to a specified URL when certain sugar events take place&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/Application_Hooks/"&gt;Application Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/Module_Hooks/"&gt;Module Hooks Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/User_Hooks/"&gt;User Hooks Events&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/Job_Queue_Hooks"&gt;Job Queue Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Sugar_Developer/Architecture/Logic_Hooks/API_Hooks"&gt;API Hooks Events&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="api"&gt;&lt;/a&gt;Studio and Module Builder&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Studio and Module Builder section includes topics covering creating, modifying, and troubleshooting custom fields, relationships, dropdown lists, and modules via Sugar&amp;#39;s Studio and Module Builder tools:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Integration/Web_Services/REST_API/#Authentication"&gt;Best Practices When Building Custom Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Understanding_Module_Builders_Functions/"&gt;Understanding Module Builder&amp;#39;s Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Custom_Module_With_Module_Builder/"&gt;Creating a Custom Module With Module Builder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="are custom buttons that can be added to records to enable users to perform quick actions directly from records such as sending an email, creating or editing a related record, and opening an external web page" href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/Action_Buttons/"&gt;Add ActionButtons to your records&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Dropdown_Field/"&gt;Creating a Dropdown Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Dependent_Dropdown_Lists/"&gt;Creating Dependent Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Relationship/"&gt;Creating Relationship between Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Role-based views provide a way for administrators to set unique layouts for users depending on their role" href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Record_Views/"&gt;Creating Role-Based Record Views&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Dropdown_Lists/"&gt;Creating Role-Based Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Editing_a_Modules_Layouts/"&gt;Editing a Module&amp;#39;s Layouts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Adding_a_Google_Map_to_a_Module/"&gt;Adding a Google Map to a Module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="learn"&gt;&lt;/a&gt;SugarBPM - Advanced Workflow&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;SugarBPM&lt;span class="emoticon" data-url="https://sugarclub.sugarai.com/cfs-file/__key/system/emoji/2122.svg" title="Tm"&gt;&amp;#x2122;&lt;/span&gt;&amp;nbsp;enables administrators to streamline common business processes by managing approvals, sales processes, call triaging, and more. SugarBPM&amp;nbsp;is an easy-to-use business process management (BPM) and workflow tool that adds advanced BPM functionality to Sugar.&lt;/p&gt;
&lt;p&gt;The SugarBPM suite features an extensive toolbox of modules that provide the ability to easily create digital forms and map out robust workflows using a drag-and-drop interface.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prerequisites&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Basic knowledge of process design is required.&lt;/li&gt;
&lt;li&gt;Basic knowledge of process standards such as BPMN is preferred. BPMN is a flowchart-based notation used to define business processes within an organization.&lt;/li&gt;
&lt;li&gt;You should know which business processes you want to automate in Sugar.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/SugarBPM/"&gt;SugarBPM&lt;/a&gt; Overview&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Business_Process_Automation_via_SugarBPM/"&gt;Introduction to Business Process Automation via SugarBPM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Getting_Started_With_SugarBPM_for_Sugar_Serve/"&gt;Getting Started With SugarBPM for Sugar Serve&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Using_SugarBPM_to_Notify_a_Team_or_User_on_Record_Creation/"&gt;Using SugarBPM to Notify a Team or User on Record Creation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Email_Direction_in_Process_Definitions/"&gt;Understanding Email Direction in Process Definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Round_Robin_Activities_vs_Round_Robin_Actions/"&gt;Understanding Round Robin Activities vs. Round Robin Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/686/customization-for-devs"&gt;Customizations&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Customization for Devs</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs/revision/3</link><pubDate>Thu, 30 Jun 2022 19:27:40 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:62c19bae-2a63-45ee-9faa-be1d6cc89c21</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/686/customization-for-devs#comments</comments><description>Revision 3 posted to Dev Tutorials by Rafael Fernandes on 6/30/2022 7:27:40 PM&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="#register"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#setup"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#api"&gt;&lt;img alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="#learn"&gt;&lt;img alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="register"&gt;&lt;/a&gt;Extensions&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The extension framework,&amp;nbsp;defined in&amp;nbsp;&lt;code&gt;./ModuleInstall/extensions.php&lt;/code&gt;, provides the capability to modify Sugar metadata such as&amp;nbsp;vardefs&amp;nbsp;and&amp;nbsp;layouts&amp;nbsp;in a safe way that supports installing, uninstalling, enabling, and disabling without interfering with other customizations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/271x140/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.17.45-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Architecture/Extensions/"&gt;Extension Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Layouts"&gt;Create or override a Sidecar Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Views"&gt;Create or override a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/User_Interface/Fields"&gt;Add logic to a field prior to render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Vardefs"&gt;Add or override vardefs (variables) definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Layoutdefs/"&gt;Add or override subpanel definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Architecture/Extensions/Modules"&gt;Add new modules through code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/#Resetting_Modules"&gt;Resetting Modules to default settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="setup"&gt;&lt;/a&gt;Developer Tools&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Developer Tools section of Sugar&amp;#39;s Admin page contains various configuration menus that help you customize your instance to best suit your organization&amp;#39;s needs. Developer Tools allow you to edit the look, feel, and functionality of your instance, including adding fields, changing layouts, adding automated processes, and creating entirely new modules.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/263x136/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.00-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/"&gt;Studio&lt;/a&gt; enables administrators to customize stock or custom modules&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Module_Builder/"&gt;Module Builder&lt;/a&gt; enables administrators to create, deploy, and maintain custom modules&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Module_Loader/"&gt;Module Loader&lt;/a&gt; is used to import&amp;nbsp;packages into Sugar that make changes to core files&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/#Rename_Modules"&gt;Rename Modules&lt;/a&gt;, Administrators can easily rename modules&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/SugarBPM/"&gt;SugarBPM&amp;nbsp;&lt;/a&gt;enables administrators to streamline common business processes&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Sugar_Portal/"&gt;Sugar Portal&lt;/a&gt; is a powerful tool that allows Sugar users to interact with customers&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Advanced_Configuration_Options/"&gt;Advanced Configuration,&amp;nbsp;&lt;/a&gt;&lt;span&gt;Sugar comes with many different ways to configure your system to best meet your needs&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Data_Privacy/Data_Privacy_Guide/"&gt;Data Privacy Guide&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Application_Guide/User_Interface"&gt;User Interface, Sidecar, Navigations, Home, Search&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1f4f3gg1d0"&gt;&lt;span&gt;&lt;a id="api"&gt;&lt;/a&gt;Studio and Module Builder&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;The Studio and Module Builder section includes topics covering creating, modifying, and troubleshooting custom fields, relationships, dropdown lists, and modules via Sugar&amp;#39;s Studio and Module Builder tools:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/273x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.18.20-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Developer_Guide/Integration/Web_Services/REST_API/#Authentication"&gt;Best Practices When Building Custom Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Understanding_Module_Builders_Functions/"&gt;Understanding Module Builder&amp;#39;s Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Custom_Module_With_Module_Builder/"&gt;Creating a Custom Module With Module Builder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="are custom buttons that can be added to records to enable users to perform quick actions directly from records such as sending an email, creating or editing a related record, and opening an external web page" href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/Developer_Tools/Studio/Action_Buttons/"&gt;Add ActionButtons to your records&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Dropdown_Field/"&gt;Creating a Dropdown Field&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Dependent_Dropdown_Lists/"&gt;Creating Dependent Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_a_Relationship/"&gt;Creating Relationship between Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Role-based views provide a way for administrators to set unique layouts for users depending on their role" href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Record_Views/"&gt;Creating Role-Based Record Views&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Creating_Role-Based_Dropdown_Lists/"&gt;Creating Role-Based Dropdown Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Editing_a_Modules_Layouts/"&gt;Editing a Module&amp;#39;s Layouts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/Studio_and_Module_Builder/Adding_a_Google_Map_to_a_Module/"&gt;Adding a Google Map to a Module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;a id="learn"&gt;&lt;/a&gt;SugarBPM - Advanced Workflow&lt;/h1&gt;
&lt;div class="row"&gt;
&lt;div class="col-xs-12 col-md-9"&gt;
&lt;p&gt;SugarBPM&lt;span class="emoticon" data-url="https://sugarclub.sugarai.com/cfs-file/__key/system/emoji/2122.svg" title="Tm"&gt;&amp;#x2122;&lt;/span&gt;&amp;nbsp;enables administrators to streamline common business processes by managing approvals, sales processes, call triaging, and more. SugarBPM&amp;nbsp;is an easy-to-use business process management (BPM) and workflow tool that adds advanced BPM functionality to Sugar.&lt;/p&gt;
&lt;p&gt;The SugarBPM suite features an extensive toolbox of modules that provide the ability to easily create digital forms and map out robust workflows using a drag-and-drop interface.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img class="align-right" style="float:right;" alt=" " src="/resized-image/__size/272x141/__key/communityserver-wikis-components-files/00-00-00-00-61/Screen-Shot-2022_2D00_06_2D00_30-at-2.19.03-PM.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prerequisites&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Basic knowledge of process design is required.&lt;/li&gt;
&lt;li&gt;Basic knowledge of process standards such as BPMN is preferred. BPMN is a flowchart-based notation used to define business processes within an organization.&lt;/li&gt;
&lt;li&gt;You should know which business processes you want to automate in Sugar.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Administration_Guide/SugarBPM/"&gt;SugarBPM&lt;/a&gt; Overview&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Business_Process_Automation_via_SugarBPM/"&gt;Introduction to Business Process Automation via SugarBPM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Getting_Started_With_SugarBPM_for_Sugar_Serve/"&gt;Getting Started With SugarBPM for Sugar Serve&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Using_SugarBPM_to_Notify_a_Team_or_User_on_Record_Creation/"&gt;Using SugarBPM to Notify a Team or User on Record Creation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Email_Direction_in_Process_Definitions/"&gt;Understanding Email Direction in Process Definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.sugarcrm.com/Knowledge_Base/SugarBPM/Understanding_Round_Robin_Activities_vs_Round_Robin_Actions/"&gt;Understanding Round Robin Activities vs. Round Robin Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="mcetoc_1g6ls8l4i0"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h1&gt;
&lt;h3 id="mcetoc_1f5uvkqns0"&gt;&lt;span style="font-size:inherit;"&gt;You&amp;#39;re up and running, but don&amp;#39;t stop now - this is just the beginning of your journey. Now it&amp;#39;s time to &lt;a href="/dev-club/dev-onboarding/w/documentation/686/customization-for-devs"&gt;Customizations&lt;/a&gt;.&lt;/span&gt;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>