Subscribe to my developers newsletter!

I have started a developer's newsletter. Join if you are interested! https://sugarcrm.substack.com/. Please let me know if you have any topics you would like me to discuss.

SugarCRM PowerHour with Jeff Bickart

  • Hi Jeff, thanks for the newsletter :-)

    What you can introduce next time could be how do you deploy on the cloud. As we have some customers on the cloud, everytime we are doinng some tricky things to deploy, such as exporting the studio to get the metadata files, git diff the whole isntance and get only the delta with the last tag, build manually with sugarcli the packages, etc ... 

    We are curious to know how other partners are doing their deployments. (cc & )

  • I like this one, I don't work in Cloud so a summary of how to do that would be nice.
    Also, maybe, basic file structure and how to set up version control on your local copy, files to ignore, and how that plays into preparing the files for deployment.

  • One more for you: Testing.
    Best practices for testing your custom code both PHP and Javascript.

  • : Here is my trick

    Obtain the backup from Sugar Cloud from the ops_Backups module. 

    Setup on your local computer

    We utilize Source Code Control, git

    git init
    git add --all
    git commit -m 'Files as provided by Sugar Cloud'

    We also have a .gitignore, so we don't worry about things like the orderMappings*.php files changing.

    Then you can make any/all changes that you would like and git will tell you what has changed.

    Once we have the list of files, we have a package builder that will create a module loadable package.  The package builder requires some manual edits to the manifest so that custom fields, etc are loaded properly.

  • /*.log
    /*.php
    /*.json
    /*.swp
    /*.xml
    **/.DS_Store
    /LICENSE
    /pdf.php
    /image.php
    /install/
    /log_file_restricted.html
    /soap/
    /service/
    /touchscreen.php
    /config_override.php
    /data/
    /examples/
    /soap.php
    /crossdomain.xml
    /mobile.php
    /oc_convert.php
    /sugarcrm.log
    /emailmandelivery.php
    /styleguide/
    /gulpfile.js
    /upgrade/
    /maintenance.php
    /json_server.php
    /ModuleInstall/
    /install.log
    /vCard.php
    /run_job.php
    /silentFTSIndex.php
    /src/
    /leadCapture.php
    /gulp/
    /files.md5
    /composer.lock
    /api/
    /config.php
    /sugar_version.json
    /UpgradeWizard.php
    /index.php
    /include/
    /jssource/
    /package.json
    /Ext/
    /process_workflow.php
    /metagen.php
    /export.php
    /removeme.php
    /SugarCRM_Basic_Development_Rules
    /process_queue.php
    /sugar_version.php
    /TreeData.php
    /vendor/
    /cookie.html
    /install.php
    /download.php
    /yarn.lock
    /mobile/
    /ical_server.php
    /clients/
    /cache/
    /campaign_tracker.php
    /sidecar/
    /upload/
    /WebToLeadCapture.php
    /metadata/
    /composer.json
    /themes/
    /bin/
    /.htaccess
    /HandleAjaxCall.php
    /robots.txt
    /vcal_server.php
    /cron.php
    /custom/application/
    /custom/working/
    /custom/history/
    **/*.ext.php
    /portal2/
    /PMSE.log
    /queueManager.php
    /sessions
    /dist/
    /etc/
    /file.csv
    /config.php*
    /features
    
    /custom/modules/Connectors/connectors/sources/ext/rest/acton/config.php
    !/custom/modules/Connectors/metadata/connectors.php
    /custom/modules/*/workflow
    /custom/modules/*/workflow/*
    /custom/**/orderMapping.php
    /modules/Accounts/
    /modules/ACL/
    /modules/ACLActions/
    /modules/ACLFields/
    /modules/ACLRoles/
    /modules/Activities/
    /modules/ActivityStream/
    /modules/Administration/
    /modules/Audit/
    /modules/BeanDictionary.php
    /modules/Bugs/
    /modules/Calendar/
    /modules/Calls/
    /modules/CampaignLog/
    /modules/Campaigns/
    /modules/CampaignTrackers/
    /modules/Cases/
    /modules/Categories/
    /modules/Charts/
    /modules/CollectionDictionary.php
    /modules/CommentLog
    /modules/Configurator/
    /modules/Connectors/
    /modules/Contacts/
    /modules/Contracts/
    /modules/ContractTypes/
    /modules/Currencies/
    /modules/CustomQueries/
    /modules/Dashboards/
    /modules/DataPrivacy/
    /modules/DataSets/
    /modules/DocumentRevisions/
    /modules/Documents/
    /modules/DynamicFields/
    /modules/EAPM/
    /modules/EmailAddresses
    /modules/EmailAddresses/
    /modules/EmailMan/
    /modules/EmailMarketing/
    /modules/EmailParticipants/
    /modules/Emails
    /modules/Emails/
    /modules/EmailTemplates/
    /modules/EmailText/
    /modules/EmbeddedFiles/
    /modules/Employees/
    /modules/ExpressionEngine/
    /modules/Expressions/
    /modules/Feedbacks/
    /modules/Filters/
    /modules/ForecastManagerWorksheets/
    /modules/Forecasts/
    /modules/ForecastSchedule/
    /modules/ForecastWorksheets/
    /modules/Groups/
    /modules/HealthCheck/
    /modules/Help/
    /modules/History/
    /modules/Holidays/
    /modules/Home/
    /modules/iCals/
    /modules/Import/
    /modules/InboundEmail/
    /modules/KBArticles/
    /modules/KBContents/
    /modules/KBContentTemplates/
    /modules/KBDocumentKBTags/
    /modules/KBDocumentRevisions/
    /modules/KBDocuments/
    /modules/KBTags/
    /modules/LabelEditor/
    /modules/Leads/
    /modules/Mailer/
    /modules/MailMerge/
    /modules/Manufacturers/
    /modules/Meetings/
    /modules/MergeRecords/
    /modules/ModuleBuilder/
    /modules/MySettings/
    /modules/Notes/
    /modules/Notifications/
    /modules/OAuthKeys/
    /modules/OAuthTokens/
    /modules/Opportunities/
    /modules/OptimisticLock/
    /modules/OutboundEmail/
    /modules/OutboundEmailConfiguration/
    /modules/PdfManager/
    /modules/pmse_Business_Rules/
    /modules/pmse_Emails_Templates
    /modules/pmse_Emails_Templates/
    /modules/pmse_Inbox/
    /modules/pmse_Project/
    /modules/ProductBundleNotes/
    /modules/ProductBundles/
    /modules/ProductCategories/
    /modules/Products/
    /modules/ProductTemplates/
    /modules/ProductTypes/
    /modules/Project/
    /modules/ProjectResources/
    /modules/ProjectTask/
    /modules/ProspectLists/
    /modules/Prospects/
    /modules/Quotas/
    /modules/Quotes/
    /modules/Relationships/
    /modules/Releases/
    /modules/ReportMaker/
    /modules/Reports/
    /modules/ReportSchedules
    /modules/RevenueLineItems/
    /modules/Roles/
    /modules/SavedSearch
    /modules/SavedSearch/
    /modules/Schedulers/
    /modules/SchedulersJobs/
    /modules/Shippers/
    /modules/SNIP/
    /modules/Studio
    /modules/Studio/
    /modules/Styleguide/
    /modules/SugarFavorites/
    /modules/Sync/
    /modules/TableDictionary.php
    /modules/Tags/
    /modules/Tasks/
    /modules/TaxRates/
    /modules/TeamNotices/
    /modules/Teams/
    /modules/TimePeriods/
    /modules/Trackers/
    /modules/UpgradeWizard/
    /modules/UserPreferences/
    /modules/Users/
    /modules/UserSignatures/
    /modules/vCals/
    /modules/Versions/
    /modules/WebLogicHooks/
    /modules/WorkFlow/
    /modules/WorkFlowActions/
    /modules/WorkFlowActionShells/
    /modules/WorkFlowAlerts/
    /modules/WorkFlowAlertShells/
    /modules/WorkFlowTriggerShells/
    /modules/BusinessCenters/
    /modules/ChangeTimers/
    /modules/ConsoleConfiguration/
    /modules/VisualPipeline/
    /modules/Messages/
    /modules/PurchasedLineItems/
    /modules/Purchases/
    /modules/ShiftExceptions/
    /modules/Shifts/
    /custom/modules/ChangeTimers/
    /custom/modules/ConsoleConfiguration/
    /custom/modules/VisualPipeline/
    /custom/modulebuilder
    /upgrades/
    /modules/SugarLive/
    /modules/ArchiveRuns/
    /modules/DataArchiver/
    /modules/MobileDevices/
    /modules/PushNotifications/
    /modules/Calendar_iCals/
    /modules/Maps/
    /modules/HintAccountsets/
    /modules/HintEnrichFieldConfigs/
    /modules/HintNewsNotifications/
    /modules/HintNotificationTargets/
    /modules/Escalations/
    /modules/CloudDrivePaths/
    /modules/DocumentTemplates/
    /modules/DocumentMerges/
    /modules/DocuSignEnvelopes/
    /custom/tests
    /custom/Extension/modules/**/*orderMapping.php
    /custom/**/*orderMapping.php
    /custom/**/*suback.php
    /session
    /portal
    /.idea/

    .gitignore for Sugar 12 Preview 1