Blog Posts

Goodies for Admins in the Salesforce Summer 17 Release

I pick out some special Summer ‘17 treats for Salesforce Administrators.
Goodies for Admins in the Salesforce Summer 17 Release

Goodies for Admins in the Salesforce Summer 17 Release

With all the noise about Lightning, Trailhead, and Einstein, it’s good to know that Salesforce is keeping Admins in mind.

It’s the Little Things

I love how the release notes can introduce sweeping changes and tiny details right next to each other. Sometimes things that seem like tiny details have big impact, like these.

Previously the default value for the Global Value Set would be the default value on every field where it was used. Now we will be able to set a different default value at the field level, using formula-defined default picklist values. We can also use this feature to set a different picklist default for different users, which is actually the lead-in use case in the release notes. I’m interested to see what the talented and creative admin community will do with this feature.

I really try, I really do, not to switch back to Classic to work in Setup, but let’s face it, while the organization of Lightning Setup has some strengths, the overall experience for admins can be a little clunky. That’s changing, though. I’m going to breeze over the sweeping changes to Object Manager in Lightning--expect a thorough review in a later Arkus Blog post. As a sneak peek, we’ll also be able to get to it faster. A new little feature that will be a big improvement to Setup in Lightning is the ability to right-click and open more setup items in tabs because no matter how good we are, we still need to cross-reference things sometimes, so we might as well be able to do it quickly.

Communities in the Spotlight

Here’s one I’m really celebrating--Move Communities Between Orgs with Change Sets. There are some awkward limitations, such as the inability to migrate navigational and featured topics, so I hope this is not the last we hear of this development. Another biggie is Upgrade Community User Licenses in a Blink. What was a rather painful multi-step process has been greatly streamlined, so instead of creating a whole new user when we want to go from, say, Customer to Customer Plus, we just edit the user and give them a new license, profile, and role. This is also nicer for the user, as they get to keep their username and password.

Community administration is getting some other detailed attention as well. In Spring ‘17 we got Workspaces, which is clearly where the action is heading because there are some new features that will only be manageable there, including automatic topic assignment. This allows us to assign topics by data category to Knowledge articles for a given community. Also, in Community Builder we now get a dedicated HTML editor component, separate from the rich content editor component, and we can put the language picker component on any page in any template, including login pages.

 

Do you have a favorite admin goodie from the Summer ‘17 release I didn’t mention here? Feel free to comment below, on the Salesforce Success Community, on our Facebook page, or directly at me on Twitter @ifitfloats.

What’s New With Lightning in Summer 17?

Summer 17 is here! Let’s talk about some the newest features added to the Salesforce Lightning Experience.
What’s New With Lightning in Summer 17?

What’s New With Lightning in Summer 17?

Is it me or does it feel like this year is just whizzing right by? Something that popped out to me is that Salesforce seems to be making a move towards efficiency in Lightning, dubbing it as a ‘modern and more intelligent user experience,’ which is nice. Lightning has been improving by leaps and bounds in every release and Summer 17 is no different. Let’s take a look:

Access Field History Related Lists in Lightning Experience

LEX Field History Related List

Ask and you shall receive, right? Organizations will now be able to jump into a record and see the historical changes of the fields over time. This was critical for a lot of organizations out there and I know there are many folks that are very happy about this.

This one was mentioned in Ashley’s Salesforce Summer 17 Ideas Delivered and the previous installment of the Top Ideas saga. The IdeaExchange flexed its muscles and made a strong push over the last few months to get this one delivered. It is always great to see the community getting the things they need in order to make better use of the Salesforce platform.

 

Ditch Your Mouse—Keyboard Shortcuts Are Here

Used in 'What's New With Lightning in Summer 17?' blog

Salesforce is catching up a little bit with keyboard shortcuts. Users now have the ability to search for, edit, save, and close a record. You can also quickly open Notes and post to the feed, all without moving your mouse! I think that this is going to be a great feature that will go a long way towards making Salesforce users more efficient in their day to day workflow. This is a really cool new feature. 

