By days 1, 2, and 3, you learned how to create modules, set up relationships, and use hooks to record events. This structure would have given you some understanding of
By days 1, 2, and 3, you learned how to create modules, set up relationships, and use hooks to record events. This structure would have given you some understanding of SuiteCRM, its fundamentals, and how you can fine-tune it to your business logic. However, consider if you have been writing the same retrieval logic, debug calls, and email sends across each project; you might know how all of it can add to and increase your workload. Day 4 is all about working smarter.
Outright Utils can be defined as a custom PHP helper library developed by an experienced CRM team that can minimize repetitive manual setup, encompassing common SuiteCRM operations into consistent and clean functions you can call in a single line. Along with it, you will also get a complete walkthrough of Flight, which is our internal dashboard of 16 ready-to-use tools that create extension-ready code without you having to create code from the beginning every time. The purpose of this blog is to help you spend less time on setup and spend more time executing logic that matters to you actually.
PHP Utility Functions
Outright Utils is a custom PHP helper library maintained by the team. These functions wrap common SuiteCRM operations to reduce repetitive boilerplate code and enforce consistent patterns.
| Function | Purpose | Key Parameters |
|---|---|---|
| outright_retreive() | Retrieve a single Bean by ID | $module, $id |
| outright_retreive_by_query() | Retrieve a Bean using raw SQL WHERE clause | $module, $sql |
| outright_retreive_list() | Retrieve multiple Beans with filters | $module, $where, $order, $limit |
| outright_get_related() | Load all related Beans through a link | $bean, $linkName |
| outright_send_email() | Send an email via SuiteCRM email engine | $to, $subject, $body, $options |
| outright_render_view() | Render a SuiteCRM view as HTML string | $module, $view, $options |
| outright_get_module_fields() | Get all field definitions for a module | $module |
| outright_get_field_names() | Get flat array of field names | $module |
| outright_get_fields_by_type() | Filter fields by type | $module, $type |
| outright_debug() | Print debug info to screen or log | $data, $die |
| outright_get_bean() | Get a fresh empty Bean instance safely | $module |
| outright_repair() | Trigger Quick Repair & Rebuild | $actions |
| outright_log() | Write structured entry to suitecrm.log | $message, $level, $context |
| outright_get_related_list() | Load and return related Beans array | $bean, $linkName |
| outright_retreive_list_by_query() | Retrieve Beans list using full SQL | $module, $sql |
| outright_get_dropdown_values() | Return dropdown options array | $dropdownName |
Usage Examples
Retrieve a Single Record
$account = outright_retreive('Accounts', $accountId);
if ($account && !empty($account->id)) {
echo $account->name;
}
Retrieve a List with Filters
$contacts = outright_retreive_list(
'Contacts',
"account_id = '" . addslashes($accountId) . "' AND deleted = 0",
'date_modified DESC',
50
);
foreach ($contacts as $contact) {
echo $contact->first_name . ' ' . $contact->last_name;
}
Send an Email
$result = outright_send_email(
'client@example.com',
'Your Report is Ready',
'<p>Please find your report attached.</p>',
['from_name' => 'Outright Digital', 'cc' => 'manager@example.com']
);
Internal Flight Tools (16 Tools)
Flight is an internal web-based tool dashboard accessible after login. These 16 tools eliminate repetitive scaffolding work and let you build SuiteCRM extensions without manually writing boilerplate code.
| Tool Name | What It Does |
| Module Creator | Scaffold complete custom modules with fields, relationships, and layouts |
| Hook Builder | Generate logic hook registration files and class stubs |
| Entry Point Generator | Create registry files and handler PHP with security guard |
| Scheduler Builder | Generate scheduled task function, registration entry, and language file |
| Vardef Builder | Generate custom field vardef files for Extension framework |
| API Field Builder | Generate API field definitions and layouts for custom modules |
| Email Template Builder | Create SuiteCRM email templates with variable substitution |
| Relationship Builder | Generate relationship vardefs and subpanel definitions |
| Dropdown Manager | Create and edit dropdown lists with language string export |
| Layout Manager | Export and import EditView/DetailView/ListView layout XML |
| Language Pack Builder | Bundle custom language strings into a deployable package |
| Role Builder | Scaffold Security Suite role definitions |
| Report Builder | Build AOR_Reports configuration without UI clicks |
| Repair Runner | Trigger Quick Repair & Rebuild, extensions rebuild, or cache clear |
| Log Viewer | Live tail and filter suitecrm.log with level and module filters |
| Bean Inspector | Inspect any live Bean by module + ID, showing all field values |
Conclusion
Outright Utils and Flight are not just tools for convenience. They are essential tools that help teams keep their SuiteCRM projects maintainable, consistent, and quick to deliver. Each function lives in the utility library since someone created the code too many times. There is a reason for every tool to exist in the Flight dashboard: manually creating boilerplate code and files repeatedly increases workload and reduces productivity. OutRight Utils follows a very basic principle: if you are repeatedly doing the same thing, there must be a better way to do that.
Day 5 of our SuiteCRM training helps you go deeper into the database itself. You will learn how SuiteCRM stores information, how you can query data directly with SQL, and what the roles are that keep such queries safe. Using this knowledge, you can easily inspect, debug, and understand what you have built so far.
Learn More:
Day 3: Builder & QA โ SuiteCRM Logic Hooks, Jobs, and Entry Points
Day 2: Advanced CRM Training โ Builder, Studio, and Relationships
Day 1: SuiteCRM Basics Training โ Understanding Modules, Fields, and Layouts
Respond to this article with emojis