Kalyan Lanka discusses release and change management best practices for Salesforce projects. He recommends using version control like Git to track changes, continuous integration tools to automate deployments from development to test environments, and issue tracking systems like Jira. Specifically, he provides examples of how REI Systems implemented Github and Jenkins to manage multiple related projects and ensure testing environments were up to date. For product development, Xceede Solutions used Github, Aha.io for feature tracking, and Jenkins to facilitate offshore development and testing.
2. Agenda
• Why Release Management?
• The method!
• Best Practice for Salesforce
Projects
– REI Systems Experience
• Best Practice for Product
Organization/ISV organization
– Xceede Solutions experience
• Demo & Questions
Release & Change Management in
Salesforce By Kalyan Lanka
3. Why Release Management?
• Release Management is a process of managing software
releases or software development process
• Often release planning/management starts on Salesforce
projects like this:
Release & Change Management in
Salesforce By Kalyan Lanka
4. Why Release Management?
• Secret sauce for timely completion
of sprints
• Increases Software Quality of your
project
• Avoid discovering and fixing issues
after going live in production
• Fail fast, fail cheap and Pivot
• Happy Developers & testers
• Happy Management
• Happy Customers
Discover
& Design
Salesforce
Development
Life Cycle
Build &
Release
Validate
& Test
Train &
Release
Release & Change Management in
Salesforce By Kalyan Lanka
5. Salesforce Environments
• Production – Salesforce Org. where
business users use to run the business
• Full Sandbox – Backup/UAT/Training
Org. that companies use to train
employees, backup production or
conduct UAT
• Developer Pro – Testing environments
or Integration test environments
• Developer – Development
Environments
• Pre-Release – Sandbox for Pre-
Release testing
Production
Full
Sandbox
Developer
Pro
Developer
Pre
Release
Release & Change Management in
Salesforce By Kalyan Lanka
6. Version Control & Why?
• Tracking and managing change is imperative for successful projects
• Unfortunately not much emphasis has been given on Salesforce
projects on the need Version Control
• Version Control gives ability for developers and leads to identify and
pre-empt issues and bad Salesforce development practices
• Provides ability to back-up code/configuration changes
• Extends Salesforce into a platform for multi-projects
implementation and providing flexibility in feature roll-out to users
Release & Change Management in
Salesforce By Kalyan Lanka
7. Change Management Approaches
• Change Sets
– Good
• Simple method for deployments
• Point and Click methods
– Bad
• Not easy to manage large changes
• Time-consuming and not repeatable
• Manual and error prone
– Recommended for simpler projects
Release & Change Management in
Salesforce By Kalyan Lanka
• IDE Deployments using Eclipse/Mavensmate
– Good
• Can determine easily what files to deploy
• Ability to track changes to components
• Deploy to multiple sandboxes or production easily from the IDE
– Bad
• Not easy to manage large changes
• Time-consuming and not repeatable
– Recommended for simpler projects
8. Change Management Approaches
Release & Change Management in
Salesforce By Kalyan Lanka
Change sets IDE Metadata API
• Simple & Declarative
method for deployments
• Identify dependencies and
deploy related
components
• Fast and easy
deployments for simple
changes
• Can be move across orgs.
easily
• Can determine easily what
files to deploy
• Ability to track changes to
components
• Deploy to multiple
sandboxes or production
easily from the IDE
• Ability to track test
coverage of class and run
test classes
• Ability to deploy changes
across multiple
organizations quickly
• Ability to semi-automate
extraction of metadata and
deploy across connected
and unconnected orgs
• Reduces the risk of
unforeseen changes and
deployments
• Difficult to track changes
• Complexity increases
exponentially when
components increase
• Only possible in Connected
Orgs
• Difficult to track changes
• Left to the developer to
deploy the changes
• Using development
environments for
deployment in production
• May not follow
Organizations Security
guidelines & polices
• Difficult to track changes
• Manually run changes and
identify dependencies
• Not easy to automate for
pre and post deployment
steps
• May not follow
Organizations Security
guidelines & polices
9. Change Management Approaches -
Recommended
• Automated Builds and Deployments
– Advantages
• Use Version Control for track and monitor changes
• Use Continuous Integration tools to deploy changes in Salesforce Org. using
Metadata API
• Ability to develop organizations specific tools and scripts as pre and post
deployments
• Leverages best practices that are followed by other technology stacks (Java, .NET..
) in the organization
• Increased adherence to compliance requirements
– Disadvantages
• Need to identify the organization release and change management strategy early
in the project life cycle
• Team needs understanding of Version Control and Continuous Integration
principles
• Can be time-consuming and need expertise of internal processes and technologies
like Java, Ant and CI tools
Release & Change Management in
Salesforce By Kalyan Lanka
10. The Method! - The tools
• Salesforce IDE (Eclipse/Sublime
Text – MavensMate)
• Salesforce Metadata API
• Version Control (Git /SVN
/Perforce/TFS)
• Continuous Integration
(Jenkins/Hudson)
• Build Server (Windows/Linux/AIX)
• Requirement Management & Bug
Tracking Tool (Confluence/JIRA)
• Ant & Java
• Lots of Planning & patience..
Release & Change Management in
Salesforce By Kalyan Lanka
11. Best Practice for Salesforce
Implementation Projects
Release & Change Management in
Salesforce By Kalyan Lanka
12. REI Systems Experience
Problem
• Multiple Sub-Projects under bigger implementation
• Needed to keep Development Orgs. and testing orgs. Constantly in sync.
• Change Sets had Limitations on managing changes and deleting the
changes
• Test Classes were breaking just before going to higher environments
• Validation and Test environments were not maintained with latest changes
Solution
• Implemented Github and developers forked the Metadata in
Eclipse/Sublime Text
• All changes where checked into Git by using Eclipse Plugin
• Git is used for Code Reviews and Quality Control
• Jenkins is used to deliver the changes to higher environment
• JIRA is used for bug tracking and managing changes in higher
environments Release & Change Management in
Salesforce By Kalyan Lanka
14. Best Practice for Product Development
Release & Change Management in
Salesforce By Kalyan Lanka
15. Xceede Solutions Experience
Problem
• Offshore resources for development
• Ability to track progress and changes to the product
• Know the features complexity ability to fail fast
• Visibility into development and track features with code
• Test and fix the issues identified quickly
Solution
• Implemented Github for offshore developers to fork non managed
package in Eclipse/Sublime Text
• Used Aha.io for product management and feature roll-out
• Integrated Aha.io with Github for track code changes against features
• Github is used for Code Reviews and Quality Control
• Jenkins is used to deliver the changes to higher environment
• Github bug tracker to manage defects
Release & Change Management in
Salesforce By Kalyan Lanka
16. Product Development Eco - System
Release & Change Management in
Salesforce By Kalyan Lanka
Versioning
Control
Repository
Continuous
Integration & Build
Server
Developer
IDE
Local
Version
Repository
Developer
Org
Test Org
Production
Org
Trial Org
Developer
IDE
Local
Version
Repository
Developer
Org
17. Demo & Questions
Release & Change Management in
Salesforce By Kalyan Lanka
Kalyan Lanka
kalyan@snimbus.com
http://lnkdin.me/kalyan
@kalyanlanka