This is a Lightning only feature, so those orgs still working in Classic will have to live without it. If you utilize console navigation, there are extra shortcuts that are available to you to navigate tabs, utilities, and more. You can see the available shortcuts in Windows by pressing Ctrl+/ and in Mac by pressing Cmd+/, try it out! 

If you really enjoy this feature and are interested in other productivity tools or methodologies, there are a lot of articles that have been written throughout the years on the Arkus Blog.

 

Stay on Top of Things with the Updated Activity TimelineUsed in 'What's New With Lightning in Summer 17?' blog

Salesforce continues the trend of efficiency by giving us an updated activity timeline. With the new timeline, you can gain full insight into your past and upcoming activities without having to click into each individual one to view the information. 

Expand one to individually view information on one activity, or expand them all to get a general snapshot of future and completed activities related to the record you are viewing. This is a great new LEX feature that makes working with activities a little easier.

Another really cool capability of this feature is that when you expand an email summary, you can take action on it directly from the timeline.



Drag Files onto Files Related List

LEX Drag and Drop Files

Tired of the sometimes tedious process of manually going through your folders to manually upload them into Salesforce? Wish this could be a little easier? Well, it’s your lucky day. 

Now in Lightning, you can drag files into the Files related list, without having to go through the hassle of the usual manual upload process. Like I said earlier, Salesforce is making a nice push towards efficiency. Drag and drop as many files as you want to, but this new functionality will not work with folders.

This is another Lightning only feature, which is becoming a popular trend. So folks who still favor Classic, it may be time to start jumping on board.

 

Make Lightning Experience the Only Experience

LEX Lightning Only Permission

Are you ready to move everybody in your org to Lightning and never look back? Well, now you have the ability to do this in the Summer 17 release. Admins can now hide the option for their users to switch back to Salesforce Classic. As Salesforce continues to bring Lightning more in-line with Classic and more and more organizations start choosing to utilize the power of LEX, this is going to become a very commonly used permission. Sooner or later, every org will have this little permission box checked.
 

Do you like what Salesforce did with Lighting in the Summer 17 release? Want to share your experiences or thoughts? Let me know what you think on the Arkus Facebook page, in the comments below, in the Success Community, or to me directly via Twitter at @RyanOwensRPO.

 

Contributing To Open Source Projects As a Learning Tool, Part 1

If you’re interested in learning how to code Apex, Visualforce, and Lightning Components, the many open source projects on the Salesforce platform are a great resource. What is Open Source, and how is it used on the Salesforce platform?
Contributing To Open Source Projects As a Learning Tool, Part 1

Contributing To Open Source Projects As a Learning Tool

A few weeks ago, Amy Bucciferro wrote about different learning styles, and how the tools for learning to use, administer, and develop on Salesforce align with certain learning styles. As a largely self-taught coder, I have found the open source projects that members of the Salesforce community have made available an incredible resource. Reading the code and documentation that others have written, and then eventually submitting documentation and code for inclusion in a project, has helped me gain skills and confidence as a developer.

Since even the clicks-not-code parts of Salesforce apps can be stored and shared as text-based metadata, app builders who use these declarative development tools can also gain valuable insights from, and contribute to, open source apps.

What is open source software?

The Open Source Initiative defines the term as "software that can be freely used, changed, and shared (in modified or unmodified form) by anyone."

This means that the source code — the text files used to create a piece of software — are available for anyone, that anyone is allowed to modify that source code, and, if they like, create a new version of the software program. There are a variety of ways that an open source software project can be organized (or not), and a variety of licenses applied to their code, but the bottom line is that the code is available for you to use as you see fit.

Open source software on the Salesforce platform has a couple of attributes that most other platforms don’t. The big one is that the Salesforce platform itself, which is required to use any code written for it, is not open source, and for any real business use, requires paid (or donated) licenses. Another challenge has to do with how apps are packaged and distributed — there are practical pitfalls to taking an app, modifying the code, and installing that code into your Salesforce instance. If you do that, you can’t easily install upgrades that the original app publisher provides.

