Answers - Salesforce Trailblazer Community
Trailblazer Community
Ask Search:
Alex GutierrezAlex Gutierrez 
Hi,

We're currently moving away from Zendesk and into Service Cloud for all of our support needs. We have about three years worth of tickets (including ticket comments, obviously) in Zendesk that we are looking to migrate over to Service Cloud as Cases and Case Comments.

Has anyone ever done this? If so, what are best practices and/or tools that you have used to help with this migration process? 

Thanks in advance!
Best Answer chosen by Alex Gutierrez
Alex GutierrezAlex Gutierrez
Hi Ines,

I ended up writing my own Python script to ease the extraction of comments, id and author from the Zendesk ticket.xml export and then using Dataloader to map the exported comments using the Zendesk external id custom field.

I found it mind boggling that no tool out there exists to ease the data migration of Zendesk tickets and its comments to Salesforce, or that Salesforce does not handle XML imports considering the plethora of clients I can only assume switch over.

Here is the link to my script. https://github.com/yarisgutierrez/zendesk-ticket-comments-to-csv 

I hope others will find it usefule. Thanks, Ines, for your help.
Henriëtte WijneHenriëtte Wijne 
Is it possible to mass update userlicenses by using dataloader for example? My org is confronted with a license Salesforce is no longer using and I have to replace that license to a new one. It concerns Salesforce force.com and replaced by Salesforce Platform License. I have 200+ users connected tot Salesforce force.com license and I hate the idea to edit them one by one...
Best Answer chosen by Henriëtte Wijne
Guy KeshetGuy Keshet
yes you can!
there is a dedicate help page to talk you through this - see here:
https://help.salesforce.com/articleView?id=000336140&type=1&mode=1
Jack SteinerJack Steiner 

I am experimenting with Flow builder and manipulating Opportunity Line Items (aka. Products). I am trying to see if it is possible to create a number of records of a custom object type based on the products attached to an opportunity.

Getting the line item records and storing them in a variable is fairly straightforward. However, I assume I need a Loop to go through each one and create the new corresponding record. My issue is that the Loop uses a variable to store the individual item its working on at a given time, and it seems to restrict me from using a variable not of the same object type. Does anyone know how to bridge this gap?

I hope I've used the terminology correctly. I can clarify, if needed.

Best Answer chosen by Jack Steiner
Om PrakashOm Prakash
Hi,
We need to play with Loop and Asignment here.

You might already have two variable for Opportunity Line Items in flow currently:
For example, varOppLineItem and lstOppLineItems

Please create two variable resource for your Custom Object.
1. varCustomRecord for Individual record
2. lstCustomRecords for Collection of records

In Loop element you might already asigned OpportunityLineItem to a individual record variable varOppLineItem.
User-added image

Now add an Assignment Element, and map the all variables of your Custom object from Opportunity line item's variable.
User-added image

Add another Assignment element to hold all individual record of custom object in collection variables
User-added image

Now "Create Records" element which will simply create records from collection variable
User-added image


Linking will look like bellow:
User-added image

It should work as expectd.

If any query feel free to ask.
 
Ineke van den BergIneke van den Berg 
The field 'active' on campaign is of no use to our company, because we created a custom field 'status'. I have in mind that I can't remove the field 'active' from the page layout. because of reporting purposes or other undesired side effects. I can't find anything special about this field in the documentation. Does somebody know if this field has a special function or can I remove it from the page layout without problems?
Best Answer chosen by Ineke van den Berg
Elisa WilliamsElisa Williams
Hi Ineke, the 'active' field on campaign is used in the filter and report views.  So for example from a contact or lead record, when you go the 'campaign history' related list and select 'add to campaign', the default filter is 'my active campaigns' and this uses the 'active' field.
User-added image
I don't think you can update the criteria that is linked to 'my active campaigns' but you could use workflow to check or uncheck the active field based on your custom 'status' field if you want to be able to make use of this filter feature.
Ryan MitchellRyan Mitchell 
Hello Trailblazer Community! 
I am looking to see how I would create a formula that would show me the number of days from when a date field was populated. 
For example, we have an MQL date field, and when a value goes in that field, I would need this formula to start counting in days. I have 6 different date fields I am looking to do this with. 
As always, any help is appreciated,
Thanks!  
Best Answer chosen by Ryan Mitchell
Kundan Kumar JhaKundan Kumar Jha
Hi Ryan,

I have on custom solution in my mind, when any  value populated in that specific date field you need to store that date on  another field and create a formula using that field.

Datatype = Formula 
Result = Number 
Formula =  TODAY()  - TheDateField__c 


Thanks!
Shannon AndreasShannon Andreas 
I have 2 date fields: Date From and Date To (e.g. Date From = 04/11/2021; Date To = 06/15/2021.

I need to find the number of days in each month by month (e.g. there are 19 days in April, 31 days in May, 15 days in June).

I cannot seem to figure this out declaritivly. I bet a Flow can do this, but not sure where to start! Can someone help me please?! This is time-sensitive as well...of course :)

Thanks,

Shannon

@SteveMo ???
Best Answer chosen by Shannon Andreas
Eric PraudEric Praud
Yes, that's exactly what I'm saying, in order to be scalable, you need a custom object that will be populated with a flow.
1/ Create a custom object
2/ Create the following fields:
Master Detail to the original object
Start Date
End Date
Number of Days Formula returning a number
EndDate__c-StartDate__c
Budget formula returning Text
ParentObject__r.Budget__c
Now, when someone enters the start and end dates on the parent record, you coudl trigger a flow that woudl create one record in this new object for each month.
For example, your start date is 04/11/2021 To 06/15/2021
The flow would create one record where
Name=April - 2021
Start Date= 04/11/2021
End Date=04/30/2021

