Mai 21

Salesforce bunter gestalten – Hinweise und Infos mit kleinen Icons unterstützen

Machen Sie das Thema CRM doch ein bisschen bunter. Helfen Sie Ihren Kollegen mit kleinen Hinweisen oder Info-Grafiken bei der Orientierung. Diese lassen sich super simpel per Formelfeld in die Applikation integrieren.

Das Ganze kann dann z.B. so aussehen:

lead warnung[Beispiel: Warnung auf einem Lead.]

Oder auch in einer Listenansicht:

opportunity listenansicht warnung[Beispiel: Warnung in einer Opportunity-Listenansicht]

Als Grundlage nutze ich meistens das Graphics Pack von der AppExchange. Sie können aber auch eigene Grafiken erstellen und diese im Tab „Dokumente“ abspeichern.

Wie das Ganze funktioniert, zeige ich in diesem Screencast. Film ab!

Viel Erfolg beim ausprobieren – Über Rückmeldungen freue ich mich wie immer sehr.

//Hannes

Feb 09

Aufgaben in Chatter – und wie Sie es wieder abstellen

Mit dem Salesforce Upgrade auf Spring’13 von diesem Wochenende wurden „Aufgaben für Chatter“ automatisch eingeschaltet. Dabei werden für jede neue Aufgabe Chatter-Postings erzeugt, sofern ein Feed an dem Objekt aktiviert ist.

Bevor ich das Feature mit seinen Vor-und Nachteilen im Detail durchgehe, hier die wichtige Info für alle, die überrascht wurden und sich jetzt die Frage stellen, wie man das Ganze abschaltet.

Gehen Sie im Setup zu Anpassen > Chatter > Einstellungen > Bearbeiten 
und entfernen Sie das Häkchen im Bereich „Aufgaben in Feeds“. 
Speichern Sie die Seite und der Spuk ist vorüber.

aufgaben in feeds

Das Feature

Was macht das neue Feature eigentlich? Zunächst ist die Idee genial. Aufgaben, die bisher tief unten in der Ansicht eines Datensatzes verschwunden sind, werden nun automatisch oben im Chatter Feed erwähnt. Der folgende Screenshot zeigt dies exemplarisch. Hier habe ich eine Aufgabe an einem Account angelegt. Weil für Accounts Chatter Feeds eingeschaltet sind, wurde automatisch ein Post erzeugt:

Neue Chatter Aufgabe[Zum vergrößern anklicken]

Weiterführende Informationen (auf Englisch) finden Sie natürlich auch in den Release Notes zu Spring 13 ab Seite 20.

Für und wider

Ich finde es sehr sinnvoll, Chatter als zentrales Steuerungsmedium zu nutzen. Hier kann das Verwalten von Aufgaben eine sinnvolle Ergänzung darstellen. Da es sich hier aber um eine erste Version der Funktionalität handelt, ist diese verständlicherweise noch nicht ausgereift.

Meine erste Reaktion auf die Aufgabe im Chatter war, diese dort erledigen / schließen zu wollen. Das geht aber nicht. Ich kann von hier lediglich in die Aufgabe springen und dort die gewünschte Aktion durchführen. Das bringt natürlich eine Menge unnötiger Klicks mit sich.

Wenn ich die Aufgabe lösche, verschwindet auch der Chatter-Post. Dessen muss man als Benutzer bewusst sein, denn eine etwaige Diskussion, die an der Aufgabe im Chatter geführt wurde, verschwindet auch. Zum Glück wird der Chatter-Post mit wiederhergestellt, wenn man die Aufgabe aus dem Papierkorb holt.

Weiterhin wird der Chatter-Post bei jeder Aufgabe erstellt. Dies schließt auch Aufgaben ein, die durch „E-Mail zu Salesforce“ erstellt werden. Damit also auch die Funktion „E-Mails hinzufügen“ oder „Senden und hinzufügen“ in Outlook. Hier wird für jede archivierte E-Mail also ein Chatter-Post erzeugt:

email zu salesforce