Finding and installing open source projects

Despite these limitations, just having access to the source code of a Salesforce app is incredibly empowering. This lets anyone who can read code see exactly how the app functions. As an app builder, you can install it into a developer org to see how the Lightning Processes, Flows and Workflow Rules are set up, without having to read any of the code.

There are two main ways that open source software for Salesforce is shared. The first is as an unmanaged package. To install an unmanaged package into a sandbox or developer org, you just need its install link, similar to most other apps you get from the AppExchange. The difference is that you’ll be able to see and modify everything that the unmanaged package adds to your org. However, that editability comes at a price - you can’t upgrade an unmanaged package in-place; you have to uninstall and then reinstall, and uninstalling deletes all the data in any objects or fields that are part of the package.

Dreamhouse Sample AppA great example of an unmanaged package that you can use for learning is Salesforce’s own Dreamhouse App. The Dreamhouse App was actually built to be a tool for demoing and teaching about Salesforce features, and it has lots of declarative goodness if you’re not interested in the code. Salesforce has released several other free and open source tools as unmanaged packages over the years: Action Plans and Milestones PM are particularly well-known ones, and offer great opportunities for learning some code.

The other main way that open source projects for the Salesforce platform are shared is via source code repository sites. GitHub is far and away the most popular site for this, but sites like BitBucket and GitLab can be used as well. Getting the code and other metadata into an org to see how things actually work takes some additional technical steps in many cases — “cloning” the repository onto your local hard drive, and then using one of the IDEs for Salesforce development or the Force.com Migration Tool to deploy the code and other metadata into an org. Fortunately, Andy Fawcett of Financial Force, who has made a lot of contributions to the Salesforce open source community, has provided a Heroku-based tool that helps you to deploy from a GitHub repository (or “repo”) directly into a Salesforce instance. Many Salesforce projects’ GitHub repos feature this button:

Deploy to SF button

which you can click to be linked to Andy’s Deploy to SF Heroku app and install the project. For those projects that don’t offer the button, you can try this Javascript bookmarklet that I built. When you are on the main page of a GitHub repository, you can use the bookmarklet to pass the repo’s URL to the Deploy to SF app.

In the next post, I’ll dig into some of my favorite open source projects, and what specific lessons can be drawn from them.

Do you have favorite Salesforce open source projects that you’ve learned from? Want more details on how to get started with open source code? Share your stories and questions with me on the Arkus Facebook page, in the comments below, in the Success Community, or to me directly via Twitter at @tet3. You can also see my GitHub profile for repositories I’ve starred and forked for my own future learning opportunities.

Photo credit: "16th st" (CC BY-ND 2.0) by Peter McCarthy

Salesforce Summer 17 Ideas Delivered

Salesforce again delivers on Ideas from the Community in the Summer ‘17 release.
Salesforce Summer 17 Ideas Delivered

Salesforce Summer 17 Ideas Delivered

Though the list of ideas delivered in this release isn’t huge (literally it’s 10 ideas) there are some good ideas delivered this time around.  The point count this time is a total of 33,160, not a lot compared to the last release.  Let’s take a look at the Ideas delivered with this latest release:

Lightning Experience

Access Field History Related Lists in Lightning Experience  - Yeah! Tracking field history on standard and custom objects is now visible in Lightning Experience. If you’ve added the related list in classic page layout you will now see it in Lightning (of course you can now add them to the layout in Lightning as well). This idea was delivered with a total of 5020 points.
 
There Are Lots of Shiny New Features for Streams - If you haven’t paid attention to this, Chatter Streams are custom feeds you create by combining multiple related feeds. You can combine feeds from people, groups, and records. In this release, Salesforce has a new home page (click on the Streams heading from the Chatter home page) for them, actions, filters, and you can create up to 100 Streams. The Idea addressed by this feature had gathered a total of 4500 points.

