I have recently been piloting Salesforce Communities to understand the impact on our Portals, and also (as an ISV) on our products.
Functionally, we can think of Salesforce Communities as an upgrade to Customer Portal / Partner Portal. However, Salesforce Communities represents a change in the positioning of "portal" functionality. There's a considerable gulf in user experience (look, feel and functionality) between internal org users and portal users. With Communities Salesforce is closing this gulf, making the experience across internal and external users seamless. We're familiar with the "App" selection menu which in a sense provides different perspectives within an org. Communities uses similar thinking - internal users will be able to switch their org perspective from "internal community" to "partner community" or to "customer community" or indeed any other Community they may have, from a Communities drop-down menu which is ever present at the top of the page. Within each community / perspective the experience will be very similar, and significantly this includes Chatter functionality.
Themes / Branding
Default styling is far prettier than default portal. There are some coarse customisation options: several colour schemes, override of 5 key colours, header (JPG, GIF, PNG or HTML) and footer (HTML) docs.
If you want to use an icon for a community theme:
- an image has to be loaded as a document
- the document has to be set as an "Externally Available Image"
Identification and Authentication
Authentication options for external users: Username/Password & SAML. When GA it should also support Auth Providers.
You can have pages that are accessible without requiring login.
Customer Chatter Groups
There is no connection / commonality between Customer Chatter Groups and Salesforce (Chatter) Communities. Chatter customers from private groups with customers can’t be added to communities.
Salesforce Communities and Chatter Customer Groups are complementary.
Chatter Customer Groups is designed for ad hoc collaboration with
external users on files and projects on a small scale. Salesforce
Chatter Communities is designed to create a highly engaging and
customized experience for anywhere from just a few hundred members to
millions of members.
Ideas
Ideas with Communities are not supported in the pilot, but should available in the Summer 13 release.
Chatter Groups
Posts to Chatter Groups are accessible only within the Community in which the Group was created. This principle includes the "Internal Community".
Once Communities are enabled, an Internal Community is established which contains all the org’s existing groups.
It is not possible to create a Chatter Group which is accessible from multiple communities - e.g. by the internal community and the customer community.
The only way to post to a Chatter Group is to first switch into that community.
Customers can create their own Chatter Groups within their community.
Chatter On Records
It is possible to Chatter on records in Communities. You can configure which objects are accessible to which communities, and in addition you can employ sharing techniques for controlling access to specific records for an object.
However, it is important to note that if a user has access to a record, and Chatter is enabled for the object type, then that user also has access to the chatter feed for that record. Records and accompanying Chatter posts span communities.
Visualforce, HTML an CSS
I have seen no problems so far with Visualforce transitioned from Portal to Communities, though there appear to be some issues with custom HTML/CSS which will need to be investigated further.
Documentation
I suggest code like that below, where once the password verified login has succeeded you go on to check further factors (that you have added as fields to your login page):
global with sharing class CustomLoginController {
global String username{get;set;}
global String password{get;set;}
global String other1{get;set;}
global String other2{get;set;}
global PageReference login() {
PageReference pr = Site.login(username, password, '/FirstPageAfterLogin');
if (pr != null && pr.getUrl() == '/FirstPageAfterLogin') {
// Add custom fields to User for other factors or query further to get them
User u = [select Other1__c, Other2__c from User where UserName = :username];
if (u.Other1__c != other1) {
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, ‘Other 1 mismatch’));
}
if (u.Other2__c != other2) {
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, ‘Other 2 mismatch’));
}
if (ApexPages.hasMessages()) {
// Redisplay login page with errors
return null;
}
}
return pr;
}
}
Best Answer
Are you using the Napili Template ? I'll try my best to give you some elements as I faced similar questions for 13 brands, meaning 13 different logos.
The look of the site / colours / images -->
The look any notification emails (new user / chatter notifications / etc). The URL to be different for each brand. --> it is more complicated. What represent the brands ? Each brand = 1 language ?
We operate in multiple languages, and so would like content to be language specific: The content of the site, labels, drop-downs, etc. -->
The content of any notification emails --> no xp on it but are we speaking of the welcome email notif of others ? is it private community?