Schöner wäre es, wenn der Admin einstellen könnte für welche Aufgaben ein Chatter-Post erzeugt wird.

Fazit

Für den Moment schalte ich diese Funktionalität noch aus und empfehle eine Aktivierung gründlich zu prüfen. Wenn hier nachgearbeitet wurde und das Ganze gereift ist, wird es sicherlich einmal sehr nützlich sein. Warten wir also noch 2-3 Releases ab. Die kommen bei Salesforce ja zum Glück schnell nacheinander.

//Hannes

Jan 23

HOWTO: Kampagne in Salesforce erstellen

Das Anlegen von Kampagnen in Salesforce ist mit allerlei verteilten Einstellungen verbunden. Da viele Suchanfragen auf meinen Blog zu diesem Thema kommen, kommt an dieser Stelle eine detaillierte Anleitung dazu. Ich hoffe, ich kann damit eine Lücke in der Dokumentation schließen und einigen Leuten weiterhelfen.

Continue reading

Dez 18

Felder in Salesforce farblich kennzeichnen

 

ACHTUNG: Mit dem Summer’12 Release wird diese Funktion wahrscheinlich nicht mehr zur Verfügung stehen!

 

Bringen Sie Farbe ins Spiel und machen Sie Felder in Salesforce besser kenntlich. So helfen Sie Benutzern die wichtigen Informationen direkt zu erkennen.

 

Und im Bearbeiten-Modus:

 

Und so geht’s:

Continue reading

Apr 25

Link in Salesforce zur Suche auf XING und anderen sozialen Netzwerken

Am Lead oder Kontakt einen Link zu haben, über den Soziale Profile (XING, LinkedIN, Facebook, Twitter…) der Person gesucht werden können, erspart einige Kopiererei und Klicks. Es ist zudem die einfachste Art eine kleine Integration zu den entsprechenden Diensten anzubieten.

So sieht so ein Link am Lead aus:

Um einen entsprechenden Link anzulegen geht man wie folgt vor:

Continue reading

Nov 27

Aufrufen von APEX-Code per Button

Ich möchte hier beschreiben, wie man ganz simpel Apex-Code durch einen ‚Knopfdruck‘ ausführen kann. Mit Hilfe solcher Buttons („Benutzerdefinierte Schaltfläche“) können dem User lästige Aufgaben, die sich automatisieren lassen, abgenommen werden. Ein oft genutztes Einsatzgebiet ist das Anlegen von Datensätzen, Versenden von E-Mails oder Anstoßen eines Workflows.

Das Vorgehen als Checkliste

  • Apex-Klasse und Methode(n) schreiben
  • Button anlegen
  • Button zunächst in ein Test Page Layout aufnehmen und testen
  • Sicherheitseinstellungen des Buttons anpassen (für Profile freischalten)
  • Button in alle gewünschten Page Layouts aufnehmen

Im Detail

Der Button sollte mit den folgenden Einstellungen angelegt werden:

Mit den hier gezeigten Einstellungen kann man den Button später an der Detailansicht des Datensatzes positionieren, also z.B. neben „Bearbeiten“ und „Löschen“. Möchte man einen Button an einer Related List haben, so muss der „List Button“ („Schaltfläche für Liste“) ausgewählt werden und der Button muss bei dem entsprechenden Unterobjekt angelegt werden. Soll beispielsweise ein Button an der Related List für Aktivitäten am Account eingebunden werden, so muss der Button auch am Aktivitäten-Objekt angelegt werden;

[Zum vergrößern Bild anklicken]

Als Aufruf für den Button wird nun folgender Javascript code in das große Feld eingefügt:

{!requireScript("/soap/ajax/18.0/connection.js")}
{!requireScript("/soap/ajax/18.0/apex.js")}

if(confirm('Dies ist eine beliebige Sicherheitsabfrage.'))
sforce.apex.execute(
	'KlassenName',
	'MethodenName',
	{Id:'{!Account.Id}', ParameterZwei:'bla'});

Der Code Zeile für Zeile erklärt:

Die ersten beiden Zeilen stellen sicher, dass die benötigten Javascript-Bibliotheken geladen sind.

