Have you felt intimidated by the thought of writing code? Are you an experienced Salesforce Administrator and would like to take the leap into writing your own Apex triggers? Join us to gain the tools and confidence to write your first trigger. Using specific examples and real-life scenarios, we'll walk through a concrete framework to approach the process of planning, designing, and coding a trigger.
You can create simple and some complex logic using workflows in Force.com, but sometimes you may need something more. Apex triggers provide the ability to solve complex logic and are an essential part of any Salesforce implementation.
Learn how to build and manage triggers and best practices on when to use them. Lastly, we’ll also take a look at some debugging techniques and tools that will make coding Apex triggers a breeze.
Apex Triggers can be your best friend or your worst enemy. When a trigger is firing properly your data is under control and remains sane, but when a trigger doesn't fire properly, your users can be faced with the frustration of exceptions when saving a record, or worse: incorrect data. Join us to learn tips and tricks on how to debug and solve the most complex issues, including: Ambiguous Field Validation, After Insert Activity Errors, and SOQL and Governor Limit Errors. You'll learn the origins of these kinds of advanced trigger issues and gain solutions for avoiding them.
Talk given by Michael Damkot, Principal Network Engineer at Salesforce, at Interop in May 2016
A variety of efforts are underway to bring more programmability and automation to network management. These efforts are important because traditional methods can’t match the speed or scale required by modern applications and services, both in the data center and the cloud.
One mechanism to drive the evolution to a truly programmatic network is declarative network configuration, in which the expected state of the network is maintained in a configuration repository. Software is then used to instantiate the desired state on network devices.
Such software helps engineers and administrators provision network services more quickly, build more reliable networks, and shift their time and resources away from tedious configuration tasks to tackle more interesting challenges.
This talk aims to help you re-think how the network is managed. I’ll offer tips from my experience with declarative network configuration and its effectiveness in the real world, and describe tools I’ve leveraged in the pursuit of a truly automated and framework, including Ansible and Puppet.
Continuous Integration In The Cloud Final (1)Alexis Williams
Continuous integration of cloud based applications using a combination of technologies: Visual Force, Apex, Selenium, Jenkins, Ant, & YUI test framework
Advanced Testing and Debugging using the Developer Console webinarSalesforce Developers
The Developer Console is your one-stop shop for developing on the Force.com platform. This application allows you to author and debug Apex code, create Visualforce pages, run tests on your programmatic artifacts, and to inspect your org data via query.
Join us as we dig deeper into the comprehensive debugging, profiling, and testing capabilities of the Developer Console.
Watch this webinar to:
Learn how to run tests using the Developer Console
See how to examine log results using the Developer Console
Understand how to analyze the performance of your org’s operations
Learn about checkpoints, the Force.com equivalent of breakpoints, for debugging
Explore the query editor functionality to get better access to your data
You can create simple and some complex logic using workflows in Force.com, but sometimes you may need something more. Apex triggers provide the ability to solve complex logic and are an essential part of any Salesforce implementation.
Learn how to build and manage triggers and best practices on when to use them. Lastly, we’ll also take a look at some debugging techniques and tools that will make coding Apex triggers a breeze.
Apex Triggers can be your best friend or your worst enemy. When a trigger is firing properly your data is under control and remains sane, but when a trigger doesn't fire properly, your users can be faced with the frustration of exceptions when saving a record, or worse: incorrect data. Join us to learn tips and tricks on how to debug and solve the most complex issues, including: Ambiguous Field Validation, After Insert Activity Errors, and SOQL and Governor Limit Errors. You'll learn the origins of these kinds of advanced trigger issues and gain solutions for avoiding them.
Talk given by Michael Damkot, Principal Network Engineer at Salesforce, at Interop in May 2016
A variety of efforts are underway to bring more programmability and automation to network management. These efforts are important because traditional methods can’t match the speed or scale required by modern applications and services, both in the data center and the cloud.
One mechanism to drive the evolution to a truly programmatic network is declarative network configuration, in which the expected state of the network is maintained in a configuration repository. Software is then used to instantiate the desired state on network devices.
Such software helps engineers and administrators provision network services more quickly, build more reliable networks, and shift their time and resources away from tedious configuration tasks to tackle more interesting challenges.
This talk aims to help you re-think how the network is managed. I’ll offer tips from my experience with declarative network configuration and its effectiveness in the real world, and describe tools I’ve leveraged in the pursuit of a truly automated and framework, including Ansible and Puppet.
Continuous Integration In The Cloud Final (1)Alexis Williams
Continuous integration of cloud based applications using a combination of technologies: Visual Force, Apex, Selenium, Jenkins, Ant, & YUI test framework
Advanced Testing and Debugging using the Developer Console webinarSalesforce Developers
The Developer Console is your one-stop shop for developing on the Force.com platform. This application allows you to author and debug Apex code, create Visualforce pages, run tests on your programmatic artifacts, and to inspect your org data via query.
Join us as we dig deeper into the comprehensive debugging, profiling, and testing capabilities of the Developer Console.
Watch this webinar to:
Learn how to run tests using the Developer Console
See how to examine log results using the Developer Console
Understand how to analyze the performance of your org’s operations
Learn about checkpoints, the Force.com equivalent of breakpoints, for debugging
Explore the query editor functionality to get better access to your data
Shorten Your Development Time with an Extensible Design for ApexSalesforce Developers
Throwing hundreds (or thousands) of lines in a trigger or class will quickly get out of hand. How do you reverse engineer it? How do you see what the trigger is doing? How do you scale and make enhancements without impacting existing code? Join us to learn about a customized coding pattern: EDA - Event, Distpatch, Action. EDA will address all of this and make your code scalable, as well as efficient and very maintainable.
Join us to learn how to leverage HTML5 FileReader API, combined with the JSForce JavaScript library and JavaScript Promises, to create a bulk data importer with a Visualforce front-end. We'll demo how to create multiple batches, and collect summary statistics of the batch results using Javascript Promises. You will come away understanding how to apply these libraries to your tooling challenges.
The ten commandments of Apex are the fundamental rules that good Force.com developers always use when developing. Join us to learn the common pitfalls that often cause difficulties for new developers to the platform so you can architect and develop top-notch Force.com applications.
Performance Testing Workshop at CzechTest2016 – SmartMeter.ioSmartMeter.io
Learn WHY and HOW to do performance testing and find out about its execution in our tutorial videos at:
https://www.youtube.com/playlist?list=PLHCXqL5wH4Q6CBMG6K8q4BKUGPsMRJbH9.
Full report: www.smartmeter.io/blog/performance-testing-workshop-czechtest
Simplify Salesforce Testing with AI-Driven Codeless ToolsSauce Labs
Testing Salesforce Apps presents numerous challenges for enterprise organizations. Teams have to navigate complex architecture, integration workflows, and continuous changes in the customized SFDC implementation, as well as a wide range of different applications hosted on Salesforce Cloud. If left unchecked, these challenges can hamper critical enterprise processes like the revenue-generating Quote to Cash process.
During this webinar, you will learn how to automate functional testing and thoroughly test both the UIs and the APIs in your Salesforce applications using AutonomIQ’s AI-driven codeless tool. We’ll discuss how Aryaka Networks, a global leader in WAN transformation solutions, uses AutonomIQ to autonomously test critical business processes like Quote to Cash in their customized Salesforce application, and we’ll show you how to streamline UI testing to improve test creation, execution, and maintenance, and easily add API testing to your strategy for better coverage.
Key Takeaways:
Simplify the creation of your test scripts using plain English statements and a codeless studio
Learn how to autonomously create UI and API tests for Salesforce and integrations with other applications
Ensure the health of your end-to-end SFDC applications for key business processes like quote to cash
E-TAIL QA: Approach to E-commerce testing in an Agile environmentNurun
Nurun’s Toronto office recently hosted a QA Professionals meetup. The presentation was followed by an interactive and lively discussion where attendees shared their experiences, processes and best practices on related QA topics.
Speakers discussed various approaches to E-commerce testing in an agile environment, covering topics like:
- E-commerce and the role of testing in an Agile environment
- Test case management, Defect Management and documentation
- Responsive design testing
- Accessibility testing
- Web services testing etc.
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...Agile Testing Alliance
The presentation on Unified APM: The new age performance monitoring for production systems was done during #ATAGTR2017, one of the largest global testing conference. All copyright belongs to the author.
Author and presenter : Kaushik Raghavan
Black Friday Is Approaching. Are You Prepared- InfographicTestingXperts
Summer seems to be ending very quickly and the big sale days are fast approaching. Are you sure your website can handle an unanticipated load? Sometimes, the application is not able to withstand the sudden influx of users and before you know it, either the website servers are down, or the payment gateway crashes. This negligence can end up having an adverse impact on the brand. In this infographic, we will discuss some tips to ensure a great application/website’s performance for Black Friday and Cyber Monday.
Slides from workshop conducted at ThoughtWorks, Pune in vodQA, on Sat, 27th August, 2016.
Workshop Facilitators - Anand Bagmar, Smriti Tuteja, Pallipuspa Samal, Rohit Singhal, S Ramalingam, Shilpa G
More information about vodQA, and this workshop can be found from the following links -
https://essenceoftesting.blogspot.com/2016/08/vodqa-pune-less-talk-only-action-agenda.html
https://essenceoftesting.blogspot.com/search/label/vodQA
https://essenceoftesting.blogspot.com/search/label/waat
An alternate approach towards building Test Automations for the Agile development environments. Traditional Test Automation approach isn't a great fit in fast pace dynamic ecosystem, hence there exists a dire need for an alternate approach.
This is very well suited to an e-commerce platform, and can be easily extended to similar environments.
London SF Developers: Custom Lightning Component Error HandlingRichard Clark
aka Essential Eight Lessons for Error Handling in Lightning Custom Component Development.
Covering some of the common pitfalls of handling errors when developing Lightning Components and my own modest recommendations for how you can avoid them, plus some best practices. As part of my role at Provar I get asked to investigate when our customer's tests are seen to be failing in order to diagnose whether the fault is in Salesforce or a missing feature of Provar. I've learned the astonishing ways in which people are publishing code for Lightning Components without basic error handling to a point I'd argue is irresponsible! This led me down a deeper and deeper rabbit hole which, like Alice, I'd like to share so you can all safely reach the Lightning Wonderland!
These slides where the background of my lighting talk about Definition of Done at Agilopolis Community Day #2. For more information about Agilopolis visit http://www.agilopolis.com
Shorten Your Development Time with an Extensible Design for ApexSalesforce Developers
Throwing hundreds (or thousands) of lines in a trigger or class will quickly get out of hand. How do you reverse engineer it? How do you see what the trigger is doing? How do you scale and make enhancements without impacting existing code? Join us to learn about a customized coding pattern: EDA - Event, Distpatch, Action. EDA will address all of this and make your code scalable, as well as efficient and very maintainable.
Join us to learn how to leverage HTML5 FileReader API, combined with the JSForce JavaScript library and JavaScript Promises, to create a bulk data importer with a Visualforce front-end. We'll demo how to create multiple batches, and collect summary statistics of the batch results using Javascript Promises. You will come away understanding how to apply these libraries to your tooling challenges.
The ten commandments of Apex are the fundamental rules that good Force.com developers always use when developing. Join us to learn the common pitfalls that often cause difficulties for new developers to the platform so you can architect and develop top-notch Force.com applications.
Performance Testing Workshop at CzechTest2016 – SmartMeter.ioSmartMeter.io
Learn WHY and HOW to do performance testing and find out about its execution in our tutorial videos at:
https://www.youtube.com/playlist?list=PLHCXqL5wH4Q6CBMG6K8q4BKUGPsMRJbH9.
Full report: www.smartmeter.io/blog/performance-testing-workshop-czechtest
Simplify Salesforce Testing with AI-Driven Codeless ToolsSauce Labs
Testing Salesforce Apps presents numerous challenges for enterprise organizations. Teams have to navigate complex architecture, integration workflows, and continuous changes in the customized SFDC implementation, as well as a wide range of different applications hosted on Salesforce Cloud. If left unchecked, these challenges can hamper critical enterprise processes like the revenue-generating Quote to Cash process.
During this webinar, you will learn how to automate functional testing and thoroughly test both the UIs and the APIs in your Salesforce applications using AutonomIQ’s AI-driven codeless tool. We’ll discuss how Aryaka Networks, a global leader in WAN transformation solutions, uses AutonomIQ to autonomously test critical business processes like Quote to Cash in their customized Salesforce application, and we’ll show you how to streamline UI testing to improve test creation, execution, and maintenance, and easily add API testing to your strategy for better coverage.
Key Takeaways:
Simplify the creation of your test scripts using plain English statements and a codeless studio
Learn how to autonomously create UI and API tests for Salesforce and integrations with other applications
Ensure the health of your end-to-end SFDC applications for key business processes like quote to cash
E-TAIL QA: Approach to E-commerce testing in an Agile environmentNurun
Nurun’s Toronto office recently hosted a QA Professionals meetup. The presentation was followed by an interactive and lively discussion where attendees shared their experiences, processes and best practices on related QA topics.
Speakers discussed various approaches to E-commerce testing in an agile environment, covering topics like:
- E-commerce and the role of testing in an Agile environment
- Test case management, Defect Management and documentation
- Responsive design testing
- Accessibility testing
- Web services testing etc.
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...Agile Testing Alliance
The presentation on Unified APM: The new age performance monitoring for production systems was done during #ATAGTR2017, one of the largest global testing conference. All copyright belongs to the author.
Author and presenter : Kaushik Raghavan
Black Friday Is Approaching. Are You Prepared- InfographicTestingXperts
Summer seems to be ending very quickly and the big sale days are fast approaching. Are you sure your website can handle an unanticipated load? Sometimes, the application is not able to withstand the sudden influx of users and before you know it, either the website servers are down, or the payment gateway crashes. This negligence can end up having an adverse impact on the brand. In this infographic, we will discuss some tips to ensure a great application/website’s performance for Black Friday and Cyber Monday.
Slides from workshop conducted at ThoughtWorks, Pune in vodQA, on Sat, 27th August, 2016.
Workshop Facilitators - Anand Bagmar, Smriti Tuteja, Pallipuspa Samal, Rohit Singhal, S Ramalingam, Shilpa G
More information about vodQA, and this workshop can be found from the following links -
https://essenceoftesting.blogspot.com/2016/08/vodqa-pune-less-talk-only-action-agenda.html
https://essenceoftesting.blogspot.com/search/label/vodQA
https://essenceoftesting.blogspot.com/search/label/waat
An alternate approach towards building Test Automations for the Agile development environments. Traditional Test Automation approach isn't a great fit in fast pace dynamic ecosystem, hence there exists a dire need for an alternate approach.
This is very well suited to an e-commerce platform, and can be easily extended to similar environments.
London SF Developers: Custom Lightning Component Error HandlingRichard Clark
aka Essential Eight Lessons for Error Handling in Lightning Custom Component Development.
Covering some of the common pitfalls of handling errors when developing Lightning Components and my own modest recommendations for how you can avoid them, plus some best practices. As part of my role at Provar I get asked to investigate when our customer's tests are seen to be failing in order to diagnose whether the fault is in Salesforce or a missing feature of Provar. I've learned the astonishing ways in which people are publishing code for Lightning Components without basic error handling to a point I'd argue is irresponsible! This led me down a deeper and deeper rabbit hole which, like Alice, I'd like to share so you can all safely reach the Lightning Wonderland!
These slides where the background of my lighting talk about Definition of Done at Agilopolis Community Day #2. For more information about Agilopolis visit http://www.agilopolis.com
Hands-On Workshop: Introduction to Development on Force.com for DevelopersSalesforce Developers
Are you an experienced developer who is new to the Salesforce1 Platform? Join us as we introduce you to the fundamentals of Salesforce application development to fast ramp your productivity and shorten your learning curve. You'll learn how to use the key building blocks of the platform: Visualforce Pages to create rich user interfaces, SOQL to access data, and Apex to create classes and database triggers. In this hands-on workshop, you'll use all of these tools to build a complete conference management application that manages sessions, speakers, and speaker assignments. By the end of this workshop, you’ll be ready to start developing your own application productively. Note: This Elevate at Dreamforce Hands-on Workshop is a classroom style hands-on workshop in the DevZone breakout rooms. Please bring your own laptop for the hands-on exercises.
Description
In this webinar we will introduce you to Apex, and then walk you through the process of writing and deploying a basic trigger in your development environment.
This series serves as an Introduction to Apex for Salesforce Administrators with no programming background. This is the first in a 3-part series with David Liu and LeeAnne Templeman. David Liu is the creator of sfdc99.com, an intro to Apex exercise guide for all Salesforce Admins. David is a self-taught Salesforce MVP who began his path as a marketer and is now the Salesforce Technical Architect for Google. He will share some of his own learning path, as well as tips and tricks on how to become a Salesforce developer.
Key Takeaways
See how quickly you can pick up the Force.com programming language and build triggers on your own!
Learn what a test class is, and how to write, modify and deploy a basic trigger
Understand when to use Apex and when to use core Salesforce tools like workflows and approvals
Expand the automation capabilities in your Salesforce environment to increase adoption and data quality
Understand core terms and development processes
Series
Targeted Audience: Salesforce Admins with experience developing point-and-click applications on the Force.com platform.
Related Resources
Apex Overview Page
Apex Developer Guide
Apex Workbook
sfdc99.com Chapter 1: Write Your First Trigger from Start to Finish!
Head First Java
If you are familiar with object-oriented languages like Java or C#, Apex may be the language you already almost know. Apex is the cloud-based programming language used on the Salesforce1 Platform to take your enterprise applications to the next level. In this webinar, get an introduction to how Apex is similar to other languages, how you can start coding in Apex with just a web browser, and an overview of the many functions Apex can perform for your applications and users.
Key Takeaways
Programmers familiar with object-oriented languages will be able to learn Apex easily
Apex can perform a wide range of functions from serving as a controller for Visualforce pages to scheduled tasks in the background.
Have you ever wanted to write a trigger? This workshop is designed for people who would like begin learning the basics of implementing business logic using Apex, the primary programming language of the Salesforce platform. This workshop will begin exploring the building blocks of Apex, and provide you with the best practices for implementing complex business logic.
STAMP, or Test Amplification to DevTestOps service, OW2con'18, June 7-8, 2018...OW2
There is increasing talk of DevTestOps to emphasise that the DevOps promise to release software quickly should not be at the expense of its quality and ultimately of its value. STAMP (Software Testing AMPlification) project can provide you with several powerful test amplification features to be exploited at three different stages in a DevOps process:
• automatic generation and execution of variants of existing test cases;
• automatic generation of variants of existing test configurations;
• automatic generation of test cases from available production logs in order to reproduce and fix any anomaly which may occur.
This talk shows you how to use this technology within your production processes in order to increase your software quality.
Triggers for Admins: A Five-step Framework for Creating TriggersSalesforce Developers
Have you felt intimidated by the thought of writing code? Are you an experienced Salesforce Administrator and would like to take the leap into writing your own Apex triggers? Join us to gain the tools and confidence to write your first trigger. Using specific examples and real-life scenarios, we'll walk through a concrete framework to approach the process of planning, designing, and coding a trigger.
Join this session to see the benefits of Test-Driven Development (TDD), and understand how it works and its benefits. In a more detailed approach, we will see this way of developing software, where our code is always built guided by tests. We will go over some history about TDD and list the main advantages and disadvantages that most developers who practice it find and whether the arguments in favour add up to more than those that subtract. Finally, we will review some good habits and practices when applying TDD by seeing how to do it step by step with an example of a "live" coding session with Java. At the end of the session, you will have a wider understanding of TDD and why it's interesting to master it. Also, you will take with you some tricks and good practices to be able to apply them in your day-to-day life when writing code.
---
Presentation shared at Bucharest Tech Week '23
Full course available at: http://masterofproject.com/courses/agile-project-management-scrum-framework-certification-prep
Course Description
The Agile & Scrum Certification Training course imparts knowledge on the Agile and Scrum values, helps you build the requisite skills and gain expertise in the domain. The course provides immense clarity on vital concepts of scrum and agile to help you clear the certification exam in your first attempt. The course aims to make you an expert in the Scrum ways, enhancing your capability to deliver shippable products by the end of each Sprint. With the practical application of the agile methodologies you would be able to maximize business value, while mitigating potential risks.
Features
50+ Lectures
10+ Hours
Lifetime Access
100% Online & Self Paced
30 day money back guarantee!
Course Completion Certificate
What am I going to get from this course?
Learn the Agile Methodologies and Agile Project Management
Learn Scrum Framework
Learn practical implications of Scrum over a sample project
Get ready for Scrum Certification exams (PMI-ACP, CSM, PSM, CSPO, PSPO, CSD, PSD)
Learn Scrum Team
Learn Scrum Events
Learn Scrum Artifacs
Learn Extreme Programming (XP) Agile Methodology briefly.
Learn Lean Agile Methodology briefly.
Learn Kanban Agile Methodology briefly.
Learn the differences of Agile & Scrum Certifications provided by different organizations
Qualify for the 21 Contact Hours Agile Training requirement of PMI for the PMI-ACP certification.
Earn 15 SEUs under Category E: Independent Learning of Scrum Alliance
Earn 14 PDUs if you are a PMP already.
What is the target audience?
The Agile & Scrum certification is best suited for:
Team Leaders
Project Managers
Members of Scrum teams such as developers, Scrum Masters, and Product Owners
Managers of Scrum teams
Teams transitioning to Scrum
Professionals intending to pursue the Scrum Master certification
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)ssusercaf6c1
Have you heard of TDD? Are you interested or familiar with this practice but have never been able to understand it?
Join this session to see the benefits of Test-Driven Development (TDD), understand how it works and its benefits. In a more detailed approach, we will see this way of developing software, where our code is always built guided by tests.
We will go over some history about TDD, which is the main process we must follow when we work with this mechanic and the rules that surround it. We will also list the main advantages and disadvantages that most developers who practice TDD find and whether the arguments in favour add up to more than those that subtract. Finally, we will review some good habits and practices when applying TDD and see how to do it step by step with an example of a "live" coding session with Java.
At the end of the session, I hope that you will have a wider understanding of what TDD is, what advantages it brings, why it is interesting to master it and also that you will take with you some tricks and good practices to be able to apply them in your day-to-day life when writing code
---
Presentation shared at Trójmiasto Java User Group
Public group 17th of May '23
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)Nacho Cougil
Have you heard of TDD? Are you interested or familiar with this practice but have never been able to understand it?
Join this session to see the benefits of Test-Driven Development (TDD), understand how it works and its benefits. In a more detailed approach, we will see this way of developing software, where our code is always built guided by tests.
We will go over some history about TDD, which is the main process we must follow when we work with this mechanic and the rules that surround it. We will also list the main advantages and disadvantages that most developers who practice TDD find and whether the arguments in favour add up to more than those that subtract. Finally, we will review some good habits and practices when applying TDD and see how to do it step by step with an example of a "live" coding session with Java.
At the end of the session, I hope that you will have a wider understanding of what TDD is, what advantages it brings, why it is interesting to master it and also that you will take with you some tricks and good practices to be able to apply them in your day-to-day life when writing code
---
Presentation shared at Trójmiasto Java User Group (17th May '23)
How to establish ways of working that allows shifting-left of the automation ...Max Barrass
Why Automate?
Your application will grow, you will not have enough hands
You are blocked by development
Hidden factory costs of bug-fix cycle
Why Shift-Left?
More people to negate massive inspections
Define measurable success early, work on good parts.
Reduce occurrence of defects
What is this got to do with Ways of working?
Unlock capacity
Make people smile
Is not
a Department
extra cost
a final oversight or a massive inspection
someone else’s job
Is
Everyone’s responsibility
Build into the ways of working
Everyone’s job
Continuous Deployment and Testing Workshop from Better Software WestCory Foy
In this workshop from the 2015 SQE Better Software West conference, Cory Foy details the Continuous Paradigm companies are embracing - including Continuous Integration, Continuous Deployment, and Continuous Testing. This presentation was co-created by Jared Richardson.
Mastering Test Automation: How to Use Selenium Successfully Applitools
** WATCH FULL WEBINAR RECORDING HERE: https://youtu.be/06H-6hjyyvI **
What is Selenium? Why should you use it? And how do you use it successfully?
In this webinar, Automation expert Dave Haeffner answers these questions as he steps through the why, how, and what of Selenium.
Dave also discusses how to start from nothing and build out a well factored, maintainable, resilient, fast and scalable set of tests. These tests will not only work well, but across all of the browsers you care about, while exercising relevant functionality that matters to your business.
Watch this webinar and learn how to:
* Decompose an existing web application to identify what to test
* Pick the best language for you and your team
* Write maintainable and reusable Selenium tests that will be cross-browser compatible and performant
* Dramatically improve your test coverage with automated visual testing
* Build an integrated feedback loop to automate test runs and find issues fast
This is about encouraging our audience about known good practices. let them introduced why continuous feature development is essential and why that adds value over following rigid processes.
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSalesforce Developers
Exploring the code within sample applications is a great way to learn new languages, frameworks, and platforms. That’s why we built the Sample Gallery (https://trailhead.salesforce.com/sample-gallery), a collection of Salesforce Customer 360 Platform reference applications that demonstrate examples of what you can create and how to build it. In this interactive webinar, we introduce you to a few Sample Apps and show you how to make the best use of them in your day-to-day development projects.
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceSalesforce Developers
We all want the Salesforce Lightning Experience to be fast- but how do we define fast, and how do we make it even faster? When you’re building a UI, everything you add to the page affects performance, and to make load times faster and perform the way users expect, we need to treat speed as an essential design feature. In this presentation, you’ll learn how to measure performance, learn a few tips on how to maximize performance, and take responsibility for your feature’s performance from design to production.
Last year was eventful for Salesforce Developers - we started with the launch of Lightning Web Components (LWC), open-sourced it, enabled local development, and ended the year by open-sourcing Base Lightning Components. In this webinar, we will explore exciting new developments within Base Components and we will show you how to use open-source Base Components to build engaging applications faster with local development.
In this session we will,
- Spin up a local development environment to build Lightning web components
- Use and customize the base components and recipes to build pages and apps quickly
- Explore the latest features of VS Code developer tooling while coding for a use case
Over the past two months, we’ve announced many new resources for developers at Dreamforce and TrailheaDX India. To learn all about them, watch this video, where we'll explore live demos showcasing the latest updates for Lightning Web Components (LWC), Einstein, Heroku, and a lot more on the Customer 360 Platform.
In this session we,
- Explore key highlights from TrailheaDX India
- Show live demos of generally available features
- Explain how you can benefit from these features
TrailheaDX (TDX) is coming to ‘namma’ Bengaluru in India on Dec 19th and 20th! TrailheaDX India is the conference for everyone who builds on and customises Salesforce — including admins, developers, architects, and partners. This event will have sessions, demos and fun for those just getting started with the platform, as well as for advanced admins, architects and developers.
You might have questions about the event - and to answer your questions Kavindra Patel, known as the father of the Indian Salesforce Community, joins Shashank Srivatsavaya, Head of APAC Developer Relations. Register for our exclusive webinar to:
- Get a sneak peek into exclusive sessions and activities
- Find out who you shouldn’t miss at TrailheaDX India
- Understand what comes with your #TDX19 registration
CodeLive: Build Lightning Web Components faster with Local DevelopmentSalesforce Developers
GitHub repo: https://github.com/satyasekharcvb/lwc-local-dev.git
With the release of a new beta version of Local Development, you can now build Lightning web components faster than ever before! You can now render changes, iterate rapidly, troubleshoot errors, and even connect with data from your org by spinning up a local development server on your machine.
In this session, we build Lightning web components in real time. The exciting new capabilities we showcase will enable you to be an even more productive developer.
In this CodeLive session we:
- Spin up a local development server from the CLI to rapidly edit and view components
- Observe how a rich error handling experience simplifies testing and debugging
- Learn how to proxy data from an org for more context and fine-tuned development
CodeLive: Converting Aura Components to Lightning Web ComponentsSalesforce Developers
GitHub repo: https://github.com/adityanaag3/aura2lwc
Lightning Web Components (LWC) give any JavaScript developer a modern, web standards-based path to building apps and experiences on the Salesforce Platform.
In this live coding session, you’ll learn how to first evaluate if an existing Aura Component needs to be converted, then convert it to LWC using the latest features of Salesforce Extensions for VS Code. We demonstrate conversion to LWC by walking through various components of a real world Aura Component - including input and output, Tables, Forms, and more.
In this live coding session we:
- Convert Aura Components to LWC
- Leverage the latest IDE features
- Share implementation best practices
Earlier this year, we released Lightning Web Components (LWC), a new UI framework based on web standards and optimized for performance and developer productivity. We have now open sourced the Lightning Web Components framework so that anyone can build applications on any platform.
Join our webinar where we'll explore how this framework, based on standard HTML, modern JavaScript (ES6+), and the best of native Web Components, helps you create web components and apps using the stack and tools you prefer.
We recently announced over 300 new features and enhancements at TrailheaDX '19 and for the Summer '19 release. In our Developer Highlights webinar we explore the top features with in-depth demos, including the latest updates for Lightning Web Components (LWC), LWC Open Source, CLI updates, Change Data Capture for external objects, Asynchronous Apex Triggers, Notification Builder and more.
Watch the recording here: https://youtu.be/kmOkk74QiCo
You can watch a recording of the live coding session at https://sforce.co/2IbU3yJ
In the fifth and final webinar of our five part series, we learn how to build Lightning web components for different use cases. We explore how to leverage all of the concepts you’ve learned in this webinar series to create modern apps with Lightning Web Components. We also demonstrate various ways to migrate Aura components to Lightning web components for a seamless transition.
In the fourth episode of our five part series on Lightning Web Components, we show you how static resources and custom JavaScript are used with Lightning Web Components. You’ll learn how to use external APIs in conjunction with Lightning Locker to secure your JavaScript code. And finally, we’ll demonstrate how you can test your Lightning Web Components using Jest.
LWC Episode 3- Component Communication and Aura InteroperabilitySalesforce Developers
Lightning Web Components gives JavaScript developers a web standards-based path to building apps on the Salesforce Lightning Platform.
In the third episode of our five part series on Lightning Web Components, we cover design considerations and compositions of Lightning Web Components.
Lightning Web Components give any JavaScript developer a modern, web standards-based path to building apps and experiences on the Lightning Platform.
In the second episode of our five part webinar series on Lightning Web Components, we will show you how to access data from the Salesforce org, get record data, create records and handle errors using Lightning Web Components. In this webinar you’ll learn all about Lightning Data Service, reactive wire service and Lightning App Builder.
Lightning Web Components are a JavaScript programming model for building web applications and interfaces that is built on the best of web standards.
Any front-end web developer can get started with LWC and leverage custom elements, and JavaScript APIs to create modern apps and experiences that are fully aware of Salesforce data and processes.
Migrate legacy Salesforce CPQ to Advanced Calculator with the help of JSQCP. With Advanced Calculator, you can boost the runtime of quote creation. Join this webinar to learn what is required for migration - we’ll also walk through JSQCP.
Replicate Salesforce Data in Real Time with Change Data CaptureSalesforce Developers
Migrate your batch processing, scheduled ETL, and nightly workloads to event-driven, real-time integrations using Change Data Capture. CDC means data change events are published to an event stream, allowing businesses to have up-to-date information across systems and applications. Join us to learn how to configure Change Data Capture and subscribe to the stream of change events, streamlining your architectures and processes.
Using Salesforce DX and its suite of offerings can significantly increase your development productivity.
Join this webinar to learn more about source control, scratch orgs, CLI, Metadata Coverage, VS Code, and Unlocked Packages. We will even do a live demo on continuous delivery using Salesforce DX.
Lightning Flow makes it easier for developers to build dynamic process-driven apps with Process Builder and the new Flow Builder. Join us and learn more about how you can get in the Flow!
Integrate CMS Content Into Lightning Communities with CMS ConnectSalesforce Developers
In this webinar we will show you how to display content from external Content Management Systems into Lightning Communities. This lets you take advantage of the Communities framework and help you centralize content in whatever CMS system you have chosen.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
4. Setting
“We want our own custom campaign
member statuses, but it’s a pain to
have to add them every time we
create a campaign.” – Celeste, yoga
studio owner
5. Audience Participation
We have some suggestions:
● Breathe! You can do it.
● Replace trepidation with curiosity.
● Know this won’t happen overnight.
● Remember, you are not alone.
6. Triggers for Admins
Act 1: Where do I write code?
Act 2: Gather Your Resources
Act 3: Clarify Your Requirements
Act 4: Code and Test
Act 5: Finalize and Launch!
7. Act 1: Where do I write code?
Developer Org: https://developer.salesforce.com/gettingstarted
9. Act 1: Where do I write code?
Go to Setup.
Find the object where you want the trigger.
Click on Triggers.
10. Act 1: Where do I write code?
Click the New button, and voila!
11. Act 1: Where do I write code?
Some other tools for writing code:
• Salesforce Developer Console
• Eclipse
[there are many more!]
12. Act 2: Gather your resources
● www.sfdc99.com
● Creator David Liu presents: “Anyone
can learn to code Apex!” On
Wednesday at 11 am
13. Act 2: Gather your resources
● Power of Us HUB (nonprofits)
http://www.salesforcefoundation.org/help/power-of-us-hub/
● Success Community: (Salesforce online community)
● Local User Groups (in person meetings)
● Developer User Groups (in person meetings)
● Network at Dreamforce!
14. Act 3: Clarify Requirements
● What problem are you trying to solve?
o Inconsistent campaign member statuses
● What needs to happen?
o Auto creation of desired member statuses
● When does it need to happen?
o When a new campaign is created
● Should it always happen for all records?
o Only for workshop type campaigns
15. Act 3: Clarify Requirements
Write it “In English” (aka pseudo code):
When a campaign is inserted
● Check if it’s a workshop campaign
● If it is a workshop campaign …
o Get rid of the default Campaign Statuses
o Add the following campaign statuses:
Invited (default)
Accepted (responded)
Attended (responded)
No Show
16. Act 4: Code and Test
● Recap
o Set up your coding environment
o Go through some tutorials
o Clarify what you’re trying to do
● Get ready, set, go!
● Search for code, copy and paste.
19. Act 4: Code and Test
Design Pattern 1: Use Trigger.New
Trigger.new contains all records that are being inserted or updated
Loop through the trigger.new collection
Do something with each record
Code Sample:
For (Campaign c : trigger.new){ // This is the beginning of the loop
//do something with each record
} //this is the end of the loop
33. Act 4: Code and Test
Design Pattern 3: Inserts, Updates, Deletes Outside of Loops
For (Campaign c : workshopCampaigns) { //start of the loop
CampaignMemberStatus myCMS = …..
myStuff.add(myCMS);
} // end of the loop
Insert myStuff ; Insert is happening AFTER the loop
34. Act 4: Code and Test
● Common design elements
o Loop through trigger.new (or trigger.old)
o Use collections to hold records to process
o Do inserts, updates, and deletes outside of your loops
● Other helpful Tips
o Comment your code!
o Use system.debug for troubleshooting
35. Act 5: Finalize and Launch
• Ask users to test with real-life scenarios
• Revise code, have users re-test
• Write test methods
– Sfdc99.com has examples and tutorial
– Force.com Apex Developer Guide
http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm
• Deploy!
– Use Salesforce change sets and deployment connections in Setup area
37. Begin Your Coding Journey Today!
● Set up your FREE developer account
● Find a mentor – introduce yourself to at least three people and tell them
you’re looking for help with coding.
● Visit sfdc99.com.
● Celebrate the beginning of your journey!
38. Resources
Beginner Tutorial - http://www.sfdc99.com/beginner-tutorials/
Salesforce Developer Forum - https://developer.salesforce.com/forums/
Trigger Best Practices - http://www.iterativelogic.com/salesforce-apex-trigger-best-practices/
Trigger Order of Execution -
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_order_of_execu
tion.htm
Writing Bulk Triggers - http://blog.jeffdouglas.com/2009/04/20/writing-bulk-triggers-for-salesforce/
Force.com Apex Developer Guide -
http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm
Editor's Notes
VERONICA: The setting for our play is a yoga studio that offers workshops. They track their workshops with Salesforce campaigns, and they track the people they invite by using campaign members. They’re finding that the standard Campaign member Statuses of Invited and Sent aren’t what they need. They want their own custom campaign member statuses, but it’s a pain to have to add them every time. Veronica has been asked by the studio manager to find a solution to this problem.
VERONICA: To get the most out of this production, we have some suggestions for you:
First is: Breathe! You can do it. Everyone has to start somewhere, and
Next: See if you can start to replace any feelings of trepidation with a sense of curiosity and exploration. If you tend to think "What if I get it wrong???" Don't worry, you will! But that's ok. You won't break Salesforce. And you'll learn a lot along the way. If you can focus on the learning, and the adventure of it, it will be a lot more enjoyable.
Also: Know this won't happen overnight .... it takes time, and practice. And that's ok. Little by little you’ll get there.
Finally: Remember, you're not alone! There are wonderful people in the Salesforce community who are generous with their time and help. and plenty of resources to help you out along the way.
VERONICA: Our play is in 5 acts:
Act 1: Set up your environment, or Where do I write code? [TRANSITION]
Act 2: Gather Your Resources (Get help!)
Act 3: Clarify Your Requirements: What am I doing again?
Act 4: Code and Test!
Act 5:Finalize and launch!
Let’s, start by taking 3 deep breaths to get transported to the yoga studio:
ASHIMA: The scene: Ashima and Veronica met at DreamForce last year. Veronica knows that she is going to need some help, so she set up a meeting to talk about her needs. They are meeting via Google Hangout.
VERONICA: Ashima, I have a Salesforce thing I’m trying to do. I want to have some different campaign member statuses added every time we create a new campaign. I thought maybe I could do it with a workflow rule, but it looks like that won’t work. So I think I’m going to need to write a trigger. I have no idea how to get started. I don’t even know where in Salesforce I would write code, let alone what to write. Can you help me?
ASHIMA: Absolutely Veronica, first, let’s discuss some environments you might want to set up for yourself to get started. There are two options. First, you can create a Developer Org. (FREE! You can have as many as you want!) Enterprise Edition, 2 users. Terms of use are you're not supposed to run your business off of this -- it's a place where you can practice and learn. This is great if you’re in the “I want to expand my skills” camp, and don’t have an immediate need to add code to your organization. A great place to build and learn, no one else will be in it, you can do want you want, and experiment.) Even if you do have an immediate business need, this is still a great place to learn, without fear of destroying anything. :-)
Considered a Production org when logging in. (login.salesforce.com, not test.salesforce.com)
ASHIMA: Second, you can create a sandbox which is a copy of your production database, minus the data, unless you purchase a sandbox with data. All the custom configuration is there -- custom objects, workflow and validation rules, custom fields, picklist values, custom profiles, etc. The advantage is that you’re working in the environment you eventually want to deploy to, so if you need to work with any custom fields or objects, or want to see how workflow rules interact with the code you’re writing, it’s already set up. You must deploy from a sandbox, so you can get started in a development organization, but then, you must move your code to a sandbox and deploy to production from there.
Some of the nonprofit developers knows that you can get a few free sandboxes with your edition. If you are not a nonprofit, that is not available free.
Disadvantages:
Cost. [info about cost here]
Less storage space.
VERONICA: What does deploy mean?
ASHIMA : It means moving your code from the testing environment to a live, production environment, but we have a few more steps before you can do that, we’ll get to deployment.
VERONICA: {Deep breath}, okay.
ASHIMA: So, now, once you have your environment set up, you will want to begin to play around. I suggest you do this in your sandbox, since you’re a nonprofit and have a few free sandboxes to play with. Now to begin writing your code, start by navigating to the Trigger area of the object you want to write your Trigger on.
VERONICA:The campaign member?
ASHIMA: Well, that might seem like where you’d want to write the trigger, but think about it for a second -- what do you want to happen?
VERONICA: I want to add new campaign member statuses.
ASHIMA: And when do you want to create them?
VERONICA: When we add a new campaign.
ASHIMA: Ok, so where would you want to create the trigger?
VERONICA: [pause] Oh … the campaign, right? Because it’s like a workflow rule - I want the trigger code to run when a Campaign is created.
ASHIMA: Right!
VERONICA: Ok, that makes sense.
ASHIMA: Alright, now to write your code, you click on the Trigger and click the New button. The code area opened up and I can begin writing.
VERONICA: Ok, at least I know where to start.
ASHIMA: Yes. And just so you know, doing your coding right here in Salesforce is a quick and easy way to get started, but once you get more familiar with how everything works, you might also want to check out some of the other tools people use to write code. For example, the Salesforce Developer Console, Eclipse, or Workbench. Those tools offer some great functionality, but there’s also a learning curve with them. So for now, let’s stick to doing our coding here within Salesforce.
VERONICA: Okay, but I’m nervous about this - it seems like there’s a lot to learn!
ASHIMA: It’s okay to be nervous Veronica. But, I’ll help and there are a lot of resources available. Let’s look at some together.
VERONICA: Ok, sounds good!
ASHIMA: The most excellent tool available is this sfdc99, which is coding lessons for the 99% (meaning for everyone who is not a programmer). This great site was written by a self-taught Google engineer, who started out as a Salesforce Admin. {Look at audience: He is also hosting a session : Wednesday 11AM – Anyone can learn to code Apex!} This blog contains a beginners tutorial that will take you step by step through the process of writing code, all the syntax you need, … plus he’s funny. Also just added a Newbies Forum, where you can ask any coding question you have. An amazing resource.
VERONICA: Wow, I need to spend some time on that web site!
ASHIMA: Yes, but that’s not all. There is also a great resource that is just for nonprofits called the Power of Us Hub. Join that and look for the nonprofit developer chatter group.
VERONICA: I’m in there, but didn’t realize there was a developer group for nonprofits, great!
ASHIMA: Yup, and I also recommend the Success community, user groups, developer user groups and to network here, at DreamForce. There are lots of folks willing to help. Along with me.
VERONICA: I’m really glad to know about all these resources.
ASHIMA : Now, Veronica, go ask the yoga studio manager what the specific needs are for the campaigns. The more you can get clear in your own mind about what it is you’re trying to do, the better prepared you’ll be not only to write the code, but also ask relevant questions and get help.
VERONICA: I’ll do that! Thanks for your help. Namaste
ASHIMA: Namaste
ASHIMA: Setting: the yoga studio. I’m Celeste, the studio manager.
ASHIMA: Namaste, Veronica how are you today?
VERONICA: Namaste Celeste, I’m well. I wanted to ask you about the issue you mentioned with tracking our workshops in Salesforce. Can you explain to me again what’s going on? [click: What problem are you trying to solve?]
ASHIMA: Yes, of course. So, you know we’re trying to track who’s coming to our trainings. I want to be able to see who’s signing up, but not showing up. It seems to be a problem lately. I think we need to start charging people ahead of time. But I’m having a hard time tracking it. Zola and Etta are entering the data, but they keep forgetting to add the right statuses, so we can’t mark someone as a No Show. [transition: inconsistent campaign member statuses]
VERONICA: I made a template campaign for them that I showed them how to clone … isn’t that working?
ASHIMA: They said they can never find it, or they forget to use it. It’s kind of driving me crazy.
VERONICA: Hmm, ok. So, you want a way for those statuses to be there without anyone having to manually go in and create them?
ASHIMA: Yes, that would be great!
VERONICA: And we’re talking about the campaign member statuses, right?
ASHIMA: I don’t know what you call it, I just need a way to track who shows up and who doesn’t.
VERONICA: Ok.
ASHIMA: Oh, and I want to know who we’re inviting in the first place, and who lets us know they’re coming. And who actually came. Along with who said they were coming but didn’t.
VERONICA: Ok. So, it sounds like it would work to maybe have these statuses you could see: Invited, Accepted, Attended, and No Show?
ASHIMA: Yes!
VERONICA: Great, I think I have it.
ASHIMA: So, do you think you can have it done this week? You can just set Salesforce up to do that, right? How hard can it be???
VERONICA: Well …it’s going to involve actual coding, so I’m going to have to take some time to learn how to do it. But the good news is, it’s a great thing for me to learn, and it will really help us out in the long run.
ASHIMA: [Sigh]. Ok, do what you have to do.
VERONICA: Ok. Oh wait, one more question … this is only for trainings and workshops, right? Not for our mailings, right?
ASHIMA: Just the workshops.
VERONICA: Ok, got it.
ASHIMA: Veronica and Ashima meet on Google Hangout
VERONICA: Ok Ashima, I talked to my studio manager and I think I know what needs to happen now. What’s next? How do I figure out how to write the trigger?
ASHIMA: Before I write the actual code, I usually write “pseudo code” , which is writing out at a high level, in English, what the code needs to do. It helps me clarify my thoughts on how to structure the code.
VERONICA: Can you show me what you mean?
ASHIMA: Sure. Here’s what some pseudo code might look like for your trigger.
[transition: show pseudo code]
VERONICA: Ok, so now I know:
Where to write the code -- in my sandbox, or in a developer org.
I’ve gone through some of the great sfdc99 tutorials, and I know other resources I can use to help me
I have an idea of what I want my code to do … I’ve written it out in English, and I’ve thought about what should happen when.
I guess it’s time to start coding! I’m going to start by doing a search to see if there’s some sample code out there that someone already wrote. Maybe I can copy and paste it.
ASHIMA: That sounds like a great start Veronica. Get in touch with me when you have more questions and we can reconnection.
VERONICA: Sounds good. Namaste Ashima.
ASHIMA: Namaste Veronica.
VERONICA: Setting: A few days later, another video chat with Ashima.
Ok Ashima, I did a Google search and found a post from someone who needed to do pretty much what I’m trying to do! I don’t totally understand the code … but I went ahead and copied and pasted it, and saved it into my trigger. Can you explain what some of these things mean? For example, what is trigger.new?
ASHIMA: Sure! Trigger.new is a collection that holds all of the new Campaign records that were just inserted.
VERONICA: All of the campaign records? I don’t get it … aren’t I just creating one new Campaign record when I create a Campaign?
ASHIMA: Yes, but what if you upload a bunch of new Campaigns with the Data Loader?
VERONICA: Ohhh, I hadn’t thought of that.
ASHIMA: Pretty much every trigger will follow some version of this pattern: using the trigger.new (or trigger.old) collection, looping through the collection, and doing something with the records in the collection. In this code, you’re looping through the collection of campaigns that were created, and adding new campaign member statuses to each one.
VERONICA: You said there’s a trigger.old collection too?
ASHIMA: Yes, that one is used in updates or deletes. It holds the old versions of the records that were updated or deleted. Trigger.new holds the new versions.
VERONICA: Ok, I know I’m not going to understand all of this all at once … but I really want to test it and see if it works. How can I do that?
ASHIMA: Now that you’ve saved the trigger, you can go ahead and just create a new Campaign in Salesforce, and then check the Campaign Member Statuses!
VERONICA: Cool! I’m going to try that right now.
VERONICA: Setting: A few days later, another video chat with Ashima.
Ok Ashima, I did a Google search and found a post from someone who needed to do pretty much what I’m trying to do! I don’t totally understand the code … but I went ahead and copied and pasted it, and saved it into my trigger. Can you explain what some of these things mean? For example, what is trigger.new?
ASHIMA: Sure! Trigger.new is a collection that holds all of the new Campaign records that were just inserted.
VERONICA: All of the campaign records? I don’t get it … aren’t I just creating one new Campaign record when I create a Campaign?
ASHIMA: Yes, but what if you upload a bunch of new Campaigns with the Data Loader?
VERONICA: Ohhh, I hadn’t thought of that.
ASHIMA: Pretty much every trigger will follow some version of this pattern: using the trigger.new (or trigger.old) collection, looping through the collection, and doing something with the records in the collection. In this code, you’re looping through the collection of campaigns that were created, and adding new campaign member statuses to each one.
VERONICA: You said there’s a trigger.old collection too?
ASHIMA: Yes, that one is used in updates or deletes. It holds the old versions of the records that were updated or deleted. Trigger.new holds the new versions.
VERONICA: Ok, I know I’m not going to understand all of this all at once … but I really want to test it and see if it works. How can I do that?
ASHIMA: Now that you’ve saved the trigger, you can go ahead and just create a new Campaign in Salesforce, and then check the Campaign Member Statuses!
VERONICA: Cool! I’m going to try that right now.
VERONICA: Hey, it worked! Kind of. It looks like it added some new statuses. But I noticed a couple of things -- they’re not exactly the statuses I wanted. And those default statuses of Sent and Responded are still there.
ASHIMA: Let’s tackle those issues one at a time. Let’s go back to the code, and tell me if you can find where you might change what those new statuses say.
VERONICA: Ok.
VERONICA: Hey, I see it right here -- these are the statuses that were added! Can I just change them to be what I want?
ASHIMA: Give it a try and see!
VERONICA: This is kind of fun! Oh, but they only added three statuses, and I want four. I’m guessing I can just copy and paste the code?
ASHIMA: Now you’re getting the hang of it!
VERONICA: Oh, and there’s an explanation right within the code of looping through the trigger.new collection here, and which statuses they’re going to add -- that’s helpful!
ASHIMA: Yes, those are comments! You definitely want to get in the habit of using comments within the code to explain what’s going on.
It will help anyone else who happens to look at your code … and it will help YOU, when you go back to look at code you wrote a while ago and can’t remember why you wrote it! Take the time to do it -- believe me, you’ll thank yourself later! Just use two forward slashes before any comments you want to make - that will tell the compiler it’s a comment, not code.
Oh, and emember the pseudo code we wrote? I’ll often put that into my brand new trigger as comments, to give me a starting place to structure my code, and to remind me of how I want the code to work. Actually, let’s go take a look at that pseudo code now.
ASHIMA: When you look at the pseudo code, and the actual code, what do you notice?
VERONICA: Well … I see in our pseudo code we have “Add the following campaign statuses”, and I see where in the code that’s happening. But what about get rid of the default campaign statuses? Oh … right … that’s what we saw when we tried the code out -- that part isn’t there!
ASHIMA: Right! There’s no code to delete those yet, so they showed up when you created the Campaign. Notice anything else that’s missing?
VERONICA: Hmm …. we say to check if it’s a workshop campaign … but I don’t think that’s happening anywhere either, is it?
ASHIMA: Good catch! See, the pseudo code can remind you of the requirements.
VERONICA: Ok, it’s kind of making sense. So can we add those missing pieces?
ASHIMA: Yes, I happen to have a version of the code that I think will do the trick. Let’s take a look at it.
ASHIMA: Notice that the very first line of pseudo code was “After a campaign is inserted.” Here’s what that translates to in the trigger -- after insert. You define when you want your code to run. You could set your trigger to fire on more than one event -- after insert, after update, before delete, etc. There are some things you can do before insert that you can’t do after, and vise versa.
Next is checking to see if it’s a workshop campaign. Here’s where we’re doing that.
VERONICA: Ok, I can see that. But what are all those lists and sets for towards the top of the code?
ASHIMA: That’s another common element you’ll see in triggers. Lists and sets are collections. They’re used to hold records that you’re going to process. In this trigger we’re going to have a list of campaign member statuses to delete, another list of campaign member statuses to add, and a set of campaign IDs of any workshop type Campaigns that were inserted. Don’t worry too much about these details now -- they’ll become more familiar to you as you practice. And remember, the website sfdc99.com will explain all of this in detail and give you lots of ways to practice. For now, just know that you’ll likely use lists and sets in your triggers.
VERONICA: Ok. What is that part there that says “system.debug we added this campaign for processing”? What does that do?
ASHIMA: System.debug is a really helpful tool. Anything you write as a system.debug statement will get written out in the debug logs. It’s a way for you to troubleshoot what’s happening in the code as it processes. In this example, for every workshop type campaign that was created, there would be a line in the debug log that said “We added this campaign for processing”, along with the campaign name.
VERONICA: Where are the debug logs?
ASHIMA: If you go to the Setup area and type Debug in the search, you’ll find them -- in the Monitor section. You need to set up a debug log for yourself by clicking New in the debug log area and adding your name. Then after you create a Campaign, you can look at the debug log and find your debug statement. Here, let’s take a quick look.
ASHIMA: This is a snippet from the debug log. Looks like you have a workshop coming up called How to be a Zen Goddess -- I want to sign up!
VERONICA: Me too! :-)
ASHIMA: Ok, let’s finish looking at the rest of the code. I’ve added a section to delete the default campaign member statuses. And finally, the bottom part is where the statuses you want are created.
VERONICA: Ok, there are a lot of details I still don’t get, but I get the general idea of what’s happening. This is great!
I do have just one more question for now … back to those lists and sets. The “cmsToInsert” list -- it looks like you’re adding the new campaign member statuses while you’re looping through the workshop campaigns …. but then it looks like you insert them again at the bottom of the code.
ASHIMA: Ah, great question. So, inside this loop is where we’re just putting things into our collection -- our “cmsToInsert” list. We’re not actually inserting them into Salesforce yet. The collection is just a storage place to hold all the records we’re going to process. Then, after we’re done going through the loop, that Insert statement at the bottom is where we’re actually creating the records in Salesforce. This is another important design pattern -- you generally want to do your inserts, updates, and deletes outside of any loops, otherwise you can run into some errors around what are called Governor Limits. Again, don’t worry too much about it now. You’ll get the hang of it with more practice.
VERONICA: Ok, there’s a lot to learn! But at least I feel good about getting started.
ASHIMA: Yes, there is a lot to learn, but you’re off to a great start! Here are some of the key things we talked about:
In the majority of triggers you’ll be looping through trigger.new or trigger.old.
Use collections to hold records you’re going to process
Do your inserts, updates, and deletes outside of loops
Be sure to comment your code
You can use system.debug and the debug log to see what’s happening when the code runs.
VERONICA: Thanks Ashima, this has been super helpful. So … now that the code’s working … can I just copy and paste it to my production org?
{ POSSIBLY NEED TO REWRITE DEPENDING ON THE ENDING OF ACT 4}
This is the final act of our play.
VERONICA: Great, it’s ready to go to production. What was that called again to move my code from sandbox into production?
ASHIMA: Deploy, but there are still a few more steps I’d like to recommend before deployment.. First, it’s important to get your users to test it out. I’d recommend asking Etta and Zola to log into the Sandbox and make them go through the steps of creating some real campaigns. You never know what you might have missed in your code that the users might uncover.
VERONICA: Oh, that makes sense. Okay, then are we ready to go to production?
ASHIMA: Well, not yet. After they test and if they find anything, you’ll need to revise your code. And, then, ask them to retest the code again. Once they agree it’s working good, there is one final step before deployment and that’s called test coverage. You do that with something called test cases.
VERONICA: Wow, there sure is a lot of testing. Seems overboard to me.
ASHIMA: Actually, it’s super important to test your code as this is running realtime in the database. So, you noticed when you created a campaign, your code ran immediately. When you create test cases, it helps stop the system from getting broken. For example, if you introduced a new package or new code to your instance, it might interfere with this code. The test cases can check to make sure you don’t break your instance of Salesforce.
VERONICA: I hadn’t thought about that. Well, I guess testing is pretty important.
ASHIMA: Yes. I highly recommend reading up on testing just like you have done here with your coding. Take a look at the SFDC99 resource again, there is a section on testing. Also, the Developer API also offers some great suggestions as do a few other web site you can find.
VERONICA: Okay, so after I do all this, how do I deploy.
ASHIMA: We’ll do that, but the SFDC99 documentation has help for that, but don’t be surprised if you run into errors or trouble. But, first, we need to test with users, revise and test again and then write test classes. The deployment is really the last and final step. I’ll help you with that as well and may see what you can do on your own.
VERONICA: Great, after doing this much on my own, I’m starting to feel a bit more confident.
ASHIMA: That’s great Veronica, you have done an amazing job and with very little help from me. You’re on the right path and you’ve been asking some great questions. Keep it up and once you get the deployed, I need some help from you with a report I’m trying to create.
VERONICA: Help from me? Don’t you know it all?
ASHIMA: Not really, I know some things, but I don’t know enough about Analytics and you’re the guru I hear. So, when you have some time, can you help me?
VERONICA: Of course.
ASHIMA: Great. Namaste Veronica!
VERONICA: Namaste Ashima!
Bow to the audience (and pretend to catch flowers being thrown at us and smelling them) SMILE BROADLY.
{ POSSIBLY NEED TO REWRITE DEPENDING ON THE ENDING OF ACT 4}
This is the final act of our play.
VERONICA: Great, it’s ready to go to production. What was that called again to move my code from sandbox into production?
ASHIMA: Deploy, but there are still a few more steps I’d like to recommend before deployment.. First, it’s important to get your users to test it out. I’d recommend asking Etta and Zola to log into the Sandbox and make them go through the steps of creating some real campaigns. You never know what you might have missed in your code that the users might uncover.
VERONICA: Oh, that makes sense. Okay, then are we ready to go to production?
ASHIMA: Well, not yet. After they test and if they find anything, you’ll need to revise your code. And, then, ask them to retest the code again. Once they agree it’s working good, there is one final step before deployment and that’s called test coverage. You do that with something called test cases.
VERONICA: Wow, there sure is a lot of testing. Seems overboard to me.
ASHIMA: Actually, it’s super important to test your code as this is running realtime in the database. So, you noticed when you created a campaign, your code ran immediately. When you create test cases, it helps stop the system from getting broken. For example, if you introduced a new package or new code to your instance, it might interfere with this code. The test cases can check to make sure you don’t break your instance of Salesforce.
VERONICA: I hadn’t thought about that. Well, I guess testing is pretty important.
ASHIMA: Yes. I highly recommend reading up on testing just like you have done here with your coding. Take a look at the SFDC99 resource again, there is a section on testing. Also, the Developer API also offers some great suggestions as do a few other web site you can find.
VERONICA: Okay, so after I do all this, how do I deploy.
ASHIMA: We’ll do that, but the SFDC99 documentation has help for that, but don’t be surprised if you run into errors or trouble. But, first, we need to test with users, revise and test again and then write test classes. The deployment is really the last and final step. I’ll help you with that as well and may see what you can do on your own.
VERONICA: Great, after doing this much on my own, I’m starting to feel a bit more confident.
ASHIMA: That’s great Veronica, you have done an amazing job and with very little help from me. You’re on the right path and you’ve been asking some great questions. Keep it up and once you get the deployed, I need some help from you with a report I’m trying to create.
VERONICA: Help from me? Don’t you know it all?
ASHIMA: Not really, I know some things, but I don’t know enough about Analytics and you’re the guru I hear. So, when you have some time, can you help me?
VERONICA: Of course.
ASHIMA: Great. Namaste Veronica!
VERONICA: Namaste Ashima!