Both Lightning Experience and Salesforce Classic

Lightning for Gmail: General Availability and Improved Efficiency - Most notable of the ideas delivered affecting both Classic and Lightning all revolves around Lightning for Gmail. Generally available in this release, Lightning for Gmail is a Chrome plug in, but first your Administrator needs to perform a few steps to enable in your Salesforce instance--making sure Enhanced Email is enabled for the organization, contacting Salesforce to get access to Enhanced Email for Lightning for Gmail, and enabling the feature. The combined Ideas (Integrate Gmail with Salesforce, Relate Gmail emails to Salesforce, Add Attachments from Gmail to Salesforce) related to Gmail integration on this release is a total of 7,640 points. Here are some of the features worth mentioning:

  • Relate emails to records, as you are composing the email, by selecting relevant accounts, opportunities, cases, or custom objects. The email will be related to the records selected and to relevant contacts, leads, and users associated. 

  • When you’re ready to compose an email, you can select a Lightning email template, modify, and even add merge fields. This capability is in Lightning Experience only.

  • After the initial setup and authentication, Lightning for Gmail saves the user's credentials, so you don’t have to keep logging in each time you want to work in Gmail.

  • Pick and choose which email attachments you want added to records, a very necessary feature, when there are so many images included in signatures out there!

  • With both Lightning for Gmail and Lightning Sync setup you can have your Events synced between Salesforce and Google Calendar. 

  • Not sure if you’ve added that email in Gmail to a Salesforce record? Lightning for Gmail adds labels, so you can tell which emails are already related. You can filter by these labels and assign color coding to them. 


Do you have other favorite Ideas delivered in this latest release I didn’t mention? Please feel free to comment below, on our Facebook page, or directly at me on Twitter @LeiferAshley or in the Success Community and Power of Us Hub.

Talend & PostgreSQL - Part 2 - Setup

This is a follow up post to part 1 "Talend & PostgreSQL - Data Migration Dream Team"
Talend & PostgreSQL - Part 2 - Setup

Talend & PostgreSQL - Part 2 - Setup

This is part 2 of a blog post about utilizing Talend and a PostgreSQL database to assist with data migrations.  Part 1 outlines the reasons to use an ETL + database approach to migrating data and generally outlines the tools involved.  You’ll also find links to download and install the tools needed to complete the following setup.



Setting Up your database:


Once you’ve installed your tools we’re ready to start setting up connections to our various datasets.  In this case, two Salesforce orgs and a PostgreSQL database.  First, lets add a database and a table to our PostgreSQL server.  Open pgAdmin.  Goto ‘Object’--> Create → Database.  I’ll call mine ‘IDLookup’.  Save.


Next we’ll add a table with some columns.  

Goto ‘Tools’ → ‘Query Tool’   Past in the following:  


CREATE TABLE id_table

(

   "Legacy_ID__c" VARCHAR(18),

   "Id" VARCHAR(18)

)


Press Execute / F5

Screen Shot 2017-04-28 at 3.56.09 PM.png




Executing this script will create a table with two columns ‘Legacy_ID__c’ and ‘Id’.

After refreshing the view:  (‘Object’ → ‘Refresh’)  You’ll see the table show up under ‘your table name’ → ‘Schemas’ → ‘Public’ → ‘Tables’


Screen Shot 2017-04-28 at 3.56.51 PM.png


Note that we just created a table via the query tool.  CUD (create, update, delete) are all possible for tables and records in a SQL database using the query tool.


Connecting Data Sources to Talend

Now that we have a table to connect to in our database we can switch to setting up Talend.  


Once Talend is installed, be sure to install additional packages from the help menu.  Some of these will be needed in order to connect with Salesforce.


Screen Shot 2017-04-28 at 1.21.26 PM.png



We’ll start by creating a connection with the PostgreSQL database.  