Anschließend wird eine einfache Sicherheitsabfrage mittels „Ok / Abbrechen“ Dialog durchgeführt. Diese ist natürlich optional und kann auch weggelassen werden. Ich benutze sie gerne, um ein versehentliches Auslösen der Aktion zu unterbinden.

Nun wird die eigentliche APEX Klasse aufgerufen. KlassenName und MethodenName sind dabei natürlich entsprechend dem eigenen Code anzupassen. Die zu übergebenen Parameter richten sich auch nach der aufgerufenen Methode.

Die APEX Klasse dazu sieht wie folgt aus:

global class KlassenName{
  Webservice static void MethodenName(String Id, String ParameterZwei) {
   //Programm-Logik....
  }
}

Wichtig ist, die Klasse als global und die Methode als Webservice zu deklarieren.

Bezieht sich die Programm-Logik auf ein konkretes sObject, so muss dieses ggf. erst per SOQL bereit gestellt werden.

Bevor nun der Button in das Page-Layout aufgenommen wird, ganz wichtig, nicht vergessen: Die Security-Einstellungen für die Klasse anpassen. D.h. alle User, die den Button benutzen möchten, müssen dafür freigeschaltet werden. Hierzu navigiert man im Setup zu „Develop“ -> „Apex Classes“ -> „Security“ und schiebt alle gewünschten Profile von links nach rechts;

Ein Anwendungsfall

Was z.B. mit einem solchen Button möglich ist: Eine Task mit vordefiniertem Inhalt anlegen. Hier genutzt um Anrufe zu protokollieren, bei denen der Agent auf der Mailbox gelandet ist. Der Button kann sowohl an einem Lead, Kontakt als auch Account angelegt werden. Es muss entsprechend mindestens eine whoID oder whatID oder auch beides übergeben werden.

Button Beispiel an einem Lead:

{!REQUIRESCRIPT("/soap/ajax/18.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/18.0/apex.js")} 

if(confirm('Called and left VM?')){ 

sforce.apex.execute(
'TaskHandling',
'addTask',
{Status:'Completed',whoId:'{!Lead.Id}', Subject:'Called, left VM', Type:'Call'});

location.reload();}

Und die dazugehörige Apex-Klasse:

global class TaskHandling {

    Webservice static void addTask(String status, String whoId, String subject, String tipe, String whatId) {
        /*
        Creates a task for given lead or contact
        */

        // Build a new Task and insert it
        Task task = new Task(
            Status = status,
            Subject = subject,
            Type = tipe,
            ActivityDate = System.today()

        );
        if (whatId != '' && whatId != null) {
          task.WhatId = whatId;
        }
        if (whoId != '' && whoId != null) {
          task.WhoId = whoId;
        }
        insert task;

    }

}

Abschluss

Viel Spaß beim Ausprobieren! Ich freue mich über Erfahrungsberichte und Beispiele für weitere Anwendungsfälle

//Hannes

Sep 14

Der „Konvertiere zu Kontakt“ Button

In einer idealen Welt wird jeder Lead zu einer Opportunity – im tatsächlichen Geschäft fällt das Verhältnis bei der Konvertierung allerdings deutlich schlechter aus 😉 So muss bei einem Großteil der Konvertierungen, die ein User vornimmt, der Haken „Keine Opportunity erstellen“ gesetzt werden.

Da die Konvertieren-Seite nicht modifiziert werden kann, scheint es auf den ersten Blick keine Abhilfe für dieses Problem zu geben. Mittels URL-Parametern und eines selbst angelegten Buttons können aber zumindest die Formular-Werte auf der Konvertieren-Seite voreingestellt werden.

Frei nach dem Motto „Show, don’t tell“, alle Details in folgendem Video. Am besten sobald das Video läuft auf 720p Qualität umschalten.

Und nochmal zum Mitschreiben:

Um vom Lead auf die Konvertieren-Seite zu gelangen und den „Keine Opportunity“ Haken zu setzen, baut man zunächst einen Link mit der folgenden URL:

/lead/leadconvert.jsp?retURL={!Lead.Id}&id={!Lead.Id}&nooppti=1

Um zusätzlich noch den „Konvertiert Status“ zu setzen, kann die URL um den Parameter ‚cstatus‘ erweitert werden. Der passende Wert für ‚cstatus‘ kann mittels Sicht in den Quellcode oder einem Tool wie Firebug ermittelt werden;

/lead/leadconvert.jsp?retURL={!Lead.Id}&id={!Lead.Id}&nooppti=1&cstatus=10

Diese URL kann nur einfach in einen Benutzerdefinierten Button einfließen.

Achtung: Dieses URL-Hacking ist nicht offiziell supported. Das heißt, es gibt auch keinen Anspruch darauf, dass solche Anpassungen immer funktionieren. Ich habe aber bisher noch nie Probleme damit gehabt. Da dieser Button auch sehr stark frequentiert ist, wird sich sicher schnell jemand melden, sollte er nicht mehr funktionieren 😉

Demnächst stelle ich noch weitere kleine Helfer-Buttons vor. Bis dahin viel Spaß beim Herumexperimentieren mit URL-Parametern.

//Hannes

Mrz 20

Validierung einer Bedingung: Formel vs. Query

Immer wieder stößt man in der Programmierung auf Bedingungen. Nur wenn diese Bedingungen zutreffen, findet eine bestimmte Verarbeitung statt. Ich möchte in diesem Artikel vorstellen, auf welche Arten Ausführungen in Salesforce an Bedingungen geknüpft werden können und anschließend untersuchen welche Methoden dabei am effektivsten sind. Im Besonderen gehe ich dabei auf die Benutzung von Formeln ein. Continue reading

Mrz 07

5 Tipps für Salesforce Poweruser

1. Stellen Sie die Sprache des Systems auf Englisch. Viele Bezeichnungen erschließen sich so viel schneller. Außerdem wird es Sie weniger verwirren, wenn ich mit englischen Begriffen um mich schmeiße.

2. Überall, wo sogenannte Nachschlage-Felder (Lookups), also Eingabefelder mit einer Lupe daneben, verwendet werden, reicht es meist aus einen Teil des Suchbegriffes einzugeben und zu speichern. Den Umweg über die Lupe kann man sich so sparen. Angenommen, ein Account soll an mich, also „Hannes Ellerbrock“ übertragen werden. So reicht es schon aus nur „hannes“ einzutragen und zu speichern. Sollte ein weiterer Benutzer mit dem Vornamen Hannes in der Organisation sein, so fragt Salesforce noch nach welcher Benutzer denn nun gemeint ist.

[Klick für Vollbild]

3. Im Setup verstecken sich fast alle wichtigen Menüpunkte in Untermenüs- Ist ja auch nachvollziehbar bei der Fülle an Einstellmöglichkeiten, die einem zur Verfügung stehen. Wenn man lange Ladezeiten verhindern möchte empfiehlt sich ein Klick auf das „+“-Zeichen. So öffnen sich die Menüs ohne ein Nachladen der Seite.

[Klick für Vollbild]

4. Arbeiten Sie mit Objekten, bei denen Sie nach einem Datensatztyp (Record Type) gefragt werden? Das würde zum Beispiel so aussehen:

[Klick für Vollbild]

Wenn Sie an solch einer Stelle immer nur „Weiter“ klicken und nie einen anderen Datensatztyp auswählen, dann können Sie diese Nachfrage abschalten. Gehen Sie in den Setup, klicken dann auf „+“ vor Persönliche Daten und weiter auf „Datensatztypauswahl“. Hier können Sie nun auswählen, bei welchen Objekten nachgefragt werden soll und bei welchen nicht.

5. Klicken Sie auf irgendeinen Reiter (Tab) und scrollen Sie ganz nach unten. Hier finden sich immer jede Menge nützliche Dinge. Probieren Sie Accounts, Kontakte, Opportunities, Leads und so weiter. Der Screenshot zeigt das Ganze Beispielhaft für „Leads“.

[Klick für Vollbild]