The flow would create a second record:
Name=May- 2021
Start Date= 05/01/2021
End Date=05/31/2021

The flow would create a third record:
Name=June- 2021
Start Date= 06/01/2021
End Date=06/15/2021

There are a few difficulties here.
First, you need to trigger the flow the first time the dates are entered, but also when they are changed.
If they are changed, you can either delete all the related records and create new ones, or try to find the existing ones, delete the obsolete ones, mayeb edit others (for example the start date), and maybe create new ones.

Also, you need formula variables for the name, start date and end date. Realistically, if you have a developer at hand, I'd ask them to code this
 
Best Answer chosen by Moderator (salesforce.com) 
Dan StoneDan Stone
- Use Visual Force to add a live, interactive Google Map with zoom controls and maptype select buttons to Salesforce Accounts and Leads and other detail record pages:



Go to Your Name » Setup » Develop » Pages

Copy/paste the following code into a new Page replacing what appears by default.  Notice that in this example we're using custom fields for the Account address components:

<apex:page standardController="Account">
<apex:pageBlock >
<head>
 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript"> 
 
$(document).ready(function() {
  
  var myOptions = {
    zoom: 20,
    mapTypeId: google.maps.MapTypeId.HYBRID,
    mapTypeControl: true
  }
  
  var map;
  var marker;
  
  var geocoder = new google.maps.Geocoder();
  var address = "{!Account.Project_Street_Address__c}, " + "{!Account.Project_City__c}, " + "{!Account.Project_Zipcode__c}";
  
  var infowindow = new google.maps.InfoWindow({
    content: "<b>{!Account.Name}</b>"
  });
 
  geocoder.geocode( { address: address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK && results.length) {
      if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
      
        //create map
        map = new google.maps.Map(document.getElementById("map"), myOptions);
      
        //center map
        map.setCenter(results[0].geometry.location);
        
        //create marker
        marker = new google.maps.Marker({
            position: results[0].geometry.location,
            map: map,
            title: "{!Account.Name}"
        });
        
        //add listeners
        google.maps.event.addListener(marker, 'click', function() {
          infowindow.open(map,marker);
        });
        google.maps.event.addListener(infowindow, 'closeclick', function() {
          map.setCenter(marker.getPosition()); 
        });
        
      }
      
    } else {
      $('#map').css({'height' : '15px'});
      $('#map').html("Oops! {!Account.Name}'s address could not be found, please make sure the address is correct.");
      resizeIframe();
    }
  });
  
  function resizeIframe() {
    var me = window.name;
    if (me) {
      var iframes = parent.document.getElementsByName(me);
      if (iframes && iframes.length == 1) {
        height = document.body.offsetHeight;
        iframes[0].style.height = height + "px";
      }
    }
  }
  
});
</script>
 
<style>
#map {
  font-family: Arial;
  font-size:12px;
  line-height:normal !important;
  height:500px;
  background:transparent;
}
</style>
 
</head>
 
<body>
<div id="map"></div> 
</body> 
</apex:pageBlock>
</apex:page>


Live interactive Google Map in Salesforce Account detail page

 
Kim MoutesKim Moutes 
Hello-
Can you add field dependencies to an outbound change set? In the sandbox, I added two field dependencies to the account object. When I go into my outbound change set and click on the view/add dependencies button they are not there. I also looked through the options in the Add button but didn't see an option for field dependencies there. Any guidance is much appreciated. Thank you!

Kim Moutes
Manager of CRM, Concept Services
Direct: 330-591-9519
www.conceptservicesltd.com

 
Best Answer chosen by Kim Moutes
Ankush DurejaAnkush Dureja
Yes, it will be migrated if both picklist are in same changeset. I just tested it.
Michelle ReinholdMichelle Reinhold 
Hello, 
With the new SSO rule enabled, I'm unsure as to how I can give my marketing firm access to our Pardot org but not SFDC. Can anyone guide me in what I need to do. 
Thank you, 
Michelle
Best Answer chosen by Michelle Reinhold
Michelle ReinholdMichelle Reinhold
Thank you Guy. The Pardot B2B Marketing Automation group provided me with what I needed, that does not include giving the user a license: https://www.salesforceben.com/the-drip/how-to-set-up-salesforce-identity-licenses-for-pardot-trick-to-save-admin-headaches/ SFDC gave out 100 identity licenses to orgs to use for this particular type of use case. I hope this helps you as well. Michelle Reinhold Salesforce Administrator P 717.849.1006 M 717.495.1050 businessinformationgroup.com
Sean DaltonSean Dalton 
I am getting this error when trying to convert a lead:
"The leads conversion failed because the value for the field Competitors__c is invalid. The value comes from the lead field that's mapped to the field Competitors__c. Ask your admin to check the field mappings."

The field in question is a multipicklist field. The field is on the lead and opportunities objects, and it is idententical both in name and picklist values on both objects. Also, each object has multiple record types, but I have already verified that the values are correct and matching in the proper record types. I have also verified that the conversion attempt is being made to the proper record type. 

I'm really at a loss on this one. Everything seems to check out. Can anyone tell if I have missed anything?
Best Answer chosen by Sean Dalton
Sean DaltonSean Dalton
So I figured out the issue. On the record I was having issues with, the value for Yelp was somehow appearing twice, altough I could only see this when trying to edit the field. This obviously shouldn't even be possible, as you can only select each value once since it's a multi picklist. I had to remove all the values, save the record, then add them back in and save it again, doing a kind of "reset" to the field. After that, the conversion worked. Turns out it was just some sort of glitch.