In Metadata, create a new Db Connection.


Name the connection and fill in the database details. Click ‘check’ to make sure you’ve successfully connected to the database.  The default port will be 5432.  In order to make sure, execute the following script in the query tool of pgAdmin:


SELECT *

FROM pg_settings

WHERE name = 'port';



Note: mine is running on 5433, so that's what I’ll enter in Talend.


Once you’ve connected to the database you’ll need to retrieve the schema.




Select the table/s to include in your schema.



Click ‘Finish’.










You’ll see the database, table, and columns in your metadata repository.






Next will be to create connections with each of the Salesforce orgs we’ll be working with.

Create a new Salesforce connection from the Metadata section.  




Enter your org credentials and click ‘Test connection’.  If you’re connecting to a sandbox be sure to update the Salesforce url in the ‘Advanced…’  section from: https://www.salesforce.com/services/Soap/u/37.0  to https://test.salesforce.com/services/Soap/u/37.0



Click ‘Next’ and then select all the objects you’ll be exporting/importing to/from the org.










Repeat for each org you’d like to connect for this job.



Now that we have all of our connections available to select from metadata.  We can start adding components to our job.  


The first thing we’ll do is extract all the Account records from our Source org and move them into our destination org.  


Drag the ‘Account’ object from the Source Salesforce Org onto the design screen.  Select the tSalesforceInput component.  From the Palette add a tmap component and finally select the ‘Account’ object from the Destination Salesforce org and select the tSalesforceOutputBulkExec.

Connect the components by dragging the connector from tSalesforceInput to tMap and then from tMap to tSalesforceOutputBulkExec. This should populate the schema from both orgs into the tMap component.  





Double click the tMap and simply drag fields from the source on the left to the destination on the right. Most importantly, map the Id field from the source to an external Id field in the destination org.  In this case, I’m mapping to OldSalesforceID__c.


Formula fields and some audit fields will have to be removed from the destination schema.  Created Date and Created by Id can be set only on an insert and the profile of the credentials used to login through Talend will need to have set Audit field permissions.


Screen Shot 2017-04-28 at 11.55.57 PM.png


Run the job.  


Now we’ll create and run a job to populate both the legacy and new id from the Destination Salesforce org into our PostgreSQL database. This time select a tSalesforce input after dragging the ‘Account’ object from the Destination Salesforce org onto the design screen followed by a tMap into a tPostgresOutput.



Edit the map to put the Id from the account to the Id column of the database schema and the OldSalesforceID__c field into the Legacy_Id column.



Deactivate the previous sub job before running this one.  Run it.  


At this stage, we’ve migrated the accounts from one org to the other and created a map of ids for those accounts in the id_table our PostgreSQL database. When we migrate the contacts we’ll use that map to assign contacts from the source org to the correct account in the destination org.  




Next, we’ll setup the job to migrate the contacts and reference the database. Add both the ‘Contact’ object tSalesforceInput and a tPostgresqlInput  component that references the id_table as inputs to a tMap component. The output will be tSalesforceOutputBulkExec to the ‘Contact’ object from the Salesforce Destination org.



Map the AccountId field to the Legacy_ID__c field of the tPostgresqlInput  then map the Id field of the tPostgresqlInput  to the AccountId field of the output.  Referencing the Id_table in our database is that simple and it can be done as many times as necessary for any number of lookups on the object.  Just add another instance of the tPostgresqlInput for each lookup.  




Run the job and your contacts will insert with the correct account ids.  Since created_by_id and created_date can only be set via insert, this method will allow you to correctly migrate those values.  


This is a very basic example of what can be done using the combination of an ETL and database to assist with data migrations.  Like anything worth learning, it may take some time to wrap your head around the potential benefit of using these tools.  Take your time and make sure you do your learning in a sandbox.  



Have any great ETL learning stories? Share them with me on the Arkus Facebook page, in the comments below, in the Success Community, or to me directly via Twitter at @jpbujold