There are many objects created in Salesforce Industries (Vlocity). Things like OmniScripts, DataRaptors, products or even FlexCards. These are usually created by an OmniStudio administrator and developer or by a CPQ Industries developer. Usually, administrators or developers work in a developer organization, a sandbox organization or even a scratch organization. However, the work they do needs to be transferred to different environments, such as a test environment and eventually a production environment, so that users can benefit from the creations we developers and administrators have made.
Context
To transfer the things we create as administrators and developers, we use tools to support this process. In the Salesforce world, for example, we use SFDX or the new SF CLI to transfer metadata.
Since the configuration for Salesforce Industries (Vlocity) is not only metadata but also includes data records in SObject tables, another tool is needed to manage it.
Within Salesforce Industries (Vlocity), we use two different tools to manage our configuration. The first is the Vlocity Build Tool (VBT), while for the second tool we use front end of the Industries Developer eXperience Workbench, also known as the IDX Workbench.
Now let's focus on the problem:
The OmniScripts and FlexCards are implemented in the organization as LWC components. These are generated by a screen automation tool called Puppeteer. As you can imagine, this takes a lot of time because the screen automation tool has to go one by one to generate and deploy the LWC components one by one.
Where this problem really becomes apparent is when you start using the new industries CPQ Cart (LWC). This cart consists of a lot of Flexcards, namely 141, and 18 OmniScripts. Using the VBT puppeteer deployment method to implement it takes more than an hour, which is a lengthy and risky process that requires many adjustments and iterations. Realistically, this process can take hours.
Why should I consider it?
Since developers and administrators use a lot of FlexCards and OmniScript. This even several times a day with CI/CD. Having a process that makes developers wait for hours is unacceptable.
So how do we deal with this?
This is where VBT Local Compilation comes in. It is a new development. Originally delivered in last year's spring release, it only recently became useful for larger projects. That's the reason I'm writing about it now.
This local compilation function brings the compilation to the developer's or administrator's desktop and generates the LWC components in advance. In this way, the LWC components are deployed with regular Metadata API deployment, saving a lot of time. The deployment of the LWC cart is now reduced from hours to only about 10 minutes, depending on the circumstances.
My experience
That sounds great! Is there a catch? No not really. So far my experience with the tool is that it can be somewhat picky when it comes to the repository being online (with the local compiler). Fortunately, it is usually available and so far we have had only one day of outages. However, it is important to note that the local compiler is not open source and code cannot be easily modified by clients. Unlike VBT, which was open source and allowed me to make regular code improvements, it is not possible to make changes or fixes with this tool.
Another challenge is that version control is not very clear. Not for every version of CME Vlocity Package there is a released version of the local compiler. There are also no published changelogs. So it is up to you to verify what has changed in the local compiler. A command that helped me do this is:
Where "900.472.10" is your current version and "900.481.0" is the new version.
This shows you the code changes made by the developers of the local compiler.
What resources would you recommend using to get started?
For starters, I would suggest reading this article:https://github.com/vlocityinc/vlocity_build#initial-support-for-omniscript-flexcards-local-compilation ("Initial support for local compilation of OmniScript / FlexCards")
Wrapping up
The future looks promising: Salesforce is incrementally adding more features to its native core. One of the first additions is the Standard OmniStudio, which runs native on the Salesforce Platform and uses standard metadata types. If you want to read more about this, let us know. We might write about this next time.
Recognize the differences: Architects versus Software Engineers
What talent do you use to bring your projects to fruition? When do you deal with an Architect and when do you work with a Software Engineer? None other than Yannick van Eldik (CaseNine) and Raimond Brookman (Info Support) can explain this to you in detail.
Architects and Software Engineers: how do these roles differ?
Yannick: "You notice the differences in the activities in which individuals are involved. For the development of a feature, you use the talent of an Engineer. For a project, if a route has to be mapped out or a technique has to be figured out, you have to deal with an architect."
Raimond: "An architect in IT is concerned with laying down the main structure. What should the software solution look like with the emphasis precisely on the big picture."
What steps do you go through to find the right architect?
Brookman: "We map out what products and services are provided and link to this the question of how to organize this on the internal side. This analysis is therefore mainly about the business side of the organization. On the other side, we map out what IT support is needed for this. That means answering the question: what systems are needed and what underlying infrastructure is required for this. Then repeat these steps for the strategic, tactical and operational areas of the organization. In other words: the slightly longer term versus the shorter term. In this way you already have twelve focus areas in which you can work with architecture. In practice, you also involve the mission, vision and strategy of the organization. That determines how you want to shape the organization across the aforementioned domains. We call that the Enterprise Reference Architecture. Those initiatives are often the change initiatives. For this, we set up a slightly more detailed plan: the Solution Architecture. The next step is even more concrete and splits into two. On the one hand, the design of the organization and on the other, the software architecture."
What advice do you give to organizations looking for a Salesforce Architect?
Yannick: "Don't go looking for 'an architect' right away. Instead, present your business case and present the actual question. Only then is it possible to find the optimal profiles to go with it. After all, as Raimond just pointed out, there are different types of architects. Each talent has different, unique skills. So present the question as well as the business case."
Raimond adds: "In practice, you often find that organizations are looking for a person who has all the talents. This is extremely difficult and can cause unnecessary frustration. You just saw it: there are different types of architects. You can recognize a good architect by the fact that he or she looks at both the long and short term. Also, the architect always includes the organization's business goals. The plan must also be tailored to those goals. Also, a good architect can make a connection between Developers on the one hand and non-technical stakeholders on the other."
What characterizes a CaseNine Architect?
Yannick: "A CaseNine Architect works across technology. They have a specialization in Salesforce, but their background and training allows them to work with the other technologies that organizations often have."
Want to know more? Watch the video with Yannick van Eldik and Raimond Brookman.
Make the right choice: Code versus No-code
Code versus No-code: two terms with which you may be increasingly familiar. What do they mean and, more importantly, what are the differences between them? We sat down with Colin Hamer, Software Engineer at CaseNine. "With No-code, although you can drag and drop elements into each other, it is still important that you know the underlying workings. Only then are you able to develop a good, scalable solution."
First of all, what does your daily work entail?
"As a Software Engineer, I am involved in both the design and construction of applications. This does not limit you to just the programming itself, but also to other things: getting information from the customer, finding creative solutions to complex issues ánd you are always working with the latest technology."
Code versus No-code: what are the differences?
"As the name suggests, with No-code you write no code or extremely little code. Instead, you drag and drop elements within a user environment. With Code, you do have to be able to write code. The latter is often provided by Software Engineers. Some qualification is in order here: both activities do require programming knowledge. With no-code, you can drag and drop elements into each other, but it is still important that you know how it works. Only then are you able to develop a good, scalable solution. Nowadays, we also see Salesforce referring to "No-code" as "Low-code. The two worlds are growing closer and closer together."
When do you choose which approach?
"In the case of a complex application, the 'Code route' is often chosen. After all, code gives you the most freedom and flexibility. At the same time, that is also a disadvantage. You have to be careful not to make a project unnecessarily complex. With Low-code, you are more limited: which elements are available for drag-and-drop. That also offers advantages. It makes it easier to maintain and transfer the project. If a project becomes too complex, it makes sense to look at Code."
How does it work in practice?
"As indicated, with No-code you work primarily with building blocks in a visual environment. In Salesforce's Flow Builder, you can set up No-code projects. Through the user environment, you can remove, move and put back blocks. That's how you connect the different elements."
As an organization, how can you get off to a smooth start with No-code or Code?
"At CaseNine, we can advise you on the right approach. We have extensive experience in both directions. How you notice this? The Software Engineers at CaseNine actually think and act from an engineering perspective. The experience allows us to see which solution fits best with each project."
Want to know more? Watch the video with Colin Hamer, in which he gives examples.
In the digital age we live in, businesses and organizations no longer get by with just a good product or great service. User adoption and user experience (UX) are critical to increasing productivity and improving customer satisfaction. In this blog post, we will discuss the importance of user adoption and user experience and how they affect the success of your organization.
User adoption: What is it and why is it important?
User adoption is about the extent to which users accept and start using a new product or service. This can be quite a challenge, especially when introducing new products and services. Resistance to change is something we are all familiar with. Whether we manage to turn that resistance into acceptance is critical to the success of the new product. It determines whether or not it will be used and thus whether it will ultimately generate revenue for the organization.
So the importance of user adoption is crucial. A product or service that is not accepted by users is basically useless, no matter how great it is. Therefore, it is very important for companies and organizations to ensure that their products and services are user-friendly and easily accessible.
User experience (UX): What is it and why is it important?
User experience (UX) is about the overall experience users have when interacting with a product or service. A good user experience is intuitive, user-friendly and enjoyable. A poor user experience can be frustrating, confusing and even discouraging, causing users to drop out resulting in reduced productivity.
User experience is an essential component of customer satisfaction, loyalty and increased productivity. When users have a positive experience with a product, they are more likely to continue to use it, recommend it to others and provide positive feedback about it. In contrast, a negative user experience can lead to customer dissatisfaction, negative reviews and even lower sales.
The importance of user adoption and user experience for productivity
User adoption and user experience are crucial factors in the success of a product or service. If users can easily accept and use a product or service, they are more likely to be productive and efficient. A good user experience can help users perform tasks quickly, easily and with fewer errors. This can lead to increased productivity and overall organizational efficiency.
Moreover, a positive user experience can lead to increased employee satisfaction and motivation. When employees are satisfied with the tools and resources their organization provides, they are more likely to be engaged, productive and motivated. This, in turn, can lead to increased revenue and growth for the organization.
The Importance of User Acceptance and User Experience for Customer Satisfaction User acceptance and user experience are also critical factors in determining customer satisfaction. When customers have a positive experience with a product or service, they are more likely to continue to use it and recommend it to others. This, in turn, can lead to increased revenue and growth for the organization.
In contrast, a negative user experience can lead to customer dissatisfaction, negative reviews and disappointing sales. When customers are dissatisfied with a product or service, they are less likely to use it and recommend it to others. That can lead to less revenue and growth for the organization.
The importance of user experience for Salesforce users
In the Salesforce world, where companies rely on CRM tools to manage their sales activities, user experience can make or break the deal. Why is user experience so important in the world of Salesforce? Five key reasons:
1.Increased productivity: A good user experience can help sales teams work more efficiently so they can focus on selling and closing deals instead of struggling with a clunky and frustrating interface. This can ultimately lead to higher productivity and more sales.
2.Improved customer relationships: The right UX can make it easier for the sales team to access customer information. This helps them in dealing with customers by allowing them to communicate in a more focused and personal way. This can help build strong, lasting relationships with customers and thus keep them loyal to your company.
3.Competitive advantage: In a crowded marketplace, a better user experience can set your company apart from the competition. By providing a smooth and intuitive experience, you can attract and retain customers who enjoy working with you.
4.Better data quality: When the user experience is optimized, salespeople are more likely to enter the correct information into the system. This leads to more reliable reporting and better insights into buying behavior for future policies.
5.Flexibility and scalability: A user-friendly interface can make it easier to scale and adapt your sales operations to changing business needs. This is especially useful in a fast-paced and ever-changing business environment.
So, how do you ensure a good user experience in the Salesforce world? Here are a five tips:
1.Focus on simplicity and ease of use.
2.Make mobileaccessibility a priority.
3.Make user feedback and testing part of your design process.
4.Invest in training and support for your sales team.
5.Monitor and improve the user experience to stay ahead of the competition.
Conclusion:
User experience is an essential part of a successful sales strategy in the Salesforce world. With a good UX, you can increase productivity, improve customer relationships, gain competitive advantage and ultimately generate more revenue for your business.
Curious about CaseNine's approach? Click here to read more about it or contact us today to spar with us. We'd love to hear from you!
In this blog post, we discuss the key benefits of CI/CD. In today's fast-paced business world, software development is one of the key drivers of innovation and growth. But as the complexity and scale of software projects increase, so does the need for efficient and effective development practices. This is where Continuous Integration/Continuous Deployment (CI/CD) comes in.
By automating crucial stages of the software development cycle, CI/CD can help companies streamline their development processes, improve collaboration and communication, and ultimately increase the company's commercial success. The Business Case for CI/CD: why investing in automation is worthwhile.
What is CI/CD?
CI/CD is a set of software development practices that automate the building, testing and deployment of software code. The CI part of the process involves automatically building and testing code as it is modified to identify potential problems early in the development process. The CD part then ensures that the code is automatically put into production once it has been tested and approved. By automating these stages of the development process, companies can save time, reduce errors and improve collaboration and communication between development teams.
Why invest in CI/CD? Is investing in automation worth it?
There are a host of reasons why companies would do well to invest in CI/CD. Some of the crucial benefits include:
1. Faster time-to-market: In today's fast-paced business environment, getting products to market quickly is essential. By automating key stages of the development process, CI/CD can help companies accelerate their development cycles and get products to market faster. This can provide competitive advantage over slower competitors, helping them respond quickly to changing market conditions.
2. Improved code quality: Manual testing is often error-prone, time-consuming and expensive. By automating tests and implementing code automatically, CI/CD can ensure that code quality is always up to par. This can reduce the number of errors and defects entering production, leading to a more stable and reliable product.
3. Increased collaboration. By automating key steps in the development process, CI/CD can help improve collaboration and communication among development teams. By making it easier to share code, test results and other development artifacts, CI/CD can help teams collaborate more efficiently and effectively.
4. Better use of resources: Automating the development process can help companies use their resources more efficiently. By reducing the time and effort required to build and deploy code, companies can free up their developers to work on more valuable tasks, such as writing new code or responding to customer needs.
5. Increased business agility: CI/CD can help companies respond more quickly to changing market conditions and customer needs. By automating key steps in the development process, companies can significantly reduce the time it takes to develop, test and deploy new code.
Cost comes before benefit, even when investing in CI/CD. In the long run, however, such an investment is very worthwhile and pays off in faster time-to-market, better quality, more efficiency and cost savings. If you want to stay ahead of the competition in today's digital landscape, CI/CD is an indispensable tool in your toolbox.
Case Studies of Satisfied Customers
Wondering how our solution can help your business succeed? Read the Case Studies below and learn more about real-world examples. Here are just a few examples where we have implemented CI/CD Pipeline:
Several years ago, Salesforce acquired Vlocity, which is now recognized as Salesforce Industries. In this article, we clarify how OmniStudio is related to similar tools offered by Salesforce, such as Workflows and Flows. Vlocity consists of several modules, such as CPQ (Configure Price Quote), CLM (Contract Lifecycle Management) and OM (Order Management). In addition to these business processes, Salesforce Industries offers OmniStudio, which includes OmniScript, Integration Procedure and DataRaptors. These data integration tools are now combined in a new product: OmniStudio.
Salesforce
Salesforce offers several tools that may look familiar to you: Workflows, Process Builder and Flows. Let's focus on Flows for now, as it will replace the other two tools.
With Salesforce Flows, business processes can be easily implemented in Salesforce: the tool is particularly suitable for applying low-code. This way, you can build a process with Screen Flow on the front end without writing a single line of code: back-end and database automation processes are just as easy to edit. Both OmniStudio and Visual Flows work well with Salesforce objects and fields.
OmniStudio
This tool consists of three complementary tools: OmniScript (OS), Integration Procedure (IP) and DataRaptors (DR). OmniScript is a solution in which visual processes can be built without any development experience. It uses Integration Procedures to retrieve data from multiple locations. In turn, an Integration Procedure uses DataRaptors to interact (read, transform and store information) with objects and retrieve data from external APIs/databases. It then sends this combined data back to OmniScript. In addition, Lightning Web Components (LWC) can also be used here.
Comparison of tools
Now that we have identified what the different tools are used for, let's compare Flows to OmniStudio.
Flows
1. The user interface can be edited with Screen Flows. However, you will need Lightning Web Components more often because the customization options are limited.
2. A record-activated flow is always associated with a database transaction, an operation, or the creation of a new record.
OmniScript
3. Works well with other Vlocity products such as Configure Price Quote and Contract Lifecycle Management.
4. Integration Procedures and DataRaptors are also easily combined with OmniScripts.
Integration Procedure
5. Can be associated with a process the user wants to perform. This is not strictly associated with a database transaction.
6. Very easy to combine with other Vlocity products such as CPQ and CLM.
7. Using Integration Procedures, you can make API calls. You can also combine this with Named Credentials.
8. Easy debugging and testing with the example function. Individual steps within the process can be previewed and debugged.
9. Options to work with high consumption of Salesforce limits, by implementing queueable and chainable features.
10. Integration Procedures can work with anything represented in JSON. XML can be converted to JSON using DataRaptors. Integration Procedure can also be called as an API.
Summary
In this article, we have discussed several key differences between Salesforce Flows and OmniStudio. We recommend using OmniStudio for complex API calls or data processing; OmniStudio products are also much more suitable to use with Vlocity (Salesforce Industries). So, if you're already using Salesforce Industries, it makes more sense to use OmniStudio. Want to know more about this tool? Trailhead offers excellent modules for this.
If you have any other questions, please contact us or follow our page here for weekly updates.
The context
End of the year all energy contracts have to be renewed, the energy suppliers are busy. Our Salesforce Industries licenses had just been renewed. And we had just upgraded to the latest version, the winter '22 release, when I got a call that CPQ was no longer working.
Panic!
Recently, Salesforce Industries Permission Set Licenses were introduced in the Spring '22 release. Existing customers can continue to use Managed Package Licenses, they can also choose to switch to Permission Set Licenses. But how do Permission Sets work in industries CPQ?
The problem
- When you get a new Salesforce Industries CME license or do a renewal, the new Permission set license is activated. This is optional, but I was not informed as a developer.
- This will convert your old Salesforce Industries CME Managed Package License into a Permission Set License.
- As a result, users (without actions) can no longer use CME.
What is a Permission Set License? What is its benefit?
Permission set licenses allow you to have a more granular licensing policy . There are several options for Energy & Utilities cloud Permission Set Licenses.
On the left you first see the license and on the right you see the available Permission Set for that license:
Permission Set Groups are also available that you can use to get started quickly. We will use these in the examples later in this blog.
Sources: salesforce.com I and salesforce.com II
The solution: a migration plan
- Users must be assigned Permission Set Licenses.
- Users must be assigned Permission Sets (groups).
- The best way to automate this is to use an Apex script. Especially if you have many users, this is easier.
How can you assign permission set licenses quickly?
The easiest way is to group the users into a public group. Keep in mind that this assigns all vlocity_cmt licenses to the users in the public group.
Note! first read the scripts and adapt them to your needs before performing this operation.
You are responsible for your own actions : )
Pro tip: make your first version in a scratch org or sandbox, then you can try out all sorts of things with confidence.
Then you can assign the permission set groups to the users using this script:
Sandboxes and Scratch orgs:
How can you test with the new license structure? This can be done incredibly well in sandboxes and scratch orgs. How do you turn it on? You need to turn on the check for managed package licenses. You do it like this:
The documentation can be found here
You can incorporate these scripts into your CI/CD process so that all orgs look the same. That way you can detect and fix potential problems early on.
Want to learn more about Permission Set Licenses, Permission Sets or Permission Set Group? Read all about it in this article from Salesforce. Curious to learn more? Subscribe to the Technical Deep Dive series today.
Context: products are not visible in the CPQ cart
You have built a CPQ solution and configured your commercial products within the EPC. But when you view the cart, no products are visible or available. What now? There could be a number of things going on, causing the products not to be visible in the CPQ cart.
The problem: what could it be due to?
The Orderable box is not marked true for this product.
The solution:
- Go to your Vlocity Product Designer
- Look up your product
- Go to General Properties
- Check that the box Orderable is checked
- If not, check the box and save your modification.
Dhe 'Product Status' is not active
The solution:
- Go to your Vlocity Product Designer.
- Look up your product.
- Go to General Properties.
- Check that the box Status at Active is set.
- If not, check the box Active box in the drop-down list and save your modification.
The 'Active' box is not selected for this product
The solution:
- Go to your Vlocity Product Designer.
- Look up your product.
- Look under Effectiveness or the box Active box is checked.
- If not, check the box Active box and save your modification.
Hhe product has an incorrect sell-by date
The solution:
Please note that products within the EPC have a start and end sale date.
- Go to your Vlocity Product Designer.
- Look up your product.
- Look under Effectiveness or the box Selling Start Date is empty, or that the date is in the past.
- If not, make the box live or select a date that is in the past.
- The same goes for the end date. Make sure the date is in the future when this box is filled in.
- Save your adjustments.
Hhe product has a Context Rule that hides the product
The solution:
- Go to your Vlocity Product Designer.
- Look up your product.
- Go through all Context Rules through; click on the details of the Rules of the (old) Product Console. Using the old Product Console , because the new Product Designer sometimes does not show all the Rules properly.
- Check all Conditions, the easiest way to verify that the context rule is the problem is to temporarily remove the rule. If the product then appears, you know you need to take some time to dig through the context rules.
- You can also use the context rules with the CPQ Configuration setting: ContextRulesEnabled.
There is no price for this product in the price list
The solution:
Note: A product without a price is not visible in the CPQ cart.
- Go to Vlocity Product Designer.
- Look up the product.
- Check for values entered for that product under the "pricing" tab.
- Always have a value filled in, even if it is zero. This also applies if you have a setup with attribute pricing or the like.
Insufficient Maintenance jobs have been performed
The solution:
We recommend that you always have a Maintenance job after you have changed a product configuration. Then you can be sure that the product cache and the product hierarchy are properly configured for use in the CPQ Cart.
- Go to the app launcher and search for Vlocity CMT Administration up.
- Go to "Maintenance Jobs" and perform the following tasks in this order:
-
- PRODUCT HIERARCHY MAINTENANCE
- CLEAR MANAGED PLATFORM CACHE
- REFRESH PLATFORM CACHE (FULL)
Make sure each task is completed before you start a new one. This can sometimes take a while because they are like Async jobs are executed. Progress can also be checked in Setup with keyword Apex Jobs.
If you find that you need to do these tasks often, af if you want to integrate them into your development or your CI/CD workflow, you can automate them and run them as Apex scripts:
// Run jobs for hierarchy and cache
for (Pricebook2 pricebook : [SELECT Id FROM Pricebook2]) {
//https://docs.vlocity.com/en/Refresh-Platform-Cache.html
vlocity_cmt.CMTAdminJobService.startProductHierarchyMaintenanceJob(pricebook.Id);
}
You can even use them as post-Deploy step run in the Vlocity Build Tool: (https://github.com/vlocityinc/vlocity_build)
In conclusion
Hopefully these tips will help you configure your EPC and CPQ. I know these problems can be really tricky to solve, but at least your products are now visible again in CPQ cart.
I post Technical Deep Dives on a regular basis. Subscribe today and don't miss a single CaseNine Technical DeepDive episode.
Spring '23 has arrived in Salesforce and with it comes a host of new features and enhancements that are sure to help simplify the way you work and deliver value to your customers. Whether you are an experienced developer or just starting out on the low-code to pro-code spectrum, there is something for everyone in this release.
One of the standout features in Spring'23 is the DevOps Center, now generally available. This tool provides an enhanced experience around change and release management by bringing best practices from the DevOps world to your development team. With the DevOps Center, all developers and admins can work together to deliver value to customers in a scalable and repeatable way. You can manage changes and releases with the point-and-click interface, directly from your source system or a combination of them.
Another feature is the HTTPCallout Builder, a low-code feature in beta. This tool makes it easier to automate processes with external data by creating Flow Builder actions that call Web-based service APIs with HTTP Callout. HTTPCallout Builder lets you set up direct integrations without code or a middleware service, and you can easily map data types from JSON output to flow variables.
If you want to create screens with interactive components, the Spring '23 release helps you with the Build Screens with Interactive Components (Beta) feature. This tool lets you configure supported components or your own Lightning Web Components to respond to changes in other components on the same screen. This allows you to build screens that feel like single-page applications and reduce the number of screens for your users.
Flow users will be pleased to know that Lookup Fields can now be easily added to flow screens with Dynamic Forms for Flow. This feature allows you to create a record- directly from the Lookup field, making it easier than ever to create record-enabled orchestrations.
With the improved Conditional Directives in Spring '23, you can now use lwc:if, lwc:elseif and lwc:else to replace the legacy if:true and if:else directives. These directives make it easier to create dynamic templates based on certain conditions.
If you want to schedule Queueable Jobs with delay, the System.enqueueJob Method in Spring '23 allows you to set a delay when scheduling, from 0 to 10 minutes. This new optional override is a great way to add queueable jobs to the asynchronous execution queue with a specified minimum delay.
Finally, the Dynamically Pass Bind Variables to a SOQL Query-feature in Spring '23 makes it easier to resolve bind variables in a query directly from a Map parameter with a key, rather than from Apex code variables. This means that the variables need not be in scope when the query is executed.
Conclusion: Spring '23 is packed with new features and enhancements that will take your Salesforce experience to the next level. Whether you are an experienced developer or just starting out, there is something for everyone in this release. So feel free to explore and discover all that Spring '23 has to offer.